
    Hc2                        d dl mZ ddlZddlZddlZddlmZmZ d dlm	Z	 dZ
dZ ej        d          Z G d	 d
e          Z G d de          Z G d de          Z G d de          ZdedefdZdededefdZdedefdZdedefdZdeeef         defdZdeeef         dedefdZd3dededefdZdedefd Zdedefd!Zdeddfd"Z ded#edefd$Z!d3ded#ed%edefd&Z"deeee#f         ddfd'Z$dedefd(Z%deeee#f         defd)Z&d4d+ed,ed-edefd.Z'd5deeee#f         d/ed0ed,ed-edefd1Z(d6deeee#f         d/ed0ed,edef
d2Z)dS )7   )idnadata    N)UnionOptional)intranges_contain	   s   xn--u   [.。．｡]c                       e Zd ZdZdS )	IDNAErrorz7 Base exception for all IDNA-encoding related problems N__name__
__module____qualname____doc__     )lib/python3.11/site-packages/idna/core.pyr
   r
      s        AADr   r
   c                       e Zd ZdZdS )IDNABidiErrorz= Exception when bidirectional requirements are not satisfied Nr   r   r   r   r   r      s        GGDr   r   c                       e Zd ZdZdS )InvalidCodepointz> Exception when a disallowed or unallocated codepoint is used Nr   r   r   r   r   r      s        HHDr   r   c                       e Zd ZdZdS )InvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used Nr   r   r   r   r   r      s        OODr   r   cpreturnc                     t          j        t          |                     }|dk    r0t          j        t          |                     st	          d          |S )Nr   z Unknown character in unicodedata)unicodedata	combiningchrname
ValueError)r   vs     r   _combining_classr"       sS    c"gg&&AAv AB(( 	A?@@@Hr   scriptc                 \    t          t          |           t          j        |                   S )N)r   ordr   scripts)r   r#   s     r   
_is_scriptr'   '   s     SWWh&6v&>???r   sc                 ,    |                      d          S )Npunycode)encoder(   s    r   	_punycoder-   *   s    88Jr   c                 ,    d                     |           S )NzU+{:04X})formatr,   s    r   _unotr0   -   s    Qr   labelc                 0    t          |           dk    rdS dS )N?   FTlenr1   s    r   valid_label_lengthr7   1   s    
5zzB u4r   trailing_dotc                 8    t          |           |rdndk    rdS dS )N      FTr4   )r1   r8   s     r   valid_string_lengthr<   7   s(    
5zzL1SSc2 u4r   F	check_ltrc                 (   d}t          | d          D ]U\  }}t          j        |          }|dk    r0t          d                    t          |           |                    |dv rd}V|s|sdS t          j        | d                   }|dv rd}n8|d	k    rd}n/t          d
                    t          |                               d}d }t          | d          D ]\  }}t          j        |          }|rT|dvr"t          d                    |                    |dv rd}n|dk    rd}|dv r|s|}Y||k    rt          d          o|dvr"t          d                    |                    |dv rd}|dk    rd}|st          d          dS )NFr    z1Unknown directionality in label {} at position {})RALANTr   )r@   rA   Lz=First codepoint in label {} must be directionality L, R or AL)
r@   rA   rB   ENESCSETONBNNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r@   rA   rD   rB   rJ   )rB   rD   z2Can not mix numeral types in a right-to-left label)rC   rD   rE   rF   rG   rH   rI   rJ   zGInvalid direction for codepoint at position {} in a left-to-right label)rC   rD   z0Label ends with illegal codepoint directionality)	enumerater   bidirectionalr   r/   repr)	r1   r=   
bidi_labelidxr   	directionrtlvalid_endingnumber_types	            r   
check_bidirT   =   s<   Jua((  	b-b11	? 	n S Z Z[_`e[f[fhk l lmmm)) 	J i t )%(33IK q	c	 q[bbcghmcncnoopppLKua(( % %	b-b11	 	% \\ {#$m$t$tux$y$yzzz33 %#e# %$L( b" b"+KK"i/ b+,`aaa  PP {#$m$t$tux$y$yzzzK' %#e# %$ PNOOO4r   c                 l    t          j        | d                   d         dk    rt          d          dS )Nr   Mz0Label begins with an illegal combining characterT)r   categoryr
   r6   s    r   check_initial_combinerrX   x   s8    E!H%%a(C/ LJKKK4r   c                     | dd         dk    rt          d          | d         dk    s| d         dk    rt          d          d	S )
N      z--z4Label has disallowed hyphens in 3rd and 4th positionr   -z)Label must not start or end with a hyphenT)r
   r6   s    r   check_hyphen_okr^   ~   s]    QqSzT PNOOOQx3 E%)s* ECDDD4r   c                 V    t          j        d|           | k    rt          d          d S )NNFCz%Label must be in Normalization Form C)r   	normalizer
   r6   s    r   	check_nfcrb      s8    UE**e3 A?@@@A Ar   posc                 V   t          | |                   }|dk    rN|dk    r0t          t          | |dz
                               t          k    rdS d}t          |dz
  dd          D ]l}t          j                            t          | |                             }|t          d          k    rH|t          d          t          d	          fv rd} nm|sdS d}t          |dz   t          |                     D ]l}t          j                            t          | |                             }|t          d          k    rH|t          d
          t          d	          fv rd} nm|S |dk    r8|dk    r0t          t          | |dz
                               t          k    rdS dS dS )Ni   r   r   TFr]   TrC   Dr@   i   )r%   r"   _virama_combining_classranger   joining_typesgetr5   )r1   rc   cp_valueokijoining_types         r   valid_contextjro      s   5:H6 7 	E#'N 3 3448OO ts1ub"%% 	 	A#155c%(mmDDLs3xx' C#c((33   	5s1uc%jj)) 	 	A#155c%(mmDDLs3xx' C#c((33  	6 	7 	E#'N 3 3448OO tu ur   	exceptionc                 L   t          | |                   }|dk    r\d|cxk     rt          |           dz
  k     r=n n:t          | |dz
                     dk    rt          | |dz                      dk    rdS dS |dk    rD|t          |           dz
  k     r,t          |           dk    rt          | |dz            d          S dS |d	k    s|d
