o !QçdèBã @sþgd¢ZddlmZddlZddlZddlmZddlmZdZ dZ dZ d Z d Z d Zd Zid e e df“de e df“de e df“de e df“de e df“de e df“de e df“de e df“de e df“de e df“de e df“de e df“d d“de e df“de e df“de ddf“de ddf“e ddfe e dfe e dfd œ¥Zid!d “d"d “d#d“d$d“d%d“d&d“d'd“d(d“d)d“d*d“d+d“d,d“d-d“d.d“d/d“d0d“d1d“dddd2dd3d d4œ¥Zd5d6dd7œZdd8d9„Zd:d;„Zdd?„ZGd@dA„dAƒZdS)B)ÚCharsetÚ add_aliasÚ add_charsetÚ add_codecé)ÚpartialN)Úerrors)Úencode_7or8bitééééúus-asciiz unknown-8bitÚz 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)NNNÚbig5Úgb2312zeuc-jpú iso-2022-jpÚ shift_jisúutf-8)rzkoi8-rrÚlatin_1zlatin-1Zlatin_2zlatin-2Zlatin_3zlatin-3Zlatin_4zlatin-4Zlatin_5zlatin-5Zlatin_6zlatin-6Zlatin_7zlatin-7Zlatin_8zlatin-8Zlatin_9zks_c_5601-1987zeuc-kr)zlatin-9Zlatin_10zlatin-10Úcp949Úeuc_jpÚeuc_krÚasciiÚ eucgb2312_cnÚbig5_tw)rrr cCs$ |tkr tdƒ‚|||ft|<dS)Nz!SHORTEST not allowed for body_enc)ÚSHORTESTÚ ValueErrorÚCHARSETS)ÚcharsetZ header_encZbody_encÚoutput_charset©r ú4/opt/alt/python310/lib64/python3.10/email/charset.pyrmsrcCó |t|<dS©N)ÚALIASES)ÚaliasZ canonicalr r r!r‰ó rcCr"r#)Ú CODEC_MAP)rZ codecnamer r r!r’s rcCs|tkr | dd¡S| |¡S)NrÚsurrogateescape)Ú UNKNOWN8BITÚencode)ÚstringÚcodecr r r!Ú_encodeŸs  r-c@sZeZdZ efdd„Zdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dS)rcCsºzt|tƒr | d¡nt|dƒ}Wn tyt |¡‚w| ¡}t ||¡|_ t  |j t t df¡\}}}|s<|j }||_ ||_t ||¡|_t |j |j ¡|_t |j|j¡|_dS)Nr)Ú isinstanceÚstrr*Ú UnicodeErrorrZ CharsetErrorÚlowerr$ÚgetÚ input_charsetrrÚBASE64Úheader_encodingÚ body_encodingrr'Z input_codecÚ output_codec)Úselfr3ZhencZbencZconvr r r!Ú__init__Ós0   €  ÿ ÿÿ ÿzCharset.__init__cCs |j ¡Sr#)r3r1©r8r r r!Ú__repr__ôs zCharset.__repr__cCst|ƒt|ƒ ¡kSr#)r/r1)r8Úotherr r r!Ú__eq__÷szCharset.__eq__cCs" |jtkrdS|jtkrdStS)Nzquoted-printableÚbase64)r6ÚQPr4rr:r r r!Úget_body_encodingús   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_bytesÚencoder_moduler r r!rCs   zCharset.header_encodecCs |jpd}t||ƒ}| |¡}t|j|d}| ¡}t|ƒt}g} g} t|ƒ|} |D]F} |   | ¡t   | ¡} |  t| |ƒ¡}|| krs|   ¡| sS| sS|   d¡n| rWdnd}t   | ¡}t||ƒ}|   ||ƒ¡| g} t|ƒ|} q-t   | ¡}t||ƒ}|   ||ƒ¡| S)Nr )rú r)r7r-rBrrCrAÚlenÚRFC2047_CHROME_LENÚnextÚappendÚ EMPTYSTRINGÚjoinÚ header_lengthÚpop)r8r+Z maxlengthsr,rDrEÚencoderrZextraÚlinesZ current_lineÚmaxlenÚ characterZ this_lineZlengthZ separatorZ joined_liner r r!Úheader_encode_lines*s:             €  zCharset.header_encode_linescCsZ|jtkrtjS|jtkrtjS|jtkr+tj |¡}tj |¡}||kr(tjStjSdSr#)r5r4ÚemailÚ base64mimer?Ú quoprimimerrM)r8rDZlen64Zlenqpr r r!rBhs     zCharset._get_encodercCsŒ |s|S|jturt|tƒr| |j¡}tj |¡S|jt ur6t|tƒr+| |j¡}|  d¡}tj  |¡St|tƒrD| |j¡  d¡}|S)NÚlatin1r) 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!r§s +!> r)Ú__all__Ú functoolsrZemail.base64mimerTZemail.quoprimimerZemail.encodersrr?r4rrHr]r)rKrr$r'rrrr-rr r r r!ÚsÐ    þ ý ü û ö õ ó ò ñ ð ï îí ì ë ê éæÿþýüûúùø ÷ ö õ ô óòñðïèú