+
    ~jNE              
        a 0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
Ht ^RIHtHt ^RIHtHt RtRtRtRtR.t]]]]]]3,          tR- U Uu/ uF  w  rV ]! ]VR4      bK  	  upp tR R	 lt]P<                  '       d    ^ R
IH t  ^ RIH!t! ^RI"Ht#  ! R R]!RR7      t$/ t%R]&R&    ^ RIt^ RIH't'HtH(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0HtH1t1 ]+t2]'       d   ]! ]*4      '       g   RtR. F  t3 ]! ]1]34      ]%]! ]R]3 24      &   K  	  ^RI"Ht ]Pl                  R]7R3,          t8R R lt9R R lt:R R lt;R/R R  llt<]Pz                  R0R! R" ll4       t>]Pz                  R0R# R$ ll4       t>R1R% R& llt>R' R( lt?R) R* lt@R2R+ R, lltAR# u upp i   ]4 d     K  i ; i  ]5 d    Rt(Rt)Rt/Rt0^;t2t+^t,Rt-^ t. Li ; i)3    )annotationsN)	unhexlify)ProxySchemeUnsupportedSSLError)_BRACELESS_IPV6_ADDRZ_RE_IPV4_REFzhttp/1.1c                    V ^8  d   QhRRRR/# )   openssl_versionstrreturnbool )formats   "f/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/urllib3/util/ssl_.py__annotate__r      s      	    c                (    V P                  R 4      pV# )zOpenSSL )
startswith)r   
is_openssls   & r   (_is_has_never_check_common_name_reliabler      s    
 !++J7Jr   )
VerifyMode)	TypedDict)SSLTransportc                  6    ] tR t^.t$ R]R&   R]R&   R]R&   RtR# )	_TYPE_PEER_CERT_RET_DICTztuple[tuple[str, str], ...]subjectAltNamez'tuple[tuple[tuple[str, str], ...], ...]subjectr   serialNumberr   N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r   r   r   r   r   .   s    3388r   r   )totalzdict[int, int]_SSL_VERSION_TO_TLS_VERSION)CERT_REQUIREDHAS_NEVER_CHECK_COMMON_NAMEOP_NO_COMPRESSIONOP_NO_TICKETOPENSSL_VERSIONPROTOCOL_TLSPROTOCOL_TLS_CLIENTVERIFY_X509_PARTIAL_CHAINVERIFY_X509_STRICTOP_NO_SSLv2OP_NO_SSLv3
SSLContext
TLSVersion	PROTOCOL_i   i @  i   i   i   c               $    V ^8  d   QhRRRRRR/# )r
   certzbytes | Nonefingerprintr   r   Noner   )r   s   "r   r   r   k   s!     
 
\ 
 
 
r   c                   V f   \        R4      hVP                  RR4      P                  4       p\        V4      pV\        9  d   \        RV 24      h\        P                  V4      pVf   \        RV 24      h\        VP                  4       4      pV! V 4      P                  4       p\        P                  ! WT4      '       g!   \        RV RVP                  4        R	24      hR# )
z
Checks if given fingerprint matches the supplied certificate.

:param cert:
    Certificate as bytes object.
:param fingerprint:
    Fingerprint as string of hexdigits, can be interspersed by colons.