k    r!|dk    rt          | |dz
           d          S dS |dk    rA| D ]<}|dk    r	t          |d          s t          |d          st          |d          r dS =dS d|cxk    rdk    r*n n'| D ]"}dt          |          cxk    rdk    rn  dS #dS d|cxk    rdk    r*n n'| D ]"}dt          |          cxk    rdk    rn  dS #dS dS )N   r   r   l   TFiu  Greeki  i  Hebrewi0  u   ・HiraganaKatakanaHani`  ii  i  i  )r%   r5   r'   )r1   rc   rp   rk   r   s        r   valid_contextory      s   5:H6 "s 	 	 	 	SZZ\ 	 	 	 	 	5q>""f, U37^1D1D1N tu	V	 UA 	7#e**q. 	7eC!Gng666u	V	 x61 7 	8eC!Gnh777u	V	  	 	BX~ "j)) ZJ-G-G :VXZ_K`K` ttu	( 
 
 
 
e 
 
 
 
 
 	 	BB    6     uut	(    e      	 	BB    6     uut5r   c                    t          | t          t          f          r|                     d          } t	          |           dk    rt          d          t          |            t          |            t          |            t          |           D ]\  }}t          |          }t          |t          j        d                   r6t          |t          j        d                   r	 t          | |          sAt          d                    t#          |          |dz   t%          |                               # t&          $ rB t          d                    t#          |          |dz   t%          |                               w xY wt          |t          j        d	                   rSt)          | |          sAt          d
                    t#          |          |dz   t%          |                               kt+          d                    t#          |          |dz   t%          |                               t-          |            d S )Nzutf-8r   zEmpty LabelPVALIDCONTEXTJz*Joiner {} not allowed at position {} in {}r   z<Unknown codepoint adjacent to joiner {} at position {} in {}CONTEXTO-Codepoint {} not allowed at position {} in {}z-Codepoint {} at position {} of {} not allowed)
isinstancebytes	bytearraydecoder5   r
   rb   r^   rX   rK   r%   r   r   codepoint_classesro   r   r/   r0   rM   r    ry   r   rT   )r1   rc   r   rk   s       r   check_labelr      si   %%+,, &W%%
5zzQ '&&&eE5!!!u%% @ @	br77Xx'A('KLL 	@x)CJ)OPP 	@:%eS11 >12^2e2ehQU3= 3= > > >>  : : : ^ e e(OOSUDKK!9 !9 : : :: x)CJ)OPP 	@!%-- K-.].d.dejksetetvyz{v{  ~B  CH  ~I  ~I  /J  /J  K  K  KK ##R#Y#YZ_`hZiZiknopkprvw|r}r}#~#~us   'AD99AFc                 |   	 |                      d          }t          |           t          |          st          d          |S # t          $ r Y nw xY w| st          d          t          |           } t          |            t          |           }t          |z   }t          |          st          d          |S )NasciizLabel too longzNo Input)	r+   ulabelr7   r
   UnicodeEncodeErrorstrr   r-   _alabel_prefixr1   label_bytess     r   alabelr      s    ll7++{!+.. 	.,---     $
###JJEE""K ;.Kk** *()))s   AA 
AAc                    t          | t          t          f          s8	 |                     d          }n## t          $ r t          |            | cY S w xY w| }|                                }|                    t                    r\|t          t                    d          }|st          d          |                    d          d         dk    rt          d          n$t          |           |                    d          S 	 |                    d          } n# t          $ r t          d          w xY wt          |            | S )Nr   z5Malformed A-label, no Punycode eligible content foundr]   r\   z"A-label must not end with a hyphenr*   zInvalid A-label)r   r   r   r+   r   r   lower
startswithr   r5   r
   r   UnicodeErrorr   s     r   r   r     sr   eeY/00 	,,w//KK! 	 	 	LLL	 ##%%Kn-- +!#n"5"5"6"67 	USTTTg&&r*c1 	B@AAA	B 	K   !!'***+"":.. + + +)***+Ls   4 AAD D6Tdomain
