U
    	fl2                     @   s  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dZG d	d
 d
eZG dd deZG dd deZG dd deZeedddZeeedddZeedddZeedddZeeef edddZeeef eedd d!ZdBeeed#d$d%Zeedd&d'Zeedd(d)Zeddd*d+Z eeed,d-d.Z!dCeeeed/d0d1Z"eeee#f ddd2d3Z$eedd4d5Z%eeee#f edd6d7Z&dDeeeed9d:d;Z'dEeeee#f eeeeed<d=d>Z(dFeeee#f eeeed?d@dAZ)dS )G   )idnadata    N)UnionOptional)intranges_contain	   s   xn--u   [.。．｡]c                   @   s   e Zd ZdZdS )	IDNAErrorz7 Base exception for all IDNA-encoding related problems N__name__
__module____qualname____doc__ r   r   L/var/www/html/apigroqsegura/apigroq/lib/python3.8/site-packages/idna/core.pyr      s   r   c                   @   s   e Zd ZdZdS )IDNABidiErrorz= Exception when bidirectional requirements are not satisfied Nr	   r   r   r   r   r      s   r   c                   @   s   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   r   c                   @   s   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   r   )cpreturnc                 C   s0   t t| }|dkr,t t| s,td|S )Nr   z Unknown character in unicodedata)unicodedataZ	combiningchrname
ValueError)r   vr   r   r   _combining_class    s
    r   )r   scriptr   c                 C   s   t t| tj| S )N)r   ordr   Zscripts)r   r   r   r   r   
_is_script'   s    r   )sr   c                 C   s
   |  dS )Npunycode)encoder   r   r   r   	_punycode*   s    r"   c                 C   s
   d | S )NzU+{:04X})formatr!   r   r   r   _unot-   s    r$   )labelr   c                 C   s   t | dkrdS dS )N?   FTlenr%   r   r   r   valid_label_length1   s    r*   )r%   trailing_dotr   c                 C   s   t | |rdndkrdS dS )N      FTr'   )r%   r+   r   r   r   valid_string_length7   s    r.   F)r%   	check_ltrr   c           	      C   s^  d}t | dD ]:\}}t|}|dkr<tdt| ||dkrd}q|sV|sVdS t| d }|dkrrd}n |d	krd}ntd
t| d}d }t | dD ]\}}t|}|r|dkrtd||dkrd}n|dkrd}|dkrJ|s|}n||krJtdq|dkr.td||dkr>d}q|dkrd}q|sZtddS )NFr    z1Unknown directionality in label {} at position {})RALANTr   )r1   r2   Lz=First codepoint in label {} must be directionality L, R or AL)
r1   r2   r3   ENESCSETONBNNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r1   r2   r5   r3   r;   )r3   r5   z2Can not mix numeral types in a right-to-left label)r4   r5   r6   r7   r8   r9   r:   r;   zGInvalid direction for codepoint at position {} in a left-to-right label)r4   r5   z0Label ends with illegal codepoint directionality)	enumerater   Zbidirectionalr   r#   repr)	r%   r/   Z
bidi_labelidxr   	directionZrtlZvalid_endingnumber_typer   r   r   
check_bidi=   sP    






rA   c                 C   s"   t | d d dkrtddS )Nr   Mz0Label begins with an illegal combining characterT)r   categoryr   r)   r   r   r   check_initial_combinerx   s    rD   c                 C   s<   | dd dkrt d| d dks0| d dkr8t 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   r)   r   r   r   check_hyphen_ok~   s
    rI   c                 C   s   t d| | krtdd S )NNFCz%Label must be in Normalization Form C)r   	normalizer   r)   r   r   r   	check_nfc   s    rL   )r%   posr   c                 C   s4  t | | }|dkr|dkr8tt | |d  tkr8dS d}t|d ddD ]B}tjt | | }|t dkrrqL|t dt d	fkrLd} qqL|sdS d}t|d t| D ]B}tjt | | }|t dkrq|t d
t d	fkrd} qq|S |dkr,|dkr(tt | |d  tkr(dS dS dS d S )Ni   r   r   TFrH   Tr4   Dr1   i   )r   r   _virama_combining_classranger   Zjoining_typesgetr(   )r%   rM   cp_valueokiZjoining_typer   r   r   valid_contextj   s<    