NzNo certificate for the peer.: zFingerprint of invalid length: zAHash function implementation unavailable for fingerprint length: z&Fingerprints did not match. Expected "z", got "")r   replacelowerlenHASHFUNC_MAPgetr   encodedigesthmaccompare_digesthex)r7   r8   digest_lengthhashfuncfingerprint_bytescert_digests   &&    r   assert_fingerprintrL   k   s     |566%%c2.446K$ML(8FGG.HOP]_
 	

 "+"4"4"674.'')K{>>4[M+//J[I\\]^
 	
 ?r   c                    V ^8  d   QhRRRR/# )r
   	candidateNone | int | strr   r   r   )r   s   "r   r   r      s      !1 j r   c                    V f   \         # \        V \        4      '       d/   \        \        V R4      pVf   \        \        RV ,           4      pV# V # )a  
Resolves the argument to a numeric constant, which can be passed to
the wrap_socket function/method from the ssl module.
Defaults to :data:`ssl.CERT_REQUIRED`.
If given a string it is assumed to be the name of the constant in the
:mod:`ssl` module or its abbreviation.
(So you can specify `REQUIRED` instead of `CERT_REQUIRED`.
If it's neither `None` nor a string we assume it is already the numeric
constant which can directly be passed to wrap_socket.
NCERT_)r(   
isinstancer   getattrsslrN   ress   & r   resolve_cert_reqsrW      sL     )S!!c9d+;#w23C
r   c                    V ^8  d   QhRRRR/# )r
   rN   rO   r   intr   )r   s   "r   r   r      s      #3  r   c                    V f   \         # \        V \        4      '       dH   \        \        V R4      pVf   \        \        RV ,           4      p\
        P                  ! \        V4      # V # )z
like resolve_cert_reqs
Nr5   )r-   rR   r   rS   rT   typingcastrY   rU   s   & r   resolve_ssl_versionr]      sX     )S!!c9d+;#{Y67C{{3$$r   c               8    V ^8  d   QhRRRRRRRRRRRRR	RR
R/# )r
   ssl_version
int | None	cert_reqsoptionsciphers
str | Nonessl_minimum_versionssl_maximum_versionverify_flagsr   ssl.SSLContextr   )r   s   "r   r   r      sb     P PPP P 	P
 $P $P P Pr   c                   \         f   \        R4      hV R\        \        39  dy   Vf   Ve   \	        R4      h\
        P                  V \        P                  4      p\
        P                  V \        P                  4      p\        P                  ! R\        ^R7       \        \        4      pVe   WGn        M\        P                  Vn        Ve   WWn        V'       d   VP!                  V4       Vf   \"        P$                  MTpVf7   ^ pV\&        ,          pV\(        ,          pV\*        ,          pV\,        ,          pV;P.                  V,          un        Vf2   ^ p\0        P2                  R
8  d   V\4        ,          pV\6        ,          pV;P8                  V,          un        \;        VRR4      e   RVn        V\"        P$                  8X  d   \>        '       g   Wn         RVn!        MRVn!        Wn         RVn"        R	\F        PH                  9   d>   \F        PJ                  PM                  \F        PH                  P                  R	4      4      pMRpV'       d   Wn'        V# )a  Creates and configures an :class:`ssl.SSLContext` instance for use with urllib3.

:param ssl_version:
    The desired protocol version to use. This will default to
    PROTOCOL_SSLv23 which will negotiate the highest protocol that both
    the server and your installation of OpenSSL support.

    This parameter is deprecated instead use 'ssl_minimum_version'.
:param ssl_minimum_version:
    The minimum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value.
:param ssl_maximum_version:
    The maximum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value.
    Not recommended to set to anything other than 'ssl.TLSVersion.MAXIMUM_SUPPORTED' which is the
    default value.
:param cert_reqs:
    Whether to require the certificate verification. This defaults to
    ``ssl.CERT_REQUIRED``.
:param options:
    Specific OpenSSL options. These default to ``ssl.OP_NO_SSLv2``,
    ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION``, and ``ssl.OP_NO_TICKET``.
:param ciphers:
    Which cipher suites to allow the server to select. Defaults to either system configured
    ciphers if OpenSSL 1.1.1+, otherwise uses a secure default set of ciphers.
:param verify_flags:
    The flags for certificate verification operations. These default to
    ``ssl.VERIFY_X509_PARTIAL_CHAIN`` and ``ssl.VERIFY_X509_STRICT`` for Python 3.13+.
:returns:
    Constructed SSLContext object with specified options
