ó
    äd8h8  ã                  óÆ  • S SK Jr  S SKrS SKrS SKrS SKrSSKJrJr  SSK	J
r
  SSKJrJrJrJrJrJrJr  SSKJr  SSKJr  SS	KJr  S
SKJr  S
SKJr  S
SKJr  S
SKJ r   \RB                  \"\#4   r$\RJ                  \RL                  \$\$4      r'\RP                  \$\$4   r)\RT                  " S5      r+  S     SS jjr, " S S\5      r- " S S\ 5      r. " S S\ 5      r/g)é    )ÚannotationsNé   )ÚSOCKET_OPTIONÚNetworkBackend)Ú
ProxyError)ÚURLÚOriginÚRequestÚResponseÚenforce_bytesÚenforce_headersÚenforce_url)Údefault_ssl_context)ÚLock)ÚTraceé   )ÚHTTPConnection)ÚConnectionPool)ÚHTTP11Connection)ÚConnectionInterfacezhttpcore.proxyc                óÔ   • U c  / O
[        U 5      n Uc  / O
[        U5      n[        S U 5       5      nU  VVs/ s H  u  p4UR                  5       U;  d  M  X44PM      n nnX-   $ s  snnf )z\
Append default_headers and override_headers, de-duplicating if a key exists
in both cases.
c              3  óF   #   • U  H  u  pUR                  5       v •  M     g 7f©N)Úlower)Ú.0ÚkeyÚvalues      Ú.Lib\site-packages\httpcore\_sync\http_proxy.pyÚ	<genexpr>Ú merge_headers.<locals>.<genexpr>-   s   é € ÐFÒ5E¡z s�s—y‘y—{�{Ò5Eùs   ‚!)ÚlistÚsetr   )Údefault_headersÚoverride_headersÚhas_overrider   r   s        r   Úmerge_headersr&   #   s   € ð ,Ñ3‘b¼¸oÓ9N€OØ-Ñ5‘r¼4Ð@PÓ;QÐÜÑFÑ5EÓFÓF€Lñ *ôâ)‰JˆCØ�9‰9‹;˜lÑ*ó 	ˆ‹Ù)ð ñ ð
 Ñ-Ð-ùós   ¸A$ÁA$c                  ó˜   ^ • \ rS rSrSr              S                               SU 4S jjjrSS jrSrU =r$ )	Ú	HTTPProxyé6   z:
A connection pool that sends requests via an HTTP proxy.
c                ó„  >• [         TU ]  UUUUU	U
UUUUUS9  [        USS9U l        U R                  R                  S:X  a  Ub  [        S5      eX@l        XPl        [        USS9U l	        UbS  [        US   S	S9n[        US
   S	S9nUS-   U-   nS[        R                  " U5      -   nSU4/U R                  -   U l	        gg)a½  
A connection pool for making HTTP requests.

Parameters:
    proxy_url: The URL to use when connecting to the proxy server.
        For example `"http://127.0.0.1:8080/"`.
    proxy_auth: Any proxy authentication as a two-tuple of
        (username, password). May be either bytes or ascii-only str.
    proxy_headers: Any HTTP headers to use for the proxy requests.
        For example `{"Proxy-Authorization": "Basic <username>:<password>"}`.
    ssl_context: An SSL context to use for verifying connections.
        If not specified, the default `httpcore.default_ssl_context()`
        will be used.
    proxy_ssl_context: The same as `ssl_context`, but for a proxy server rather than a remote origin.
    max_connections: The maximum number of concurrent HTTP connections that
        the pool should allow. Any attempt to send a request on a pool that
        would exceed this amount will block until a connection is available.
    max_keepalive_connections: The maximum number of idle HTTP connections
        that will be maintained in the pool.
    keepalive_expiry: The duration in seconds that an idle HTTP connection
        may be maintained for before being expired from the pool.
    http1: A boolean indicating if HTTP/1.1 requests should be supported
        by the connection pool. Defaults to True.
    http2: A boolean indicating if HTTP/2 requests should be supported by
        the connection pool. Defaults to False.
    retries: The maximum number of retries when trying to establish
        a connection.
    local_address: Local address to connect from. Can also be used to
        connect using a particular address family. Using
        `local_address="0.0.0.0"` will connect using an `AF_INET` address
        (IPv4), while using `local_address="::"` will connect using an
        `AF_INET6` address (IPv6).
    uds: Path to a Unix Domain Socket to use instead of TCP sockets.
    network_backend: A backend instance to use for handling network I/O.
)Ússl_contextÚmax_connectionsÚmax_keepalive_connectionsÚkeepalive_expiryÚhttp1Úhttp2Únetwork_backendÚretriesÚlocal_addressÚudsÚsocket_optionsÚ	proxy_url©Únameó   httpNzCThe `proxy_ssl_context` argument is not allowed for the http schemeÚproxy_headersr   Ú
proxy_authr   ó   :s   Basic s   Proxy-Authorization)ÚsuperÚ__init__r   Ú
_proxy_urlÚschemeÚRuntimeErrorÚ_ssl_contextÚ_proxy_ssl_contextr   Ú_proxy_headersr   Úbase64Ú	b64encode)Úselfr6   r;   r:   r+   Úproxy_ssl_contextr,   r-   r.   r/   r0   r2   r3   r4   r1   r5   ÚusernameÚpasswordÚuserpassÚauthorizationÚ	__class__s                       €r   r>   ÚHTTPProxy.__init__;   sü   ø€ ôj 	‰ÑØ#Ø+Ø&?Ø-ØØØ+ØØ'ØØ)ð 	ñ 	
ô & i°kÑBˆŒà�O‰O×"Ñ" gÓ-Ð2CÑ2OäØUóð ð (ÔØ"3ÔÜ-¨mÀ/ÑRˆÔØÑ!Ü$ Z°¡]¸ÑFˆHÜ$ Z°¡]¸ÑFˆHØ $‘¨Ñ1ˆHØ%¬×(8Ò(8¸Ó(BÑBˆMà'¨Ð7ð#à×#Ñ#ñ#$ˆDÕð "ó    c                óŒ  • UR                   S:X  aJ  [        U R                  R                  U R                  UU R
                  U R                  U R                  S9$ [        U R                  R                  U R                  UU R                  U R                  U R
                  U R                  U R                  U R                  S9	$ )Nr9   )Úproxy_originr:   Úremote_originr.   r1   rH   )	rQ   r:   rR   r+   rH   r.   r/   r0   r1   )r@   ÚForwardHTTPConnectionr?   ÚoriginrD   Ú_keepalive_expiryÚ_network_backendrC   ÚTunnelHTTPConnectionrB   Ú_http1Ú_http2©rG   rT   s     r   Úcreate_connectionÚHTTPProxy.create_connection’   s©   € Ø�=‰=˜GÓ#Ü(Ø!Ÿ_™_×3Ñ3Ø"×1Ñ1Ø$Ø!%×!7Ñ!7Ø $× 5Ñ 5Ø"&×"9Ñ"9ñð ô $ØŸ™×/Ñ/Ø×-Ñ-Ø Ø×)Ñ)Ø"×5Ñ5Ø!×3Ñ3Ø—+‘+Ø—+‘+Ø ×1Ñ1ñ

ð 
	
rO   )rD   rC   r?   rB   )NNNNé
   NNTFr   NNNN) r6   zURL | bytes | strr;   z&tuple[bytes | str, bytes | str] | Noner:   ú+HeadersAsMapping | HeadersAsSequence | Noner+   ússl.SSLContext | NonerH   r_   r,   ú
