ó
    Ð]jNE  ã            
      ó„  • % S SK Jr  S SKrS SKrS SKrS SKrS SKr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Jr  SrSrSrSrS	/r\\\\\\4   rS
 V Vs0 s H  u  pU \" \US5      _M     snn r    S(S jr\R:                  (       a  S SKJr  S SKJ r   SSK!Jr"   " S S\ SS9r#0 r$S\%S'    S SKrS SKJ&r&JrJ'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/JrJ0r0  \*r1\(       a  \" \)5      (       d  SrS H  r2 \" \0\25      \$\" \S\2 35      '   M     SSK!Jr  \Rj                  S\6S4   r7S)S jr8S*S jr9S+S  jr:       S,               S-S! jjr;\Rx                              S.                           S/S" jj5       r=\Rx                              S.                           S0S# jj5       r=            S1                           S0S$ jjr=S2S% jr>S3S& jr? S4         S5S' jjr@gs  snn f ! \3 a     GM6  f = f! \4 a    Sr'Sr(Sr.Sr/S=r1r*Sr+Sr,Sr- GN1f = f)6é    )ÚannotationsN)Ú	unhexlifyé   )ÚProxySchemeUnsupportedÚSSLErroré   )Ú_BRACELESS_IPV6_ADDRZ_REÚ_IPV4_REFzhttp/1.1))é    Úmd5)é(   Úsha1)é@   Úsha256c                ó(   • U R                  S5      nU$ )NzOpenSSL )Ú
startswith)Úopenssl_versionÚ
is_openssls     ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/urllib3/util/ssl_.pyÚ(_is_has_never_check_common_name_reliabler      s   € ð
 !×+Ñ+¨JÓ7€JàÐó    )Ú
