
    fX                        d dl Z d dlmZ dZ e j                  e      Z e j                  de j                        ZdZ e j                  e      Z	dZ
 e j                  e
      Zdgdz  Z e ed	       ed
      dz         D ]  Zdee<   	  e ed       ed      dz         D ]  Zdee<   	  e ed       ed      dz         D ]  Zdee<   	 de ed      <   de ed      <   de ed      <   de ed      <   d Zd Zd Zd Zy)    N)	codecutilz9^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?z$[^-A-Za-z0-9:/?#[\]@!$&'()*+,;=._~%]z^([^@]*@)?([^:]*)(:.*)?z%([0-9A-Fa-f]{2})F   AZ   T09az-._~c                     	 t        | j                  d      d      }t        |   rt        |      S | j                         j	                         S # t
        $ r | j                         cY S w xY wNr      )intgroup_unreservedchrupper
ValueError)mois     I/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/openid/urinorm.py_pct_encoded_replace_unreservedr   &   s[    R q>q6M88:##%% xxzs   .A A A+*A+c                     	 t        t        | j                  d      d            S # t        $ r | j                         cY S w xY wr   )r   r   r   r   )r   s    r   _pct_encoded_replacer   2   s<    3rxx{B'(( xxzs   #& AAc                    g }| r| j                  d      r| dd  } n| j                  d      r| dd  } n| j                  d      r| dd  } n| dk(  rd} n| j                  d      r| dd  } |r|j                          nn| d	k(  rd} |re|j                          nT| d
k(  s| dk(  rd} nGd}| d   dk(  rd}| j                  d|      }|dk(  rt        |       }|j	                  | d |        | |d  } | rdj                  |      S )Nz../   z./   z/./z/./z/../z/..z..r    r   r   )
startswithpopfindlenappendjoin)pathresult_segmentsr   s      r   remove_dot_segmentsr-   9   s   O
??5!8D__T"8D__U#8DT\D__V$8D##%U]D##%T\TS[DAAw#~		#q!ABwI""48,8D7 : 77?##    c                 d   t        | t              rt        | d      } | j                  dd      j	                  d      } t
        j                  |       }|r-t        d|j                         d|j                               t        j                  |       }|j                  d      }|t        d	      |j                         }|d
vrt        d|       |j                  d      }|t        d|       t        j                  |      }|t        d|       |j                         \  }}}|d}d|v rJ|j                         }t        j!                  t"        |      }|j                  d      j	                         }n|j                         }|r|dk(  s|dk(  r|dk(  s
|dk(  r
|dk(  rd}nd}||z   |z   }|j                  d      }	t        j!                  t$        |	      }	t'        |	      }	|	sd}	|j                  d      }
|
d}
|j                  d      }|d}|dz   |z   |	z   |
z   |z   S )z
    Normalize a URI
    zutf-8)encodingasciioid_percent_escape)errorszIllegal characters in URI: z at position r!   zNo scheme specified)httphttpsz#Not an absolute HTTP or HTTPS URI:    zNot an absolute URI: z%URI does not have a valid authority: r#   %idna:r4   z:80r5   z:443   r"         z://)
isinstancebytesstrencodedecodeuri_illegal_char_researchr   r   starturi_rematchlowerauthority_regroupspct_encoded_resubr   r   r-   )uri
illegal_mouri_moscheme	authorityauthority_mouserinfohostportr+   queryfragments               r   urinormrW   \   s1   
 #u#(
**W%9*
:
A
A'
JC %++C0J$**,j.>.>.@B C 	C \\#F\\!_F~.//\\^F&&CJKKQIc<==%%i0LcLMM'..0HdD
d{zz|!!"6={{6"))+zz|CKFf,w46>D4$&I<<?D=tDDt$DLLOE}||AHE>I%,u4x??r.   )reopenidr   uri_patterncompilerE   UNICODErB   authority_patternrH   pct_encoded_patternrJ   r   rangeordr   r   r   r-   rW    r.   r   <module>rb      sK   	  K	K	  !bjj!H!#-  / rzz+,* /0gm	s3xSA	& AKN	s3xSA	& AKN	s3xSA	& AKNCH CH CH CH 	 $FE@r.   