int | Noner-   r`   r.   úfloat | Noner/   Úboolr0   rb   r2   Úintr3   ú
str | Noner4   rd   r1   úNetworkBackend | Noner5   ú%typing.Iterable[SOCKET_OPTION] | NoneÚreturnÚNone)rT   r	   rg   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r>   r[   Ú__static_attributes__Ú__classcell__)rM   s   @r   r(   r(   6   sû   ø† ñð >BØEIØ-1Ø37Ø&(Ø04Ø)-ØØØØ$(ØØ15Ø@Dð!U$à$ðU$ð ;ðU$ð Cð	U$ð
 +ðU$ð 1ðU$ð $ðU$ð $.ðU$ð 'ðU$ð ðU$ð ðU$ð ðU$ð "ðU$ð ðU$ð /ðU$ð  >ð!U$ð" 
÷#U$ð U$÷n
ò 
rO   r(   c                  ó¤   • \ rS rSr     S               SS jjrSS jrSS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSS jrSS jrSrg)rS   é©   Nc                ó^   • [        UUUUUS9U l        Xl        [        USS9U l        X l        g )N©rT   r.   r1   r5   r+   r:   r7   )r   Ú_connectionÚ_proxy_originr   rD   Ú_remote_origin)rG   rQ   rR   r:   r.   r1   r5   rH   s           r   r>   ÚForwardHTTPConnection.__init__ª   s=   € ô *ØØ-Ø+Ø)Ø)ñ
ˆÔð *ÔÜ-¨mÀ/ÑRˆÔØ+ÕrO   c                ó„  • [        U R                  UR                  5      n[        U R                  R
                  U R                  R                  U R                  R                  [        UR                  5      S9n[        UR                  UUUR                  UR                  S9nU R                  R                  U5      $ )N©r@   ÚhostÚportÚtarget)ÚmethodÚurlÚheadersÚcontentÚ
extensions)r&   rD   r   r   ru   r@   rz   r{   Úbytesr~   r
   r}   Ústreamr�   rt   Úhandle_request)rG   Úrequestr   r~   Úproxy_requests        r   r„   Ú$ForwardHTTPConnection.handle_request¿   s�   € Ü × 3Ñ 3°W·_±_ÓEˆÜØ×%Ñ%×,Ñ,Ø×#Ñ#×(Ñ(Ø×#Ñ#×(Ñ(Ü˜Ÿ™Ó%ñ	
ˆô  Ø—>‘>ØØØ—N‘NØ×)Ñ)ñ
ˆð ×Ñ×.Ñ.¨}Ó=Ð=rO   c                ó   • XR                   :H  $ r   ©rv   rZ   s     r   Úcan_handle_requestÚ(ForwardHTTPConnection.can_handle_requestÐ   ó   € Ø×,Ñ,Ñ,Ð,rO   c                ó8   • U R                   R                  5         g r   ©rt   Úclose©rG   s    r   r�   ÚForwardHTTPConnection.closeÓ   ó   € Ø×Ñ×ÑÕ rO   c                ó6   • U R                   R                  5       $ r   ©rt   Úinfor�   s    r   r•   ÚForwardHTTPConnection.infoÖ   ó   € Ø×Ñ×$Ñ$Ó&Ð&rO   c                ó6   • U R                   R                  5       $ r   ©rt   Úis_availabler�   s    r   rš   Ú"ForwardHTTPConnection.is_availableÙ   ó   € Ø×Ñ×,Ñ,Ó.Ð.rO   c                ó6   • U R                   R                  5       $ r   ©rt   Úhas_expiredr�   s    r   rŸ   Ú!ForwardHTTPConnection.has_expiredÜ   ó   € Ø×Ñ×+Ñ+Ó-Ð-rO   c                ó6   • U R                   R                  5       $ r   ©rt   Úis_idler�   s    r   r¤   ÚForwardHTTPConnection.is_idleß   ó   € Ø×Ñ×'Ñ'Ó)Ð)rO   c                ó6   • U R                   R                  5       $ r   ©rt   Ú	is_closedr�   s    r   r©   ÚForwardHTTPConnection.is_closedâ   ó   € Ø×Ñ×)Ñ)Ó+Ð+rO   c                óX   • SU R                   R                   SU R                  5        S3$ ©NÚ<z [z]>©rM   ri   r•   r�   s    r   Ú__repr__ÚForwardHTTPConnection.__repr__å   ó(   € Ø�4—>‘>×*Ñ*Ð+¨2¨d¯i©i«k¨]¸"Ð=Ð=rO   )rt   rD   ru   rv   )NNNNN)rQ   r	   rR   r	   r:   r^   r.   ra   r1   re   r5   rf   rH   r_   rg   rh   ©r…   r
   rg   r   ©rT   r	   rg   rb   ©rg   rh   ©rg   Ústr©rg   rb   ©ri   rj   rk   rl   r>   r„   rŠ   r�   r•   rš   rŸ   r¤   r©   r°   rn   © rO   r   rS   rS   ©   s–   † ð
 FJØ)-Ø15Ø@DØ37ð,àð,ð ð,ð Cð	,ð
 'ð,ð /ð,ð >ð,ð 1ð,ð 
õ,ô*>ô"-ô!ô'ô/ô.ô*ô,÷>rO   rS   c                  ó¶   • \ rS rSr        S                     SS jjrSS jrSS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSS jrSS jrSrg)rW   éé   Nc                óÆ   • [        UUU	U
US9U l        Xl        X l        X0l        X@l        [        USS9U l        X`l        Xpl	        X€l
        [        5       U l        SU l        g )Nrs   r:   r7   F)r   rt   ru   rv   rB   rC   r   rD   rU   rX   rY   r   Ú_connect_lockÚ