VerifyMode)Ú	TypedDict)ÚSSLTransportc                  ó4   • \ rS rSr% S\S'   S\S'   S\S'   Srg	)
Ú_TYPE_PEER_CERT_RET_DICTé.   ztuple[tuple[str, str], ...]ÚsubjectAltNamez'tuple[tuple[tuple[str, str], ...], ...]ÚsubjectÚstrÚserialNumber© 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)ÚTLSv1ÚTLSv1_1ÚTLSv1_2Ú	PROTOCOL_i   i @  i   i   é   i   r   c                óÆ  • U c  [        S5      eUR                  SS5      R                  5       n[        U5      nU[        ;  a  [        SU 35      e[        R                  U5      nUc  [        SU 35      e[        UR                  5       5      nU" U 5      R                  5       n[        R                  " XT5      (       d   [        SU SUR                  5        S	35      eg)
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)ÚcertÚfingerprintÚdigest_lengthÚhashfuncÚfingerprint_bytesÚcert_digests         r   Úassert_fingerprintrQ   k   sé   € ð �|ÜÐ5Ó6Ð6à×%Ñ% c¨2Ó.×4Ñ4Ó6€KÜ˜Ó$€MØœLÓ(ÜÐ8¸¸ÐFÓGÐGÜ×Ñ Ó.€HØÑÜØOÐP]ÈÐ_ó
ð 	
ô
 " +×"4Ñ"4Ó"6Ó7Ðá˜4“.×'Ñ'Ó)€Kä×Ò˜{×>Ñ>ÜØ4°[°MÀÈ+Ï/É/ÓJ[ÐI\Ð\]Ð^ó
ð 	
ð ?r   c                ó”   • U c  [         $ [        U [        5      (       a)  [        [        U S5      nUc  [        [        SU -   5      nU$ U $ )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©Ú	candidateÚress     r   Úresolve_cert_reqsrZ   �   sL   € ð ÑÜÐä�)œS×!Ñ!Ü”c˜9 dÓ+ˆØ‰;Üœ#˜w¨Ñ2Ó3ˆCØˆ
àÐr   c                óÆ   • U c  [         $ [        U [        5      (       aB  [        [        U S5      nUc  [        [        SU -   5      n[
        R                  " [        U5      $ U $ )z
like resolve_cert_reqs
Nr;   )r0   rT   r    rU   rV   ÚtypingÚcastÚintrW   s     r   Úresolve_ssl_versionr_   ¤   sX   € ð ÑÜÐä�)œS×!Ñ!Ü”c˜9 dÓ+ˆØ‰;Üœ#˜{¨YÑ6Ó7ˆCÜ�{Š{œ3 Ó$Ð$àÐr   c                ób  • [         c  [        S5      eU S[        [        4;  as  Uc  Ub  [	        S5      e[
        R                  U [        R                  5      n[
        R                  U [        R                  5      n[        R                  " S[        SS9  [        [        5      nUb  XGl        O[        R                  Ul        Ub  XWl        U(       a  UR!                  U5        Uc  ["        R$                  OUnUc&  SnU[&        -  nU[(        -  nU[*        -  nU[,        -  nU=R.                  U-  sl        Uc(  Sn[0        R2                  S:¼  a  U[4        -  nU[6        -  nU=R8                  U-  sl        [;        US	S5      b  S
Ul        U["        R$                  :X  a  [>        (       d  Xl         S
Ul!        OSUl!        Xl         SUl"        S[F        RH                  ;   a=  [F        RJ                  RM                  [F        RH                  R                  S5      5      nOSnU(       a  X‡l'        U$ )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'r   )ÚcategoryÚ
stacklevelr   )é   é   Úpost_handshake_authTFÚSSLKEYLOGFILE)(r6   Ú	TypeErrorr0   r1   Ú
ValueErrorr*   rE   r7   ÚMINIMUM_SUPPORTEDÚMAXIMUM_SUPPORTEDÚwarningsÚwarnÚFutureWarningÚminimum_versionr:   Úmaximum_versionÚset_ciphersrV   r+   r4   r5   r-   r.   ÚoptionsÚsysÚversion_infor2   r3   Úverify_flagsrU   re   ÚIS_PYOPENSSLÚverify_modeÚcheck_hostnameÚhostname_checks_common_nameÚosÚenvironÚpathÚ
expandvarsÚkeylog_filename)	Ússl_versionÚ	cert_reqsrq   ÚciphersÚssl_minimum_versionÚssl_maximum_versionrt   Ú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ó#Ðô �MŠMðMä&Øò	ô Ô,Ó-€GØÑ&Ø"5Õä",×"4Ñ"4ˆÔàÑ&Ø"5Ôö Ø×Ñ˜GÔ$ð &/Ñ%6”×!Ò!¸I€Ià�Øˆà”;Ñˆà”;Ñˆð 	Ô$Ñ$ˆð
 	”<Ñˆà‡O‚O�wÑ…OàÑØˆô ×Ñ˜wÓ&ØÔ5Ñ5ˆLØÔ.Ñ.ˆLà×Ò˜LÑ(Õô ˆwÐ-¨tÓ4Ñ@Ø&*ˆÔ#ð ”C×%Ñ%Ó%¯lªlØ'ÔØ!%ˆÕà!&ˆÔØ'Ôà*/€GÔ'àœ"Ÿ*™*Ó$ÜŸ™×*Ñ*¬2¯:©:¯>©>¸/Ó+JÓK‰àˆÞØ"/Ôà€Nr   c                ó   • g ©Nr"   ©ÚsockÚkeyfileÚcertfiler   Úca_certsÚserver_hostnamer~   r€   Ússl_contextÚca_cert_dirÚkey_passwordÚca_cert_dataÚ
tls_in_tlss                r   Ússl_wrap_socketr“   G  s   € ð r   c                ó   • g r‡   r"   rˆ   s                r   r“   r“   Y  s   € ð (+r   c                óâ  • UnUc
  [        XcUS9nU(       d  U	(       d  U(       a   UR                  XIU5        O$Uc!  [	        US5      (       a  UR                  5         U(       a  U
c  [        U5      (       a  [        S5      eU(       a'  U
c  UR                  X!5        OUR                  X!U
5        UR                  [        5        [        XXÅ5      nU$ ! [         a  n[        U5      UeSnAff = f)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)r€   Ú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‹   r   rŒ   r�   r~   r€   rŽ   r�   r�   r‘   r’   rƒ   ÚeÚssl_socks                   r   r“   r“   k  sß   € ðP €GØ�ô )¨ÈÑQˆæ–;¦,ð	%Ø×)Ñ)¨(ÀÕNð 
Ñ	¤¨Ð2F×!GÑ!Gà×"Ñ"Ô$ö
 �<Ñ'Ô,BÀ7×,KÑ,KÜÐNÓOÐOæØÑØ×#Ñ# HÕ6à×#Ñ# H°|ÔDà×Ñœ~Ô.ä$ T°JÓP€HØ€Oøô- ó 	%Ü˜1“+ 1Ð$ûð	%ús   ¦C Ã
C.ÃC)Ã)C.c                óÆ   • [        U [        5      (       a  U R                  S5      n [        [        R
                  " U 5      =(       d    [        R
                  " U 5      5      $ )zÖDetects 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)rT   ÚbytesÚdecodeÚboolr
   Úmatchr	   )Úhostnames    r   Úis_ipaddressr¨   µ  sD   € ô �(œE×"Ñ"à—?‘? 7Ó+ˆÜ”—’˜xÓ(×TÔ,D×,JÒ,JÈ8Ó,TÓUÐUr   c                ó€   • [        U 5       nU H  nSU;   d  M    SSS5        g   SSS5        g! , (       d  f       g= f)z*Detects if a key file is encrypted or not.Ú	ENCRYPTEDNTF)Úopen)Úkey_fileÚfÚlines      r   rš   rš   Â  s<   € ä	ˆhŒ˜1ÛˆDà˜dÕ"Ø÷	 
ˆÙ÷ 
ð ÷ 
Œð ús   Œ
/š/¤/¯
=c                óž   • U(       a8  [         (       d  [        S5      e[         R                  " U5        [        XU5      $ UR                  XS9$ )Nz0TLS 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   )r   r    Úreturnr¥   )rK   zbytes | NonerL   r    r²   ÚNone)rX   úNone | int | strr²   r   )rX   r´   r²   r^   )NNNNNNN)r~   ú
int | Noner   rµ   rq   rµ   r€   ú
str | Noner�   rµ   r‚   rµ   rt   rµ   r²   ússl.SSLContext)............)r‰   úsocket.socketrŠ   r¶   r‹   r¶   r   rµ   rŒ   r¶   r�   r¶   r~   rµ   r€   r¶   rŽ   ússl.SSLContext | Noner�   r¶   r�   r¶   r‘   úNone | str | bytesr’   ztyping.Literal[False]r²   zssl.SSLSocket)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²   ú ssl.SSLSocket | SSLTransportType)NNNNNNNNNNNF)r§   zstr | bytesr²   r¥   )r¬   r    r²   r¥   r‡   )
r‰   r¸   rŽ   r·   r’   r¥   r�   r¶   r²   r»   )AÚ
__future__r   ÚhashlibrH   ry   Úsocketrr   r\   rk   Úbinasciir   Ú
exceptionsr   r   Úurlr	   r
   r6   r   r,   ru   r�   Útupler^   r    Ú_TYPE_VERSION_INFOrU   rD   r   ÚTYPE_CHECKINGrV   r   r   ÚssltransportÚSSLTransportTyper   r*   r'   r+   r-   r.   r/   r0   r1   r2   r3   r4   r5   r7   ÚPROTOCOL_SSLv23ÚattrÚAttributeErrorÚImportErrorÚUnionr£   Ú_TYPE_PEER_CERT_RETrQ   rZ   r_   r…   Úoverloadr“   r¨   rš   rž   )ÚlengthÚ	algorithms   00r   Ú<module>rÐ      sÖ  ðÞ "ã Û Û 	Û Û 
Û Û Ý ç 9ß 3à€
Ø€Ø#Ð Ø€Ø�€à˜3  S¨#¨sÐ2Ñ3Ð ñ
 IôâHÑˆð ‰G�G˜Y¨Ó-Ò-ÙHò€ðØðà	ôð 
××ÝÝ å>ô 9°Eò ð /1Ð ˜^Ó 0ð.Û÷÷ ÷ õ ð  #€Oö #Ñ+SØ÷,ñ ,ð ',Ð#ó 0ˆð	ÙLSØ˜DóMÐ'©°°yÀÀÐ5GÓ(HÓIñ 0õ +ð —l‘lÐ#=¸uÀdÐ#JÑKÐ ô
ôDô.ð" #Ø ØØØ&*Ø&*Ø#ðPØðPàðPð ðPð ð	Pð
 $ðPð $ðPð ðPð õPðf ‡�ð ØØØØ"%Ø!ØØ),Ø!Ø"Ø'*Ø(+ðØ
ðàðð ðð ð	ð
 ðð  ðð ðð ðð 'ðð ðð ðð %ðð &ðð ôó ðð" ‡�ð ØØØØ"%Ø!ØØ),Ø!Ø"Ø'*Øð+Ø
ð+àð+ð ð+ð ð	+ð
 ð+ð  ð+ð ð+ð ð+ð 'ð+ð ð+ð ð+ð %ð+ð ð+ð &ô+ó ð+ð& ØØ ØØ"&Ø"ØØ)-Ø"Ø#Ø'+ØðGØ
ðGàðGð ðGð ð	Gð
 ðGð  ðGð ðGð ðGð 'ðGð ðGð ðGð %ðGð ðGð &õGôT
Vôð #'ð	JØ
ðJàðJð ðJð  ð	Jð
 &öJùókøðB ó 	Ûð	ûð ó ØÐØ€LØ€KØ€KØ%&Ð&€O�lØÐØ 'ÐØÓðús<   ÁHÂ-?H# Ã-HÄ
H# ÈH ÈH# ÈH È H# È#H?È>H?