std3_rulestransitionalc                 `   ddl m } d}t          |           D ]\  }}t          |          }	 ||dk     r|nt          j        ||df          dz
           }|d         }	d}
t          |          dk    r|d         }
|	d	k    s|	d
k    r|r
|	dk    r
|s|
||z  }n2|
|	dk    s|	dk    r|r|	d
k    r|r||
z  }n|	dk    rt                      # t          $ rB t          d                    t          |          |dz   t          |                               w xY wt          j        d|          S )zBRe-map the characters in the string according to UTS46 processing.r   )	uts46datar?      ZN   rZ   Vrf   3rV   Ir~   r`   )r   rK   r%   bisectbisect_leftr5   
IndexErrorr   r/   r0   rM   r   ra   )r   r   r   r   outputrc   char
code_pointuts46rowstatusreplacements              r   uts46_remapr   4  s   $$$$$$Fv&& ; ;	TYY
	; zC/? "E"9z3.?@@1DFHa[FK8}}! *&qk# 	#s]	#+7	#s]	#+5	#:E	# $ #fm #s]#+5#s]#'3# +%3 # ll" 	; 	; 	;"?FFj!!37DLL: :; ; ;	;
  ///s   BCADstrictuts46c                    t          | t          t          f          r4	 |                     d          } n# t          $ r t          d          w xY w|rt          | ||          } d}g }|r|                     d          }nt                              |           }|r|dgk    rt          d          |d         dk    r|d= d}|D ]7}t          |          } | r|
                    |            )t          d	          |r|
                    d
           d                    |          } t          | |          st          d          | S )Nr   zGshould pass a unicode string to the function rather than a byte string.F.r?   Empty domainr]   TEmpty labelr      .zDomain too long)r   r   r   r   UnicodeDecodeErrorr
   r   split_unicode_dots_rer   appendjoinr<   )	r(   r   r   r   r   r8   resultlabelsr1   s	            r   r+   r+   T  s   !eY'(( g	g!!AA! 	g 	g 	gefff	g 5:|44LF +!''** (Vt^ ('''bzR 2J + +5MM 	+MM!M*** c		&Aq,// +)***Hs	   4 Ac                 J   	 t          | t          t          f          r|                     d          } n# t          $ r t          d          w xY w|rt          | |d          } d}g }|st                              |           }n|                     d          }|r|dgk    rt          d          |d         s|d= d}|D ]7}t          |          } | r|
                    |            )t          d	          |r|
                    d           d                    |          S )
Nr   zInvalid ASCII in A-labelFr   r?   r   r]   Tr   )r   r   r   r   r   r
   r   r   r   r   r   r   )r(   r   r   r   r8   r   r   r1   s           r   r   r   u  sU   4a%+,, 	"!!A 4 4 423334 .:u--LF !''** (Vt^ ('''": 2J + +5MM 	+MM!M*** b88Fs	   14 A)F)TF)FFFF)FFF)*r?   r   r   r   retypingr   r   	intrangesr   rg   r   compiler   r   r
   r   r   r   intr"   r   boolr'   r   r-   r0   r7   r<   rT   rX   r^   rb   ro   ry   r   r   r   r   r   r+   r   r   r   r   <module>r      sw              				 " " " " " " " " ( ( ( ( ( ( 2::;; 	 	 	 	 	 	 	 	
	 	 	 	 	I 	 	 	
	 	 	 	 	y 	 	 	
	 	 	 	 	i 	 	 	
     @3 @ @ @ @ @ @            S  S        eE3J/ D    uUCZ0      8 8c 8d 8t 8 8 8 8v# $    3 4    AS AT A A A A
(# (C (D ( ( ( (V' '# 'C 'D 'T ' ' ' 'TuS%23     ># %    0%UI-. 3    :0 0 0 0D 0UX 0 0 0 0@ eC	)* D  cg   @D   QV    B eC	)* D  cg tw      r   