:rtype: SSLContext
Nz7Can't create an SSLContext object without an ssl modulezZCan't specify both 'ssl_version' and either 'ssl_minimum_version' or 'ssl_maximum_version'zi'ssl_version' option is deprecated and will be removed in urllib3 v3.0. Instead use 'ssl_minimum_version')category
stacklevelpost_handshake_authTFSSLKEYLOGFILE)      )(r3   	TypeErrorr-   r.   
ValueErrorr'   rB   r4   MINIMUM_SUPPORTEDMAXIMUM_SUPPORTEDwarningswarnFutureWarningminimum_versionTLSv1_2maximum_versionset_ciphersrT   r(   r1   r2   r*   r+   rb   sysversion_infor/   r0   rg   rS   rl   IS_PYOPENSSLverify_modecheck_hostnamehostname_checks_common_nameosenvironpath
expandvarskeylog_filename)	r_   ra   rb   rc   re   rf   rg   contextsslkeylogfiles	   &&&&&&&  r   create_urllib3_contextr      s   N QRR 4/BCC *.A.MA  #>"A"AZ99# #>"A"AZ99# MMM&	 ,-G&"5","4"4&"5 G$ &/%6!!II;; 	$$
 	<OOwO w&55L..LL( w-t4@&*# C%%%ll'!%!&'*/G'"**$**2::>>/+JK"/Nr   c               P    V ^8  d   QhRRRRRRRRRRR	RR
RRRRRRRRRRRRRRR/# )r
   socksocket.socketkeyfilerd   certfilera   r`   ca_certsserver_hostnamer_   rc   ssl_contextssl.SSLContext | Noneca_cert_dirkey_passwordca_cert_dataNone | str | bytes
tls_in_tlsztyping.Literal[False]r   zssl.SSLSocketr   )r   s   "r   r   r   H  s      
  	
      '   % & r   c                    R # Nr   r   r   r   ra   r   r   r_   rc   r   r   r   r   r   s   &&&&&&&&&&&&&r   ssl_wrap_socketr   G  s     r   c               P    V ^8  d   QhRRRRRRRRRRR	RR
RRRRRRRRRRRRRRR/# r
   r   r   r   rd   r   ra   r`   r   r   r_   rc   r   r   r   r   r   r   r   r   r    ssl.SSLSocket | SSLTransportTyper   )r   s   "r   r   r   Z  s     + +
++ + 	+
 +  + + + '+ + + %+ + &+r   c                    R # r   r   r   s   &&&&&&&&&&&&&r   r   r   Y  s     (+r   c               P    V ^8  d   QhRRRRRRRRRRR	RR
RRRRRRRRRRRRRRR/# r   r   )r   s   "r   r   r   k  s     G G
GG G 	G
 G  G G G 'G G G %G G &Gr   c                    TpVf   \        WcVR7      pV'       g   V	'       g	   V'       d    VP                  WIV4       M&Vf#   \	        VR4      '       d   VP                  4        V'       d!   V
f   \        V4      '       d   \        R4      hV'       d)   V
f   VP                  W!4       MVP                  W!V
4       VP                  \        4       \        WW4      pV#   \         d   p\        T4      ThRp?ii ; i)aX  
All arguments except for server_hostname, ssl_context, tls_in_tls, ca_cert_data and
ca_cert_dir have the same meaning as they do when using
:func:`ssl.create_default_context`, :meth:`ssl.SSLContext.load_cert_chain`,
:meth:`ssl.SSLContext.set_ciphers` and :meth:`ssl.SSLContext.wrap_socket`.

:param server_hostname:
    When SNI is supported, the expected hostname of the certificate
:param ssl_context:
    A pre-made :class:`SSLContext` object. If none is provided, one will
    be created using :func:`create_urllib3_context`.
:param ciphers:
    A string of ciphers we wish the client to support.
