o
    DXîhèB  ã                	   @   sþ  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d8d9„Zd:d;„ Zd<d=„ Zd>d?„ ZG d@dA„ dAƒZdS )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-1252Zviscii)NNNÚbig5Úgb2312zeuc-jpúiso-2022-jpÚ	shift_jisúutf-8)r   zkoi8-rr   Úlatin_1zlatin-1Zlatin_2zlatin-2Zlatin_3zlatin-3Zlatin_4zlatin-4Zlatin_5zlatin-5Zlatin_6zlatin-6Zlatin_7zlatin-7Zlatin_8zlatin-8Zlatin_9zks_c_5601-1987zeuc-kr)zlatin-9Zlatin_10zlatin-10Úcp949Úeuc_jpÚeuc_krÚasciiÚeucgb2312_cnÚbig5_tw)r   r   r   c                 C   s$   	 |t kr	tdƒ‚|||ft| < d S )Nz!SHORTEST not allowed for body_enc)ÚSHORTESTÚ
ValueErrorÚCHARSETS)ÚcharsetZ
header_encZbody_encÚoutput_charset© r    ú7/opt/python-3.10.19/usr/lib/python3.10/email/charset.pyr   m   s   r   c                 C   ó   	 |t | < d S ©N)ÚALIASES)ÚaliasZ	canonicalr    r    r!   r   ‰   ó   r   c                 C   r"   r#   )Ú	CODEC_MAP)r   Z	codecnamer    r    r!   r   ’   s   r   c                 C   s   |t kr
|  dd¡S |  |¡S )Nr   Úsurrogateescape)ÚUNKNOWN8BITÚencode)ÚstringÚcodecr    r    r!   Ú_encodeŸ   s   
r-   c                   @   sZ   e Zd Z	 efdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )r   c                 C   sº   zt |tƒr| d¡ nt|dƒ}W n ty   t |¡‚w | ¡ }t ||¡| _	t
 | j	ttd f¡\}}}|s<| j	}|| _|| _t ||¡| _t | j	| j	¡| _t | j| j¡| _d S )Nr   )Ú
isinstanceÚstrr*   ÚUnicodeErrorr   ZCharsetErrorÚlowerr$   ÚgetÚinput_charsetr   r   ÚBASE64Úheader_encodingÚbody_encodingr   r'   Zinput_codecÚoutput_codec)Úselfr3   ZhencZbencÚconvr    r    r!   Ú__init__Ó   s0   

€
ÿ
ÿÿ
ÿzCharset.__init__c                 C   s
   | j  ¡ S r#   )r3   r1   ©r8   r    r    r!   Ú__repr__ô   s   
zCharset.__repr__c                 C   s   t | ƒt |ƒ ¡ kS r#   )r/   r1   )r8   Úotherr    r    r!   Ú__eq__÷   s   zCharset.__eq__c                 C   s"   	 | j tkrdS | j tkrdS tS )Nzquoted-printableÚbase64)r6   ÚQPr4   r   r;   r    r    r!   Úget_body_encodingú   s   

zCharset.get_body_encodingc                 C   s   	 | j p| jS r#   )r   r3   r;   r    r    r!   Úget_output_charset  r&   zCharset.get_output_charsetc                 C   s8   	 | j pd}t||ƒ}|  |¡}|d u r|S | ||¡S )Nr   )r7   r-   Ú_get_encoderÚheader_encode)r8   r+   r,   Úheader_bytesÚencoder_moduler    r    r!   rD     s   



zCharset.header_encodec                 C   s  	 | j pd}t||ƒ}|  |¡}t|j|d}|  ¡ }t|ƒt }g }	g }
t|ƒ| }|D ]F}|
 	|¡ t
 |
¡}| t||ƒ¡}||krs|
 ¡  |	sS|
sS|	 	d ¡ n|	rWdnd}t
 |
¡}t||ƒ}|	 	||ƒ¡ |g}
t|ƒ| }q-t
 |
¡}t||ƒ}|	 	||ƒ¡ |	S )Nr   )r   ú r   )r7   r-   rC   r   rD   rB   ÚlenÚRFC2047_CHROME_LENÚnextÚappendÚEMPTYSTRINGÚjoinÚheader_lengthÚpop)r8   r+   Z
maxlengthsr,   rE   rF   Úencoderr   ÚextraÚlinesZcurrent_lineÚmaxlenÚ	characterZ	this_lineÚlengthÚ	separatorZjoined_liner    r    r!   Úheader_encode_lines*  s:   






€

zCharset.header_encode_linesc                 C   sZ   | j tkrtjS | j tkrtjS | j tkr+tj |¡}tj |¡}||k r(tjS tjS d S r#   )r5   r4   ÚemailÚ
base64mimer@   Ú
quoprimimer   rN   )r8   rE   Zlen64Zlenqpr    r    r!   rC   h  s   


zCharset._get_encoderc                 C   sŒ   	 |s|S | j tu rt|tƒr| | j¡}tj |¡S | j t	u r6t|tƒr+| | j¡}| 
d¡}tj |¡S t|tƒrD| | j¡ 
d¡}|S )NÚlatin1r   )r6   r4   r.   r/   r*   r   rX   rY   Úbody_encoder@   ÚdecoderZ   )r8   r+   r    r    r!   r\   w  s   





zCharset.body_encodeN)Ú__name__Ú
__module__Ú__qualname__ÚDEFAULT_CHARSETr:   r<   r>   rA   rB   rD   rW   rC   r\   r    r    r    r!   r   §   s    +!>r   )Ú__all__Ú	functoolsr   Zemail.base64mimerX   Zemail.quoprimimer   Zemail.encodersr   r@   r4   r   rI   ra   r)   rL   r   r$   r'   r   r   r   r-   r   r    r    r    r!   Ú<module>   sÐ   
þ
ý
ü
û

ö
õ
ó
ò
ñ
ð
ï
îí
ì
ë
ê
éæÿþýüûúùø	÷
öõôóòñðïèú
	