o
    éT•jŠ#  ã                   @   s¸   d dl Z d dlZd dlZd dlmZ e d¡ZdZdZdd„ Z	dd	„ Z
d
d„ ZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ deejƒZG dd„ deejƒZdd„ ZdS )é    N)Ú	ucd_3_2_0u   [.ã€‚ï¼Žï½¡]s   xn--zxn--c                 C   sü   g }| D ]}t  |¡rq| t  |¡¡ qd |¡} t d| ¡} | D ]5}t  |¡sQt  |¡sQt  	|¡sQt  
|¡sQt  |¡sQt  |¡sQt  |¡sQt  |¡sQt  |¡rWtd| ƒ‚q"dd„ | D ƒ}t|ƒr|tdd„ | D ƒƒrptdƒ‚|d	 rx|d
 s|tdƒ‚| S )NÚ ÚNFKCzInvalid character %rc                 S   s   g | ]}t  |¡‘qS © )Ú
stringprepÚin_table_d1©Ú.0Úxr   r   ú%/usr/lib/python3.10/encodings/idna.pyÚ
<listcomp>)   s    znameprep.<locals>.<listcomp>c                 s   s   � | ]}t  |¡V  qd S )N)r   Úin_table_d2r   r   r   r   Ú	<genexpr>1   s   € znameprep.<locals>.<genexpr>zViolation of BIDI requirement 2r   éÿÿÿÿzViolation of BIDI requirement 3)r   Úin_table_b1ÚappendÚmap_table_b2ÚjoinÚunicodedataÚ	normalizeÚin_table_c12Úin_table_c22Úin_table_c3Úin_table_c4Úin_table_c5Úin_table_c6Úin_table_c7Úin_table_c8Úin_table_c9ÚUnicodeErrorÚany)ÚlabelÚnewlabelÚcÚRandALr   r   r   Únameprep   sD   


ÿþýüûúùø	÷r%   c                 C   sô   z|   d¡} W n	 ty   Y nw dt| ƒ  k rdk r#| S  tdƒ‚tdƒ‚t| ƒ} z|   d¡} W n	 ty;   Y nw dt| ƒ  k rIdk rN| S  tdƒ‚tdƒ‚|  t¡r[tdƒ‚|   d¡} t|  } dt| ƒ  k rqdk rv| S  tdƒ‚tdƒ‚)NÚasciir   é@   úlabel empty or too longzLabel starts with ACE prefixÚpunycode)Úencoder   Úlenr%   Ú
startswithÚsace_prefixÚ
ace_prefix)r!   r   r   r   ÚToASCII<   s6   ÿÿÿÿ

ÿr/   c                 C   sÊ   t | tƒrd}nz	|  d¡} d}W n ty   d}Y nw |s6t| ƒ} z|  d¡} W n ty5   tdƒ‚w |  t¡s@t| dƒS | ttƒd … }| 	d¡}t
|ƒ}t| dƒ ¡ t|dƒkrctd| |ƒ‚|S )NTr&   FzInvalid character in IDN labelr)   zIDNA does not round-trip)Ú
isinstanceÚbytesr*   r   r%   r,   r.   Ústrr+   Údecoder/   Úlower)r!   Ú
pure_asciiÚlabel1ÚresultÚlabel2r   r   r   Ú	ToUnicodeg   s.   

ÿÿ


r9   c                   @   s    e Zd Zddd„Zddd„ZdS )ÚCodecÚstrictc                 C   s  |dkr
t d| ƒ‚|sdS z| d¡}W n	 ty   Y n5w | d¡}|d d… D ]}dt|ƒ  k r;dk s@t d	ƒ‚ t d	ƒ‚q*t|d ƒdkrMt d
ƒ‚|t|ƒfS tƒ }t |¡}|rg|d sgd}|d= nd}|D ]}|rt| d¡ | t|ƒ¡ qkt	|| ƒt|ƒfS )Nr;   úunsupported error handling ©ó    r   r&   ó   .r   r   r'   r(   zlabel too longr>   )
r   r*   ÚUnicodeEncodeErrorÚsplitr+   Ú	bytearrayÚdotsÚextendr/   r1   )ÚselfÚinputÚerrorsr7   Úlabelsr!   Útrailing_dotr   r   r   r*   ‘   s<   ÿ
ÿÿ

zCodec.encodec                 C   s¾   |dkr
t d| ƒ‚|sdS t|tƒst|ƒ}t|vr/z
| d¡t|ƒfW S  ty.   Y nw | d¡}|rDt|d ƒdkrDd}|d= nd	}g }|D ]	}| t	|ƒ¡ qJd 
|¡| t|ƒfS )
Nr;   úUnsupported error handling ©r   r   r&   r?   r   r   Ú.r   )r   r0   r1   r.   r3   r+   ÚUnicodeDecodeErrorrA   r   r9   r   )rE   rF   rG   rH   rI   r7   r!   r   r   r   r3   ¶   s*   
ÿ
zCodec.decodeN)r;   )Ú__name__Ú
__module__Ú__qualname__r*   r3   r   r   r   r   r:   �   s    
%r:   c                   @   ó   e Zd Zdd„ ZdS )ÚIncrementalEncoderc           	      C   s¸   |dkr
t d| ƒ‚|sdS t |¡}d}|r*|d s!d}|d= n	|s*|d= |r*d}tƒ }d}|D ]}|r>| d¡ |d7 }| t|ƒ¡ |t|ƒ7 }q1||7 }|t|ƒ7 }t|ƒ|fS )	Nr;   r<   r=   r>   r   r?   r   é   )r   rC   rA   rB   rD   r/   r+   r1   ©	rE   rF   rG   ÚfinalrH   rI   r7   Úsizer!   r   r   r   Ú_buffer_encodeÙ   s2   

z!IncrementalEncoder._buffer_encodeN)rN   rO   rP   rW   r   r   r   r   rR   Ø   ó    rR   c                   @   rQ   )ÚIncrementalDecoderc           	      C   sÎ   |dkr
t d| ƒ‚|sdS t|tƒrt |¡}n
t|dƒ}| d¡}d}|r:|d s1d}|d= n	|s:|d= |r:d}g }d}|D ]}| t|ƒ¡ |rO|d	7 }|t|ƒ7 }q@d |¡| }|t|ƒ7 }||fS )
Nr;   rJ   rK   r&   rL   r   r   r   rS   )	r   r0   r2   rC   rA   r   r9   r+   r   rT   r   r   r   Ú_buffer_decodeü   s6   


z!IncrementalDecoder._buffer_decodeN)rN   rO   rP   rZ   r   r   r   r   rY   û   rX   rY   c                   @   ó   e Zd ZdS )ÚStreamWriterN©rN   rO   rP   r   r   r   r   r\   "  ó    r\   c                   @   r[   )ÚStreamReaderNr]   r   r   r   r   r_   %  r^   r_   c                	   C   s    t jdtƒ jtƒ jttttd�S )NÚidna)Únamer*   r3   ÚincrementalencoderÚincrementaldecoderÚstreamwriterÚstreamreader)	ÚcodecsÚ	CodecInfor:   r*   r3   rR   rY   r\   r_   r   r   r   r   Úgetregentry*  s   ùrh   )r   Úrerf   r   r   ÚcompilerC   r.   r-   r%   r/   r9   r:   ÚBufferedIncrementalEncoderrR   ÚBufferedIncrementalDecoderrY   r\   r_   rh   r   r   r   r   Ú<module>   s   
.+)H#'