Ë
    ëO´ji  ã                  óÐ   — d dl mZ d dlZd dlZd dlZddlmZ ddlm	Z	 ddl
mZmZ ddlmZ ddlmZmZ g d	¢Zej&                   G d
„ d«      «       Zdd„Zdd„Zef	 	 	 	 	 	 	 dd„Zy)é    )ÚannotationsNé   )ÚHeaders)ÚInvalidProxy)Úbuild_authorization_basicÚ
build_host)Ú
USER_AGENT)ÚDELIMSÚWebSocketURI)Ú	get_proxyÚparse_proxyÚProxyc                  ó^   — e Zd ZU dZded<   ded<   ded<   dZded	<   dZded
<   edd„«       Zy)r   að  
    Proxy address.

    Attributes:
        scheme: ``"socks5h"``, ``"socks5"``, ``"socks4a"``, ``"socks4"``,
            ``"https"``, or ``"http"``.
        host: Normalized to lower case.
        port: Always set even if it's the default.
        username: Available when the proxy address contains `User Information`_.
        password: Available when the proxy address contains `User Information`_.

    .. _User Information: https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.1

    ÚstrÚschemeÚhostÚintÚportNú
str | NoneÚusernameÚpasswordc                óh   — | j                   €y | j                  €J ‚| j                   | j                  fS )N)r   r   )Úselfs    úg/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/websockets/proxy.pyÚ	user_infozProxy.user_info(   s2   € à�=‰=Ð ØØ�}‰}Ð(Ð(Ð(Ø—‘˜tŸ}™}Ð-Ð-ó    )Úreturnztuple[str, str] | None)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   Úpropertyr   © r   r   r   r      s>   … ñð ƒKØ
ƒIØ
ƒIØ€HˆjÓØ€HˆjÓàò.ó ñ.r   r   c                ó`  — t         j                  j                  | «      }|j                  dvrt	        | d|j                  › d�«      ‚|j
                  €t	        | d«      ‚|j                  dvrt	        | d«      ‚|j                  dk7  rt	        | d«      ‚|j                  dk7  rt	        | d	«      ‚|j                  }|j
                  }|j                  xs |j                  d
k(  rdnd}|j                  }|j                  }|�|€t	        | d«      ‚	 | j                  d«       t#        |||||«      S # t        $ rr |j                  d«      j                  «       }|�N|€J ‚t         j                  j                  |t         ¬«      }t         j                  j                  |t         ¬«      }Y Œ‰w xY w)z°
    Parse and validate a proxy.

    Args:
        proxy: proxy.

    Returns:
        Parsed proxy.

    Raises:
        InvalidProxy: If ``proxy`` isn't a valid proxy.

    )Úsocks5hÚsocks5Úsocks4aÚsocks4ÚhttpsÚhttpzscheme z isn't supportedzhostname isn't provided)Ú ú/zpath is meaninglessr,   zquery is meaninglesszfragment is meaninglessr*   i»  éP   z"username provided without passwordÚasciiÚidna)Úsafe)ÚurllibÚparseÚurlparser   r   ÚhostnameÚpathÚqueryÚfragmentr   r   r   ÚencodeÚUnicodeEncodeErrorÚdecodeÚquoter
   r   )ÚproxyÚparsedr   r   r   r   r   s          r   r   r   0   s˜  € ô �\‰\×"Ñ" 5Ó)€FØ‡}�}ÐWÑWÜ˜5 G¨F¯M©M¨?Ð:JÐ"KÓLÐLØ‡�ÐÜ˜5Ð";Ó<Ð<Ø‡{�{˜)Ñ#Ü˜5Ð"7Ó8Ð8Ø‡|�|�rÒÜ˜5Ð"8Ó9Ð9Ø‡�˜"ÒÜ˜5Ð";Ó<Ð<à�]‰]€FØ�?‰?€DØ�;‰;ÒC &§-¡-°7Ò":™3À€DØ�‰€HØ�‰€Hð Ð Ð 0Ü˜5Ð"FÓGÐGð	AØ�‰�WÔô �˜˜t X¨xÓ8Ð8øô ò Að �{‰{˜6Ó"×)Ñ)Ó+ˆØÐØÐ'Ð'Ð'Ü—|‘|×)Ñ)¨(¼Ð)Ó@ˆHÜ—|‘|×)Ñ)¨(¼Ð)Ó@ˆHùðAús   ÄD2 Ä2A8F-Æ,F-c                óT  — t         j                  j                  | j                  › d| j                  › �«      ryt         j                  j                  «       }| j                  rg d¢}ng d¢}|D ]7  }|j                  |«      }|€Œ|dk(  r|j                  d«      rd|dd z   }|c S  y)	zU
    Return the proxy to use for connecting to the given WebSocket URI, if any.

    ú:N)ÚwssÚsocksr*   )ÚwsrB   r*   r+   rB   zhttp://z
socks5h://é   )	r2   ÚrequestÚproxy_bypassr   r   Ú
getproxiesÚsecureÚgetÚ
startswith)ÚuriÚproxiesÚschemesr   r=   s        r   r   r   b   s£   € ô
 ‡~�~×"Ñ" c§h¡h Z¨q°·±°
Ð#;Ô<Øô �n‰n×'Ñ'Ó)€GØ
‡z‚zÚ+‰â2ˆàò ˆØ—‘˜FÓ#ˆØÑØ˜Ò  U×%5Ñ%5°iÔ%@Ø$ u¨Q¨R yÑ0�ØŠLðð r   c                óž  — t        |j                  |j                  |j                  d¬«      }t	        «       }t        |j                  |j                  |j                  «      |d<   |�||d<   | j
                  �1| j                  €J ‚t        | j
                  | j                  «      |d<   d|› d�j                  «       |j                  «       z   S )NT)Úalways_include_portÚHostz
User-AgentzProxy-AuthorizationzCONNECT z HTTP/1.1
)
r   r   r   rH   r   r   r   r   r9   Ú	serialize)r=   Úws_uriÚuser_agent_headerr   Úheaderss        r   Úprepare_connect_requestrU   †   sµ   € ô
 �f—k‘k 6§;¡;°·±ÐSWÔX€DÜ‹i€GÜ  §¡¨f¯k©k¸6¿=¹=ÓI€GˆF�OØÐ$Ø 1ˆ�ÑØ‡~�~Ð!Ø�~‰~Ð)Ð)Ð)Ü)BØ�N‰N˜EŸN™Nó*
ˆÐ%Ñ&ð �d�V˜=Ð)×0Ñ0Ó2°W×5FÑ5FÓ5HÑHÐHr   )r=   r   r   r   )rK   r   r   r   )r=   r   rR   r   rS   r   r   Úbytes)Ú
__future__r   ÚdataclassesÚurllib.parser2   Úurllib.requestÚdatastructuresr   Ú
exceptionsr   rT   r   r   Úhttp11r	   rK   r
   r   Ú__all__Ú	dataclassr   r   r   rU   r$   r   r   ú<module>r`      s…   ðÝ "ã Û Û å #Ý $ß :Ý ß %ò 0€ð ×Ñ÷.ð .ó ð.ó</9ód!ðN %/ðIØðIàðIð "ðIð ô	Ir   