_connected)rG   rQ   rR   r+   rH   r:   r.   r/   r0   r1   r5   s              r   r>   ÚTunnelHTTPConnection.__init__ê   sj   € ô 1?ØØ-Ø+Ø)Ø)ñ1
ˆÔð *ÔØ+ÔØ'ÔØ"3ÔÜ-¨mÀ/ÑRˆÔØ!1ÔØŒØŒÜ!›VˆÔØˆ�rO   c                ór  • UR                   R                  S0 5      nUR                  SS 5      nU R                     U R                  (       Gd¦  SU R                  R
                  U R                  R                  4-  n[        U R                  R                  U R                  R
                  U R                  R                  US9n[        SU4S/U R                  5      n[        SUUUR                   S9nU R                  R                  U5      nUR                  S	:  d  UR                  S
:”  ab  UR                   R                  SS5      n	U	R!                  SSS9n
SUR                  U
4-  nU R                  R#                  5         [%        U5      eUR                   S   nU R&                  c
  [)        5       OU R&                  nU R*                  (       a  SS/OS/nUR-                  U5        UU R                  R
                  R!                  S5      US.n[/        S[0        X5       nUR2                  " S0 UD6nUUl        S S S 5        UR7                  S5      nUS L=(       a    UR9                  5       S:H  nU(       d"  U R*                  (       a9  U R:                  (       d(  SSKJn  U" U R                  UU R@                  S9U l        O$[C        U R                  UU R@                  S9U l        SU l        S S S 5        U R                  R                  U5      $ ! , (       d  f       NÜ= f! , (       d  f       N:= f)NÚtimeoutÚconnects   %b:%dry   s   Host)s   Accepts   */*s   CONNECT)r}   r~   r   r�   éÈ   i+  Úreason_phraserO   ÚasciiÚignore)Úerrorsz%d %sÚnetwork_streamzhttp/1.1Úh2)r+   Úserver_hostnamerÂ   Ú	start_tlsÚ
ssl_objectr   )ÚHTTP2Connection)rT   rƒ   r.   Trº   )"r�   Úgetr¾   r¿   rv   rz   r{   r   ru   r@   r&   rD   r
   rt   r„   ÚstatusÚdecoder�   r   rB   r   rY   Úset_alpn_protocolsr   ÚloggerrÌ   Úreturn_valueÚget_extra_infoÚselected_alpn_protocolrX   r0   rÎ   rU   r   )rG   r…   ÚtimeoutsrÂ   r|   Úconnect_urlÚconnect_headersÚconnect_requestÚconnect_responseÚreason_bytesÚ
reason_strÚmsgrƒ   r+   Úalpn_protocolsÚkwargsÚtracerÍ   Úhttp2_negotiatedrÎ   s                       r   r„   Ú#TunnelHTTPConnection.handle_request	  s÷  € Ø×%Ñ%×)Ñ)¨)°RÓ8ˆØ—,‘,˜y¨$Ó/ˆà×ÓØ—?—?�?Ø! T×%8Ñ%8×%=Ñ%=¸t×?RÑ?R×?WÑ?WÐ$XÑX�ä!Ø×-Ñ-×4Ñ4Ø×+Ñ+×0Ñ0Ø×+Ñ+×0Ñ0Ø!ñ	�ô #0Ø˜vÐ&Ð(;Ð<¸d×>QÑ>Qó#�ô #*Ø%Ø#Ø+Ø&×1Ñ1ñ	#�ð $(×#3Ñ#3×#BÑ#BØ#ó$Ð ð $×*Ñ*¨SÓ0Ð4D×4KÑ4KÈcÓ4QØ#3×#>Ñ#>×#BÑ#BÀ?ÐTWÓ#X�LØ!-×!4Ñ!4°WÀXÐ!4Ð!N�JØ!Ð%5×%<Ñ%<¸jÐ$IÑI�CØ×$Ñ$×*Ñ*Ô,Ü$ S›/Ð)à)×4Ñ4Ð5EÑF�ð
 ×(Ñ(Ñ0ô (Ô)à×*Ñ*ð ð
 8<·{·{ *¨dÑ!3ÈÈ�Ø×.Ñ.¨~Ô>ð $/Ø'+×':Ñ':×'?Ñ'?×'FÑ'FÀwÓ'OØ&ñ�ô
 ˜;¬°Ô@ÀEØ#×-Ò-Ñ7°Ñ7�FØ)/�EÔ&÷ Að
 $×2Ñ2°<Ó@�
à dÐ*÷ DØ"×9Ñ9Ó;¸tÑCð !ö $¨¯¯¸D¿K¿KÝ6á'6Ø#×2Ñ2Ø%Ø)-×)?Ñ)?ñ(�DÕ$ô (8Ø#×2Ñ2Ø%Ø)-×)?Ñ)?ñ(�DÔ$ð #'�”÷S  ðT ×Ñ×.Ñ.¨wÓ7Ð7÷9 AÕ@ú÷]  Õús%   »G,L(È'LÉB3L(Ì
L%	Ì!L(Ì(
L6c                ó   • XR                   :H  $ r   r‰   rZ   s     r   rŠ   Ú'TunnelHTTPConnection.can_handle_requestY  rŒ   rO   c                ó8   • U R                   R                  5         g r   rŽ   r�   s    r   r�   ÚTunnelHTTPConnection.close\  r’   rO   c                ó6   • U R                   R                  5       $ r   r”   r�   s    r   r•   ÚTunnelHTTPConnection.info_  r—   rO   c                ó6   • U R                   R                  5       $ r   r™   r�   s    r   rš   Ú!TunnelHTTPConnection.is_availableb  rœ   rO   c                ó6   • U R                   R                  5       $ r   rž   r�   s    r   rŸ   Ú TunnelHTTPConnection.has_expirede  r¡   rO   c                ó6   • U R                   R                  5       $ r   r£   r�   s    r   r¤   ÚTunnelHTTPConnection.is_idleh  r¦   rO   c                ó6   • U R                   R                  5       $ r   r¨   r�   s    r   r©   ÚTunnelHTTPConnection.is_closedk  r«   rO   c                óX   • SU R                   R                   SU R                  5        S3$ r­   r¯   r�   s    r   r°   ÚTunnelHTTPConnection.__repr__n  r²   rO   )r¾   r¿   rt   rX   rY   rU   rD   ru   rC   rv   rB   )NNNNTFNN)rQ   r	   rR   r	   r+   r_   rH   r_   r:   ú+typing.Sequence[tuple[bytes, bytes]] | Noner.   ra   r/   rb   r0   rb   r1   re   r5   rf   rg   rh   r³   r´   rµ   r¶   r¸   r¹   rº   rO   r   rW   rW   é   s½   † ð
 .2Ø37ØEIØ)-ØØØ15Ø@Dð àð ð ð ð +ð	 ð
 1ð ð Cð ð 'ð ð ð ð ð ð /ð ð >ð ð 
õ ô>N8ô`-ô!ô'ô/ô.ô*ô,÷>rO   rW   )NN)r#   rô   r$   rô   rg   zlist[tuple[bytes, bytes]])0Ú
__future__r   rE   ÚloggingÚsslÚtypingÚ_backends.baser   r   Ú_exceptionsr   Ú_modelsr   r	   r
   r   r   r   r   Ú_sslr   Ú_synchronizationr   Ú_tracer   Ú
connectionr   Úconnection_poolr   Úhttp11r   Ú
interfacesr   ÚUnionr‚   r·   Ú	ByteOrStrÚSequenceÚTupleÚHeadersAsSequenceÚMappingÚHeadersAsMappingÚ	getLoggerrÓ   r&   r(   rS   rW   rº   rO   r   Ú<module>r     së   ðÝ "ã Û Û 
Û ç :Ý $÷÷ ñ õ 'Ý #Ý Ý &Ý +Ý $Ý +à�L‰L˜ ˜Ñ$€	Ø—O‘O F§L¡L°¸IÐ1EÑ$FÑGÐ Ø—>‘> )¨YÐ"6Ñ7Ð ð 
×	Ò	Ð+Ó	,€ð DHØDHð.Ø@ð.àAð.ð õ.ô&p
�ô p
ôf=>Ð/ô =>ô@F>Ð.õ F>rO   