:param ca_cert_dir:
    A directory containing CA certificates in multiple separate files, as
    supported by OpenSSL's -CApath flag or the capath argument to
    SSLContext.load_verify_locations().
:param key_password:
    Optional password if the keyfile is encrypted.
:param ca_cert_data:
    Optional string containing CA certificates in PEM format suitable for
    passing as the cadata parameter to SSLContext.load_verify_locations()
:param tls_in_tls:
    Use SSLTransport to wrap the existing socket.
N)rc   load_default_certsz5Client private key is encrypted, password is required)r   load_verify_locationsOSErrorr   hasattrr   _is_key_file_encryptedload_cert_chainset_alpn_protocolsALPN_PROTOCOLS_ssl_wrap_socket_impl)r   r   r   ra   r   r   r_   rc   r   r   r   r   r   r   essl_socks   &&&&&&&&&&&&&   r   r   r   k  s    P G )Q;,	%))(N 
	2F!G!G""$
 <',B7,K,KNOO##H6##H|D~.$TJPHO-  	%1+1$	%s   C! !C=,C88C=c                    V ^8  d   QhRRRR/# )r
   hostnamezstr | bytesr   r   r   )r   s   "r   r   r     s     
V 
V; 
V4 
Vr   c                    \        V \        4      '       d   V P                  R4      p \        \        P
                  ! V 4      ;'       g    \        P
                  ! V 4      4      # )zDetects whether the hostname given is an IPv4 or IPv6 address.
Also detects IPv6 addresses with Zone IDs.

:param str hostname: Hostname to examine.
:return: True if the hostname is an IP address, False otherwise.
ascii)rR   bytesdecoder   r   matchr   )r   s   &r   is_ipaddressr     sG     (E""??7+x(TT,D,J,J8,TUUr   c                    V ^8  d   QhRRRR/# )r
   key_filer   r   r   r   )r   s   "r   r   r     s      S T r   c                    \        V 4      ;_uu_ 4       pV F  pRV9   g   K   RRR4       R# 	  RRR4       R#   + '       g   i     R# ; i)z*Detects if a key file is encrypted or not.	ENCRYPTEDNTF)open)r   flines   &  r   r   r     s>    	h1Dd"	 
 
  
 s   
:::A	c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r
   r   r   r   rh   r   r   r   rd   r   r   r   )r   s   "r   r   r     sA     J J
JJ J  	J
 &Jr   c                    V'       d:   \         '       g   \        R 4      h\         P                  ! V4       \        WV4      # VP                  WR7      # )z0TLS in TLS requires support for the 'ssl' module)r   )r   r   $_validate_ssl_context_for_tls_in_tlswrap_socket)r   r   r   r   s   &&&&r   r   r     sM     |(B  	99+FD??""4"IIr   ))    md5)(   sha1)@   sha256)TLSv1TLSv1_1rx   )NNNNNNN)............)NNNNNNNNNNNFr   )B__conditional_annotations__
__future__r   hashlibrE   r   socketr{   r[   rt   binasciir   
exceptionsr   r   urlr   r   r3   r   r)   r}   r   tuplerY   r   _TYPE_VERSION_INFOrS   rA   r   TYPE_CHECKINGrT   r   r   ssltransportSSLTransportTyper   r'   r$   r(   r*   r+   r,   r-   r.   r/   r0   r1   r2   r4   PROTOCOL_SSLv23attrAttributeErrorImportErrorUnionr   _TYPE_PEER_CERT_RETrL   rW   r]   r   overloadr   r   r   r   )length	algorithmr   s   00@r   <module>r      s   " "   	  
    9 3
# 3S#s23 
 IH GGY--H 
 >9E  /1 ^ 0.     #O #+S, , ',# 0	LSDM'y5G(HI 0 + ll#=ud#JK 
D. Pf  " + +"GT
VJ JkB  		  LKK%&&Ol 'sH   F4+F&  F& .F& 6F
F& F#F& "F##F& &GG