rV   )r%   rM   	exceptionr   c                 C   s  t | | }|dkrdd|  k r0t| d k r`n n,t | |d  dkr`t | |d  dkr`dS dS |dkr|t| d k rt| dkrt| |d  dS dS |d	ks|d
kr|dkrt| |d  dS dS |dkr| D ]6}|dkrqt|ds
t|ds
t|dr dS qdS d|  kr.dkrhn n6| D ],}dt |  krVdkr6n n dS q6dS d|  krdkrn n6| D ],}dt |  krdkrn n dS qdS dS )N   r   r   l   TFiu  ZGreeki  i  ZHebrewi0  u   ・ZHiraganaZKatakanaZHani`  ii  i  i  )r   r(   r   )r%   rM   rW   rS   r   r   r   r   valid_contexto   s@     (
" 
 
rZ   c                 C   sL  t | ttfr| d} t| dkr,tdt|  t|  t|  t	| D ]\}}t
|}t|tjd rpqLqLt|tjd rz,t| |stdt||d t| W n2 tk
r   tdt||d t| Y nX qLt|tjd	 r t| |s>td
t||d t| qLtdt||d t| qLt|  d S )Nzutf-8r   zEmpty LabelZPVALIDZCONTEXTJz*Joiner {} not allowed at position {} in {}r   z<Unknown codepoint adjacent to joiner {} at position {} in {}ZCONTEXTO-Codepoint {} not allowed at position {} in {}z-Codepoint {} at position {} of {} not allowed)
isinstancebytes	bytearraydecoder(   r   rL   rI   rD   r<   r   r   r   Zcodepoint_classesrV   r   r#   r$   r=   r   rZ   r   rA   )r%   rM   r   rS   r   r   r   check_label   s<    

  
    r`   c                 C   s~   z(|  d}t| t|s$td|W S  tk
r<   Y nX | sJtdt| } t|  t| }t| }t|sztd|S )NasciizLabel too longzNo Input)	r    ulabelr*   r   UnicodeEncodeErrorstrr`   r"   _alabel_prefixr%   Zlabel_bytesr   r   r   alabel   s"    
rg   c                 C   s   t | ttfs@z| d}W qD tk
r<   t|  |  Y S X n| }| }|tr|t	td  }|srt
d|dd dkrt
dnt| |dS z|d} W n tk
r   t
dY nX t|  | S )Nra   z5Malformed A-label, no Punycode eligible content foundrH   rG   z"A-label must not end with a hyphenr   zInvalid A-label)r\   r]   r^   r    rc   r`   lower
startswithre   r(   r   r_   UnicodeErrorrf   r   r   r   rb     s,    


rb   T)domain
std3_rulestransitionalr   c                 C   s(  ddl m } d}t| D ] \}}t|}z||dk r:|nt||dfd  }|d }	d}
t|dkrp|d }
|	d	ks|	d
kr|r|	dkr|s|
dkr||7 }n@|
dk	r|	dks|	dkr|r|	d
kr|r||
7 }n|	dkrt W q tk
r   tdt	||d t
| Y qX qtd|S )zBRe-map the characters in the string according to UTS46 processing.r   )	uts46datar0      ZN   rE   VrO   3rB   Ir[   rJ   )rn   r<   r   bisectbisect_leftr(   
IndexErrorr   r#   r$   r=   r   rK   )rk   rl   rm   rn   outputrM   charZ
code_pointZuts46rowstatusZreplacementr   r   r   uts46_remap4  sZ    


  r{   )r   strictuts46rl   rm   r   c           	      C   s   t | ts6zt| d} W n tk
r4   tdY nX |rFt| ||} d}g }|r^| d}n
t| }|rv|dgkr~td|d dkr|d= d}|D ]$}t|} | r||  qtd	q|r|d
 d	|} t
| |std| S )Nra   zGshould pass a unicode string to the function rather than a byte string.F.r0   Empty domainrH   TEmpty label       .zDomain too long)r\   rd   UnicodeDecodeErrorr   r{   split_unicode_dots_rerg   appendjoinr.   )	r   r|   r}   rl   rm   r+   resultlabelsr%   r   r   r   r    T  s8    





r    )r   r|   r}   rl   r   c                 C   s   zt | tst| d} W n tk
r4   tdY nX |rFt| |d} d}g }|s^t| }n
| d}|rv|dgkr~td|d s|d= d}|D ]$}t|} | r||  qtd	q|r|d d	|S )
Nra   zInvalid ASCII in A-labelFr~   r0   r   rH   Tr   )
r\   rd   r   r   r{   r   r   rb   r   r   )r   r|   r}   rl   r+   r   r   r%   r   r   r   r_   u  s2    



r_   )F)F)TF)FFFF)FFF)*r0   r   ru   r   retypingr   r   	intrangesr   rP   re   compiler   rj   r   r   r   r   intr   rd   boolr   r]   r"   r$   r*   r.   rA   rD   rI   rL   rV   rZ   r^   r`   rg   rb   r{   r    r_   r   r   r   r   <module>   s<   
;+* $!