
    z%iB              	          g d Z ddlmZ ddlZddlZddlmZ ddlmZ dZ	dZ
dZd	Zd
ZdZdZi de	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfde	e	dfd
dde
e
dfde
e
dfde
ddfde
ddfe
ddfe
e
dfee
dfd Zi 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/dd0dd1ddddd2dd3d
d4Zd5d6dd7Zdd8Zd9 Zd: Zd; Z G d< d=      Zy)>)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-1252viscii)NNNbig5gb2312zeuc-jpiso-2022-jp	shift_jisutf-8)r   zkoi8-rr   latin_1zlatin-1latin_2zlatin-2latin_3zlatin-3latin_4zlatin-4latin_5zlatin-5latin_6zlatin-6latin_7zlatin-7latin_8zlatin-8latin_9zks_c_5601-1987zeuc-kr)zlatin-9latin_10zlatin-10cp949euc_jpeuc_krasciieucgb2312_cnbig5_tw)r   r   r   c                 F    	 |t         k(  rt        d      |||ft        | <   y )Nz!SHORTEST not allowed for body_enc)SHORTEST
ValueErrorCHARSETS)charset
header_encbody_encoutput_charsets       A/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/email/charset.pyr   r   j   s.    , 8<==#X~>HW    c                     	 |t         | <   y N)ALIASES)alias	canonicals     r.   r   r      s    
 GENr/   c                     	 |t         | <   y r1   )	CODEC_MAP)r*   	codecnames     r.   r   r      s     #Igr/   c                 Z    |t         k(  r| j                  dd      S | j                  |      S )Nr#   surrogateescape)UNKNOWN8BITencode)stringcodecs     r.   _encoder>      s+    }}W&788}}U##r/   c                   H    e Zd Z	 efdZd Zd Zd Zd Zd Z	d Z
d Zd	 Zy
)r   c                    	 t        |t              r|j                  d       nt        |d      }|j                         }t        j                  ||      | _	        t        j                  | j                  t        t        d f      \  }}}|s| j                  }|| _        || _        t        j                  ||      | _        t         j                  | j                  | j                        | _        t         j                  | j                  | j                        | _        y # t        $ r t	        j
                  |      w xY w)Nr#   )
isinstancestrr;   UnicodeErrorr   CharsetErrorlowerr2   getinput_charsetr)   r'   BASE64header_encodingbody_encodingr-   r6   input_codecoutput_codec)selfrG   hencbencconvs        r.   __init__zCharset.__init__   s   
	5--$$W- #M7 ; &++-$[[F $<<(:(:)164(@BdD%%D#!%kk$5 %==););)-););=%MM$*=*=*.*=*=?)  	5%%m44	5s   .D   D?c                 6    | j                   j                         S r1   )rG   rE   rM   s    r.   __repr__zCharset.__repr__   s    !!''))r/   c                 L    t        |       t        |      j                         k(  S r1   )rB   rE   )rM   others     r.   __eq__zCharset.__eq__   s    4yCJ,,...r/   c                 `    	 | j                   t        k(  ry| j                   t        k(  ryt        S )Nzquoted-printablebase64)rJ   QPrH   r	   rS   s    r.   get_body_encodingzCharset.get_body_encoding   s1    	 #%6)!!r/   c                 8    	 | j                   xs | j                  S r1   )r-   rG   rS   s    r.   get_output_charsetzCharset.get_output_charset
  s     	
 ""8d&8&88r/   c                     	 | j                   xs d}t        ||      }| j                  |      }||S |j                  ||      S )Nr   )rL   r>   _get_encoderheader_encode)rM   r<   r=   header_bytesencoder_modules        r.   r`   zCharset.header_encode  sS    		 !!/Zvu-**<8!M++L%@@r/   c                    	 | j                   xs d}t        ||      }| j                  |      }t        |j                  |      }| j                         }t        |      t        z   }g }	g }
t        |      |z
  }|D ]  }|
j                  |       t        j                  |
      }|j                  t        ||            }||kD  sJ|
j                          |	s|
s|	j                  d        n8t        j                  |
      }t        ||      }|	j                   ||             |g}
t        |      |z
  } t        j                  |
      }t        ||      }|	j                   ||             |	S )Nr   )r*   )rL   r>   r_   r   r`   r]   lenRFC2047_CHROME_LENnextappendEMPTYSTRINGjoinheader_lengthpop)rM   r<   
maxlengthsr=   ra   rb   encoderr*   extralinescurrent_linemaxlen	character	this_linelengthjoined_lines                   r.   header_encode_lineszCharset.header_encode_lines%  s`   	" !!/Zvu-**<8.66F ))+G11 j!E) 	2I	*#((6I#11')W2MNF  "\LL&"-"2"2<"@K#*;#>LLL!67 ){j)E1	2  "&&|4{E2W\*+r/   c                 |   | j                   t        k(  rt        j                  S | j                   t        k(  rt        j
                  S | j                   t        k(  rct        j                  j                  |      }t        j
                  j                  |      }||k  rt        j                  S t        j
                  S y r1   )rI   rH   email
base64mimerZ   
quoprimimer'   rj   )rM   ra   len64lenqps       r.   r_   zCharset._get_encoderb  s    6)###!!R'###!!X-$$22<@E$$22<@Eu}''''''r/   c                    	 |s|S | j                   t        u rJt        |t              r|j	                  | j
                        }t        j                  j                  |      S | j                   t        u r[t        |t              r|j	                  | j
                        }|j                  d      }t        j                  j                  |      S t        |t              r*|j	                  | j
                        j                  d      }|S )Nlatin1r#   )rJ   rH   rA   rB   r;   r-   rx   ry   body_encoderZ   decoderz   )rM   r<   s     r.   r   zCharset.body_encodeq  s    	 M'&#&t':':;##//772% &#&t':':;]]8,F##//77&#&t':':;BB7KMr/   N)__name__
__module____qualname__DEFAULT_CHARSETrQ   rT   rW   r[   r]   r`   rv   r_   r    r/   r.   r   r      s=    *V &5 ?B*/"*9A&;zr/   r   )__all__	functoolsr   email.base64mimerx   email.quoprimimer   email.encodersr	   rZ   rH   r'   re   r   r:   rh   r)   r2   r6   r   r   r   r>   r   r   r/   r.   <module>r      s  
     )   Br- Br- Br-	
 Br- Br- Br- Br- Br- Br-  Br-!" Br-#$ Br-%& -'( Fv-)* Fv-+, Ft6-. Ft6/0 t-v-vw/5>|| | |	
 | | | | | | } } } } }  }!" }#$ 1< " 	?8#$l lr/   