§
    JŠtj"  ã                   ó  — d dl Z d dlZd dlmZ d dlmZmZ ddlmZ 	 ddgZ	de
d	efd
„Zde
d	efd„Zde
d	efd„Zde
de
d	efd„Zde
deee
                  d	efd„Z	 	 	 	 	 dde
dedee
         dedee         deee
                  de
d	efd„ZdS )é    N)ÚOptional)ÚunquoteÚurlparseé   )ÚWebSocketProxyExceptionÚ	parse_urlÚget_proxy_infoÚurlÚreturnc                 ó†  — d| vrt          d¦  «        ‚|                      dd¦  «        \  }} t          | d¬¦  «        }|j        r|j        }nt          d¦  «        ‚d}|j        r|j        }d}|d	k    r|sd
}n|dk    rd}|sd}nt          d|z  ¦  «        ‚|j        r|j        }nd}|j        r|d|j        › �z  }||||fS )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          úL/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/websocket/_url.pyr   r      s  € ð �#€~€~ÝÐ)Ñ*Ô*Ð*à—)’)˜C Ñ#Ô#�K€FˆCå�c &Ð)Ñ)Ô)€FØ„ð 0Ø”?ˆˆåÐ.Ñ/Ô/Ð/Ø€DØ„{ð ØŒ{ˆà€IØ�‚~€~Øð 	ØˆDøØ	�5ŠˆØˆ	Øð 	ØˆDøåÐ/°&Ñ8Ñ9Ô9Ð9à„{ð Ø”;ˆˆàˆà„|ð 'ØÐ&˜œÐ&Ð&Ñ&ˆà�T˜8 YÐ.Ð.ó    Úaddrc                 óš   — t          | t          ¦  «        st          d¦  «        ‚	 t          j        | ¦  «         dS # t
          $ r Y dS w xY w)Nz'_is_ip_address() argument 1 must be strTF)Ú
isinstanceÚstrÚ	TypeErrorÚ	ipaddressÚ
ip_addressr   )r    s    r   Ú_is_ip_addressr'   K   se   € Ý�d�CÑ Ô ð CÝÐAÑBÔBÐBðÝÔ˜TÑ"Ô"Ð"ð ˆtøõ ð ð ð Øˆuˆuðøøøs   ¦< ¼
A
Á	A
r   c                 óR   — 	 t          j        | ¦  «         dS # t          $ r Y dS w xY w)NTF)r%   Ú
ip_networkr   )r   s    r   Ú_is_subnet_addressr*   V   sC   € ðÝÔ˜XÑ&Ô&Ð&ð ˆtøõ ð ð ð Øˆuˆuðøøøs   ‚ ˜
&¥&ÚipÚnetc                 ó˜   — 	 t          j        | ¦  «                             t          j        |¦  «        ¦  «        S # t          $ r Y dS w xY w)NF)r%   r)   Ú	subnet_ofr$   )r+   r,   s     r   Ú_is_address_in_networkr/   _   sS   € ðÝÔ# BÑ'Ô'×1Ò1µ)Ô2FÀsÑ2KÔ2KÑLÔLÐLøÝð ð ð Øˆuˆuðøøøs   ‚8; »
A	ÁA	Úno_proxyc                 óÊ  ‡ — |sit           j                             dt           j                             dd¦  «        ¦  «                             dd¦  «        x}r|                     d¦  «        }|sg }d|v rdS ‰ |v rdS t          ‰ ¦  «        rt          ˆ fd„|D ¦   «         ¦  «        S d	„ |D ¦   «         D ]/}|                     d
¦  «        }‰                      |¦  «        r dS Œ0dS )Nr0   ÚNO_PROXYÚ ú ú,Ú*Tc                 óN   •— g | ]!}t          |¦  «        ¯t          ‰|¦  «        ‘Œ"S © )r*   r/   )Ú.0Úsubnetr   s     €r   ú
<listcomp>z%_is_no_proxy_host.<locals>.<listcomp>v   sA   ø€ ð ð ð àÝ% fÑ-Ô-ðÝ& x°Ñ8Ô8ðð ð r   c                 ó<   — g | ]}|                      d ¦  «        ¯|‘ŒS )ú.)Ú
startswith)r9   Údomains     r   r;   z%_is_no_proxy_host.<locals>.<listcomp>|   s+   € ÐKÐKÐK˜f°F×4EÒ4EÀcÑ4JÔ4JÐK�6ÐKÐKÐKr   r=   F)	ÚosÚenvironÚgetÚreplacer   r'   ÚanyÚlstripÚendswith)r   r0   Úvr?   Ú	endDomains   `    r   Ú_is_no_proxy_hostrI   f   s+  ø€ Øð $Ý”
—’˜z­2¬:¯>ª>¸*ÀbÑ+IÔ+IÑJÔJ×RÒRØ�ñ
ô 
ð 
ˆ1ð 	$ð —w’w˜s‘|”|ˆHàð Øˆà
ˆh€€ØˆtØ�8ÐÐØˆtÝ�hÑÔð 
Ýðð ð ð à&ðñ ô ñ
ô 
ð 	
ð LÐK¨ÐKÑKÔKð ð ˆØ—M’M #Ñ&Ô&ˆ	Ø×Ò˜YÑ'Ô'ð 	Ø�4�4ð	àˆ5r   r   r   Ú
proxy_hostÚ
proxy_portÚ
proxy_authÚ
proxy_typec                 óà  — t          | |¦  «        rdS |r|st          d¦  «        ‚|}|}|||fS |rdnd}	t          j                             |	t          j                             |	                     ¦   «         d¦  «        ¦  «                             dd¦  «        }
|
rSt          |
¦  «        }|j        r,t          |j        pd¦  «        t          |j
        pd¦  «        fnd}|j        |j        |fS dS )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)rI   r   r@   rA   rB   ÚupperrC   r   Úusernamer   Úpasswordr   r   )r   r   rJ   rK   rL   r0   rM   r   ÚauthÚenv_keyÚvalueÚproxys               r   r	   r	   ƒ   s  € õF ˜ 8Ñ,Ô,ð Øˆ}àð &Øð 	YÝ)Ð*WÑXÔXÐXØˆØˆØ˜4 Ð%Ð%à(Ð:ˆmˆm¨l€GÝŒJ�NŠN˜7¥B¤J§N¢N°7·=²=±?´?ÀBÑ$GÔ$GÑHÔH×PÒPØˆRñô €Eð ð 0Ý˜‘”ˆð Œ~ð�W�U”^Ð) rÑ*Ô*­G°E´NÐ4HÀbÑ,IÔ,IÐJÐJàð 	ð
 Œ~˜uœz¨4Ð/Ð/àˆ=r   )Nr   NNr   )r%   r@   Útypingr   Úurllib.parser   r   Ú_exceptionsr   Ú__all__r#   Útupler   Úboolr'   r*   r/   ÚlistrI   Úintr	   r8   r   r   ú<module>r`      s¼  ðØ Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð& Ð(Ð
)€ð+/�3ð +/˜5ð +/ð +/ð +/ð +/ð\˜ð  ð ð ð ð ð ð ¨ð ð ð ð ð˜sð ¨ð °ð ð ð ð ð ð ¨x¸¸S¼	Ô/Bð Àtð ð ð ð ð@ !%ØØ"&Ø$(Øð:ð :Øð:àð:ð ˜”ð:ð ð	:ð
 ˜”ð:ð �t˜C”yÔ!ð:ð ð:ð ð:ð :ð :ð :ð :ð :r   