o ?OgB @sgdZddlmZddlZddlZddlmZddlmZdZ dZ dZ d Z d Z d Zd Zid e e dfde e dfde e dfde e dfde e dfde e dfde e dfde e dfde e dfde e dfde e dfde e dfd dde e dfde e dfde ddfde ddfe ddfe e dfe e dfd Zid!d d"d d#dd$dd%dd&dd'dd(dd)dd*dd+dd,dd-dd.dd/dd0dd1ddddd2dd3d d4Zd5d6dd7Zdd8d9Zd:d;Zdd?ZGd@dAdAZdS)B)Charset add_alias add_charset add_codec)partialN)errors)encode_7or8bitus-asciiz unknown-8bitz iso-8859-1z iso-8859-2z iso-8859-3z iso-8859-4z iso-8859-9z iso-8859-10z iso-8859-13z iso-8859-14z iso-8859-15z iso-8859-16z windows-1252Zviscii)NNNbig5gb2312zeuc-jp iso-2022-jp shift_jisutf-8)rzkoi8-rrlatin_1zlatin-1Zlatin_2zlatin-2Zlatin_3zlatin-3Zlatin_4zlatin-4Zlatin_5zlatin-5Zlatin_6zlatin-6Zlatin_7zlatin-7Zlatin_8zlatin-8Zlatin_9zks_c_5601-1987zeuc-kr)zlatin-9Zlatin_10zlatin-10cp949euc_jpeuc_krascii eucgb2312_cnbig5_tw)rrr cCs$ |tkr td|||ft|<dS)Nz!SHORTEST not allowed for body_enc)SHORTEST ValueErrorCHARSETS)charsetZ header_encZbody_encoutput_charsetr 4/opt/alt/python310/lib64/python3.10/email/charset.pyrmsrcC |t|<dSN)ALIASES)aliasZ canonicalr r r!r rcCr"r#) CODEC_MAP)rZ codecnamer r r!rs rcCs|tkr |ddS||S)Nrsurrogateescape) UNKNOWN8BITencode)stringcodecr r r!_encodes  r-c@sZeZdZ efddZddZddZddZd d Zd d Z d dZ ddZ ddZ dS)rcCszt|tr |dnt|d}Wn tyt|w|}t|||_ t |j t t df\}}}|s<|j }||_ ||_t|||_t|j |j |_t|j|j|_dS)Nr) isinstancestrr* UnicodeErrorrZ CharsetErrorlowerr$get input_charsetrrBASE64header_encoding body_encodingrr'Z input_codec output_codec)selfr3ZhencZbencZconvr r r!__init__s0       zCharset.__init__cCs |jSr#)r3r1r8r r r!__repr__s zCharset.__repr__cCst|t|kSr#)r/r1)r8otherr r r!__eq__szCharset.__eq__cCs" |jtkrdS|jtkrdStS)Nzquoted-printablebase64)r6QPr4rr:r r r!get_body_encodings   zCharset.get_body_encodingcCs |jp|jSr#)rr3r:r r r!get_output_charsetr&zCharset.get_output_charsetcCs8 |jpd}t||}||}|dur|S|||S)Nr )r7r- _get_encoder header_encode)r8r+r, header_bytesencoder_moduler r r!rCs   zCharset.header_encodecCs |jpd}t||}||}t|j|d}|}t|t}g} g} t||} |D]F} | | t | } | t| |}|| krs| | sS| sS| dn| rWdnd}t | }t||}| ||| g} t||} q-t | }t||}| ||| S)Nr )r r)r7r-rBrrCrAlenRFC2047_CHROME_LENnextappend EMPTYSTRINGjoin header_lengthpop)r8r+Z maxlengthsr,rDrEencoderrZextralinesZ current_linemaxlen characterZ this_lineZlengthZ separatorZ joined_liner r r!header_encode_lines*s:               zCharset.header_encode_linescCsZ|jtkrtjS|jtkrtjS|jtkr+tj|}tj|}||kr(tjStjSdSr#)r5r4email base64mimer? quoprimimerrM)r8rDZlen64Zlenqpr r r!rBhs     zCharset._get_encodercCs |s|S|jturt|tr||j}tj|S|jt ur6t|tr+||j}| d}tj |St|trD||j d}|S)Nlatin1r) r6r4r.r/r*rrTrU body_encoder?decoderV)r8r+r r r!rXws          zCharset.body_encodeN) __name__ __module__ __qualname__DEFAULT_CHARSETr9r;r=r@rArCrSrBrXr r r r!rs +!> r)__all__ functoolsrZemail.base64mimerTZemail.quoprimimerZemail.encodersrr?r4rrHr]r)rKrr$r'rrrr-rr r r r!s