ó
    ÖÁ“i"  ã                   ó  • S SK r S SKrS SKJr  S SKJrJr  SSKJr   SS/r	S\
S	\4S
 jrS\
S	\4S jrS\
S	\4S jrS\
S\
S	\4S jrS\
S\\\
      S	\4S jr     SS\
S\S\\
   S\S\\   S\\\
      S\
S	\4S jjrg)é    N)ÚOptional)ÚunquoteÚurlparseé   )ÚWebSocketProxyExceptionÚ	parse_urlÚget_proxy_infoÚurlÚreturnc                 óâ  • SU ;  a  [        S5      eU R                  SS5      u  p[        U SS9nUR                  (       a  UR                  nO[        S5      eSnUR                  (       a  UR                  nSnUS	:X  a
  U(       d  S
nO US:X  a  SnU(       d  SnO[        SU-  5      eUR
                  (       a  UR
                  nOSnUR                  (       a  USUR                   3-  nX4Xe4$ )z’
parse url and the result is tuple of
(hostname, port, resource path and the flag of secure mode)

Parameters
----------
url: str
    url string.
Ú:zurl is invalidr   Úhttp)Úschemezhostname is invalidr   FÚwséP   ÚwssTi»  zscheme %s is invalidÚ/Ú?)Ú
ValueErrorÚsplitr   ÚhostnameÚportÚpathÚquery)r
   r   Úparsedr   r   Ú	is_secureÚresources          ÚK/home/mande/repo/quber/.venv/lib/python3.13/site-packages/websocket/_url.pyr   r      sÝ   € ð �#ƒ~ÜÐ)Ó*Ð*à—)‘)˜C Ó#�K€Fä�c &Ñ)€FØ‡‡Ø—?‘?‰äÐ.Ó/Ð/Ø€DØ‡{‡{Ø�{‰{ˆà€IØ�ƒ~ÞØˆDøØ	�5‹Øˆ	ÞØˆDøäÐ/°&Ñ8Ó9Ð9à‡{‡{Ø—;‘;‰àˆà‡|‡|Ø�a˜Ÿ™�~Ð&Ñ&ˆà˜8Ð.Ð.ó    Úaddrc                 ó’   • [        U [        5      (       d  [        S5      e [        R                  " U 5        g! [
         a     gf = f)Nz'_is_ip_address() argument 1 must be strTF)Ú
isinstanceÚstrÚ	TypeErrorÚ	ipaddressÚ
ip_addressr   )r    s    r   Ú_is_ip_addressr'   K   sG   € Ü�dœC× Ñ ÜÐAÓBÐBðÜ×Ò˜TÔ"ð øô ó Ùðús   ¢9 ¹
AÁAr   c                 óR   •  [         R                  " U 5        g! [         a     gf = f)NTF)r%   Ú
ip_networkr   )r   s    r   Ú_is_subnet_addressr*   V   s.   € ðÜ×Ò˜XÔ&ð øô ó Ùðús   ‚ ™
&¥&ÚipÚnetc                 ó–   •  [         R                  " U 5      R                  [         R                  " U5      5      $ ! [         a     gf = f)NF)r%   r)   Ú	subnet_ofr$   )r+   r,   s     r   Ú_is_address_in_networkr/   _   s@   € ðÜ×#Ò# BÓ'×1Ñ1´)×2FÒ2FÀsÓ2KÓLÐLøÜó Ùðús   ‚8; »
AÁAÚno_proxyc           	      ó`  • U(       df  [         R                  R                  S[         R                  R                  SS5      5      R                  SS5      =n(       a  UR	                  S5      nU(       d  / nSU;   a  gX;   a  g[        U 5      (       a7  [        U Vs/ s H   n[        U5      (       d  M  [        X5      PM"     sn5      $ U Vs/ s H  oDR                  S5      (       d  M  UPM     sn H,  nUR                  S5      nU R                  U5      (       d  M,    g   g	s  snf s  snf )
Nr0   ÚNO_PROXYÚ Ú Ú,Ú*TÚ.F)ÚosÚenvironÚgetÚreplacer   r'   Úanyr*   r/   Ú
startswithÚlstripÚendswith)r   r0   ÚvÚsubnetÚdomainÚ	endDomains         r   Ú_is_no_proxy_hostrD   f   s
  € ÞÜ—
‘
—‘˜z¬2¯:©:¯>©>¸*ÀbÓ+IÓJ×RÑRØ�ó
ð 
ˆ1õ 
ð —w‘w˜s“|ˆHæØˆà
ˆhƒØØÓØÜ�h×ÑÜñ 'óâ&�FÜ% f×-ó 9Ô& xÖ8Ù&ñó
ð 	
ñ )1ÓKª˜f×4EÑ4EÀc×4J—6©ÔKˆØ—M‘M #Ó&ˆ	Ø×Ñ˜Y×'Ó'Ùñ Lð ùòùò Ls   ÂD&Â5D&ÃD+Ã,D+r   Ú
proxy_hostÚ
proxy_portÚ
proxy_authÚ
proxy_typec                 ó*  • [        X5      (       a  gU(       a  U(       d  [        S5      eUnUnX'U4$ U(       a  SOSn	[        R                  R	                  U	[        R                  R	                  U	R                  5       S5      5      R                  SS5      n
U
(       as  [        U
5      nUR                  (       a<  [        UR                  =(       d    S5      [        UR                  =(       d    S5      4OSnUR                  UR                  U4$ g)a<  
Try to retrieve proxy host and port from environment
if not provided in options.
Result is (proxy_host, proxy_port, proxy_auth).
proxy_auth is tuple of username and password
of proxy authentication information.

Parameters
----------
hostname: str
    Websocket server name.
is_secure: bool
    Is the connection secure? (wss) looks for "https_proxy" in env
    instead of "http_proxy"
proxy_host: str
    http proxy host name.
proxy_port: str or int
    http proxy port.
no_proxy: list
    Whitelisted host names that don't use the proxy.
proxy_auth: tuple
    HTTP proxy auth information. Tuple of username and password. Default is None.
proxy_type: str
    Specify the proxy protocol (http, socks4, socks4a, socks5, socks5h). Default is "http".
    Use socks4a or socks5h if you want to send DNS requests through the proxy.
)Nr   Nz+Cannot use port 0 when proxy_host specifiedÚhttps_proxyÚ
http_proxyr3   r4   N)rD   r   r8   r9   r:   Úupperr;   r   Úusernamer   Úpasswordr   r   )r   r   rE   rF   rG   r0   rH   r   ÚauthÚenv_keyÚvalueÚproxys               r   r	   r	   ƒ   sÛ   € ôF ˜×,Ñ,ØæÞÜ)Ð*WÓXÐXØˆØˆØ Ð%Ð%æ(‰m¨l€GÜ�J‰J�N‰N˜7¤B§J¡J§N¡N°7·=±=³?ÀBÓ$GÓH×PÑPØˆRó€Eö Ü˜“ˆð �~�~ô �U—^‘^×) rÓ*¬G°E·N±N×4HÀbÓ,IÑJàð 	ð
 �~‰~˜uŸz™z¨4Ð/Ð/àr   )Nr   NNr   )r%   r8   Útypingr   Úurllib.parser   r   Ú_exceptionsr   Ú__all__r#   Útupler   Úboolr'   r*   r/   ÚlistrD   Úintr	   © r   r   Ú<module>r\      s  ðÛ Û 	Ý ß *Ý 0ðð& Ð(Ð
)€ð+/�3ð +/˜5ô +/ð\˜ð  ô ð ð ¨ô ð˜sð ¨ð °ô ð ð ¨x¸¸S¹	Ñ/Bð Àtô ð@ !%ØØ"&Ø$(Øñ:Øð:àð:ð ˜‘ð:ð ð	:ð
 ˜‘ð:ð �t˜C‘yÑ!ð:ð ð:ð ö:r   