ó
    &k§iÊ'  ã                   óà   • S 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
  SSKJrJrJr  SSKJr  SSKJr  S	rS
rS r " S S5      r " S S\5      r " S S\5      r " S S\5      rg)z]
requests.auth
~~~~~~~~~~~~~

This module contains the authentication handlers for Requests.
é    N)Ú	b64encodeé   )Úto_native_string)Ú
basestringÚstrÚurlparse)Úextract_cookies_to_jar)Úparse_dict_headerz!application/x-www-form-urlencodedzmultipart/form-datac           	      ó:  • [        U [        5      (       d3  [        R                  " SR	                  U 5      [
        S9  [        U 5      n [        U[        5      (       d<  [        R                  " SR	                  [        U5      5      [
        S9  [        U5      n[        U [        5      (       a  U R                  S5      n [        U[        5      (       a  UR                  S5      nS[        [        SR                  X45      5      R                  5       5      -   nU$ )zReturns a Basic Auth string.z·Non-string usernames will no longer be supported in Requests 3.0.0. Please convert the object you've passed in ({!r}) to a string or bytes object in the near future to avoid problems.)Úcategoryz·Non-string passwords will no longer be supported in Requests 3.0.0. Please convert the object you've passed in ({!r}) to a string or bytes object in the near future to avoid problems.Úlatin1zBasic ó   :)Ú
isinstancer   ÚwarningsÚwarnÚformatÚDeprecationWarningr   ÚtypeÚencoder   r   ÚjoinÚstrip)ÚusernameÚpasswordÚauthstrs      Ú//usr/lib/python3/dist-packages/requests/auth.pyÚ_basic_auth_strr      sæ   € ô �h¤
×+Ñ+Ü�Šð÷ ™˜xÓ(Ü'ò	
ô �x“=ˆä�h¤
×+Ñ+Ü�Šð÷ ™œt H›~Ó.Ü'ò	
ô �x“=ˆô �(œC× Ñ Ø—?‘? 8Ó,ˆä�(œC× Ñ Ø—?‘? 8Ó,ˆàÔ)Ü�$—)‘)˜XÐ0Ó1Ó2×8Ñ8Ó:óñ €Gð €Nó    c                   ó   • \ rS rSrSrS rSrg)ÚAuthBaseéE   z4Base class that all auth implementations derive fromc                 ó   • [        S5      e)NzAuth hooks must be callable.)ÚNotImplementedError©ÚselfÚrs     r   Ú__call__ÚAuthBase.__call__H   s   € Ü!Ð"@ÓAÐAr   © N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r&   Ú__static_attributes__r(   r   r   r   r   E   s   † Ù>õBr   r   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚHTTPBasicAuthéL   z?Attaches HTTP Basic Authentication to the given Request object.c                 ó   • Xl         X l        g ©N)r   r   ©r$   r   r   s      r   Ú__init__ÚHTTPBasicAuth.__init__O   s   € Ø ŒØ �r   c           	      ó|   • [        U R                  [        USS 5      :H  U R                  [        USS 5      :H  /5      $ ©Nr   r   ©Úallr   Úgetattrr   ©r$   Úothers     r   Ú__eq__ÚHTTPBasicAuth.__eq__S   ó>   € Üà—‘¤¨°
¸DÓ!AÑAØ—‘¤¨°
¸DÓ!AÑAðó
ð 	
r   c                 ó   • X:X  + $ r4   r(   r=   s     r   Ú__ne__ÚHTTPBasicAuth.__ne__[   ó   € ØÒ Ð r   c                 ó`   • [        U R                  U R                  5      UR                  S'   U$ )NÚAuthorization©r   r   r   Úheadersr#   s     r   r&   ÚHTTPBasicAuth.__call__^   s$   € Ü%4°T·]±]ÀDÇMÁMÓ%Rˆ�	‰	�/Ñ"Øˆr   )r   r   N)
r*   r+   r,   r-   r.   r6   r?   rC   r&   r/   r(   r   r   r1   r1   L   s   † ÙIò!ò
ò!õr   r1   c                   ó   • \ rS rSrSrS rSrg)ÚHTTPProxyAuthéc   z=Attaches HTTP Proxy Authentication to a given Request object.c                 ó`   • [        U R                  U R                  5      UR                  S'   U$ )NzProxy-AuthorizationrH   r#   s     r   r&   ÚHTTPProxyAuth.__call__f   s%   € Ü+:¸4¿=¹=È$Ï-É-Ó+Xˆ�	‰	Ð'Ñ(Øˆr   r(   Nr)   r(   r   r   rL   rL   c   s
   † ÙGõr   rL   c                   óH   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rSrg)ÚHTTPDigestAuthék   z@Attaches HTTP Digest Authentication to the given Request object.c                 óP   • Xl         X l        [        R                  " 5       U l        g r4   )r   r   Ú	threadingÚlocalÚ_thread_localr5   s      r   r6   ÚHTTPDigestAuth.__init__n   s   € Ø ŒØ Œä&Ÿ_š_Ó.ˆÕr   c                 ó  • [        U R                  S5      (       dg  SU R                  l        SU R                  l        SU R                  l        0 U R                  l        S U R                  l        S U R                  l        g g )NÚinitTÚ r   )ÚhasattrrV   rY   Ú
last_nonceÚnonce_countÚchalÚposÚnum_401_calls)r$   s    r   Úinit_per_thread_stateÚ$HTTPDigestAuth.init_per_thread_statet   sn   € ä�t×)Ñ)¨6×2Ñ2Ø&*ˆD×ÑÔ#Ø,.ˆD×ÑÔ)Ø-.ˆD×ÑÔ*Ø&(ˆD×ÑÔ#Ø%)ˆD×ÑÔ"Ø/3ˆD×ÑÕ,ð 3r   c                 ó¤  ^• U R                   R                  S   nU R                   R                  S   nU R                   R                  R                  S5      nU R                   R                  R                  S5      nU R                   R                  R                  S5      nSmUc  SnOUR                  5       nUS:X  d  US:X  a  S	 n	U	mO#US
:X  a  S n
U
mOUS:X  a  S nUmOUS:X  a  S nUmU4S jnTc  gSn[	        U5      nUR
                  =(       d    SnUR                  (       a  USUR                   3-  nU R                   SU SU R                   3nU SU 3nT" U5      nT" U5      nX@R                   R                  :X  a   U R                   =R                  S-  sl
        OSU R                   l
        U R                   R                  S n[        U R                   R                  5      R                  S5      nUUR                  S5      -  nU[        R                  " 5       R                  S5      -  nU[        R                   " S5      -  n["        R$                  " U5      R'                  5       SS nUS:X  a  T" U SU SU 35      nU(       d  U" UU SU 35      nO3US:X  d  SUR)                  S5      ;   a  U SU SU SU 3nU" UU5      nOgX@R                   l	        SU R                   SU SU SU S U S!3nU(       a	  US"U S!3-  nU(       a	  US#U S!3-  nU(       a	  US$U S!3-  nU(       a  US%U S&U S!3-  nS'U 3$ )(z
:rtype: str
ÚrealmÚnonceÚqopÚ	algorithmÚopaqueNÚMD5zMD5-SESSc                 ó–   • [        U [        5      (       a  U R                  S5      n [        R                  " U 5      R                  5       $ ©Núutf-8)r   r   r   ÚhashlibÚmd5Ú	hexdigest©Úxs    r   Úmd5_utf8Ú4HTTPDigestAuth.build_digest_header.<locals>.md5_utf8‘   s4   € Ü˜a¤×%Ñ%ØŸ™ Ó)�AÜ—{’{ 1“~×/Ñ/Ó1Ð1r   ÚSHAc                 ó–   • [        U [        5      (       a  U R                  S5      n [        R                  " U 5      R                  5       $ rk   )r   r   r   rm   Úsha1ro   rp   s    r   Úsha_utf8Ú4HTTPDigestAuth.build_digest_header.<locals>.sha_utf8™   s4   € Ü˜a¤×%Ñ%ØŸ™ Ó)�AÜ—|’| A“×0Ñ0Ó2Ð2r   zSHA-256c                 ó–   • [        U [        5      (       a  U R                  S5      n [        R                  " U 5      R                  5       $ rk   )r   r   r   rm   Úsha256ro   rp   s    r   Úsha256_utf8Ú7HTTPDigestAuth.build_digest_header.<locals>.sha256_utf8¡   ó5   € Ü˜a¤×%Ñ%ØŸ™ Ó)�AÜ—~’~ aÓ(×2Ñ2Ó4Ð4r   zSHA-512c                 ó–   • [        U [        5      (       a  U R                  S5      n [        R                  " U 5      R                  5       $ rk   )r   r   r   rm   Úsha512ro   rp   s    r   Úsha512_utf8Ú7HTTPDigestAuth.build_digest_header.<locals>.sha512_utf8©   r}   r   c                 ó   >• T" U  SU 35      $ )NÚ:r(   )ÚsÚdÚ	hash_utf8s     €r   Ú<lambda>Ú4HTTPDigestAuth.build_digest_header.<locals>.<lambda>°   s   ø€ ™) q c¨¨1¨# JÔ/r   Ú/Ú?rƒ   r   Ú08xrl   é   é   ÚauthÚ,z:auth:z
username="z
", realm="z
", nonce="z", uri="z", response="Ú"z
, opaque="z, algorithm="z
, digest="z, qop="auth", nc=z
, cnonce="zDigest )rV   r^   ÚgetÚupperr   ÚpathÚqueryr   r   r\   r]   r   r   ÚtimeÚctimeÚosÚurandomrm   rv   ro   Úsplit)r$   ÚmethodÚurlrd   re   rf   rg   rh   Ú
_algorithmrr   rw   r{   r€   ÚKDÚentdigÚp_parsedr“   ÚA1ÚA2ÚHA1ÚHA2Úncvaluer„   ÚcnonceÚrespdigÚnoncebitÚbaser†   s                              @r   Úbuild_digest_headerÚ"HTTPDigestAuth.build_digest_header~   s|  ø€ ð
 ×"Ñ"×'Ñ'¨Ñ0ˆØ×"Ñ"×'Ñ'¨Ñ0ˆØ× Ñ ×%Ñ%×)Ñ)¨%Ó0ˆØ×&Ñ&×+Ñ+×/Ñ/°Ó<ˆ	Ø×#Ñ#×(Ñ(×,Ñ,¨XÓ6ˆØˆ	àÑØ‰Jà"Ÿ™Ó*ˆJà˜Ó *°
Ó":ò2ð
 !‰IØ˜5Ó ò3ð
 !‰IØ˜9Ó$ò5ð
 $‰IØ˜9Ó$ò5ð
 $ˆIä/ˆàÑØð ˆÜ˜C“=ˆà�}‰}×# ˆØ�>�>Ø�a˜Ÿ™Ð'Ð(Ñ(ˆDà—‘ˆ˜a ˜w a¨¯© Ð7ˆØˆx�q˜˜Ðˆá˜‹mˆÙ˜‹mˆà×&Ñ&×1Ñ1Ó1Ø×Ñ×*Ò*¨aÑ/Ö*à-.ˆD×ÑÔ*Ø×'Ñ'×3Ñ3°CÐ8ˆÜ�×"Ñ"×.Ñ.Ó/×6Ñ6°wÓ?ˆØ	ˆU�\‰\˜'Ó"Ñ"ˆØ	ŒT�ZŠZ‹\× Ñ  Ó)Ñ)ˆØ	ŒR�ZŠZ˜‹]Ñˆä—’˜a“×*Ñ*Ó,¨S¨bÐ1ˆØ˜Ó#Ù˜s˜e 1 U G¨1¨V¨HÐ5Ó6ˆCæÙ˜   q¨¨Ð.Ó/‰GØ�F‹]˜f¨¯	©	°#«Ó6Ø˜  ' ¨!¨F¨8°6¸#¸Ð?ˆHÙ˜˜hÓ'‰Gð à(-×ÑÔ%ð ˜Ÿ™˜ z°%°¸
À5À'ð JØ�6˜ w i¨qð2ð 	ö Ø�j  ¨Ð*Ñ*ˆDÞØ�m I ;¨aÐ0Ñ0ˆDÞØ�j  ¨Ð*Ñ*ˆDÞØÐ'¨ y°
¸6¸(À!ÐDÑDˆDà˜˜ÐÐr   c                 óJ   • UR                   (       a  SU R                  l        gg)z)Reset num_401_calls counter on redirects.r   N)Úis_redirectrV   r`   )r$   r%   Úkwargss      r   Úhandle_redirectÚHTTPDigestAuth.handle_redirectì   s   € à�=�=Ø/0ˆD×ÑÕ,ð r   c                 ól  • SUR                   s=::  a  S:  d  O  SU R                  l        U$ U R                  R                  b9  UR                  R
                  R                  U R                  R                  5        UR                  R                  SS5      nSUR                  5       ;   Gau  U R                  R                  S:  GaZ  U R                  =R                  S-  sl        [        R                  " S[        R                  S	9n[        UR                  SUSS
95      U R                  l        UR                     UR#                  5         UR                  R%                  5       n['        UR(                  UR                  UR*                  5        UR-                  UR(                  5        U R/                  UR0                  UR2                  5      UR                  S'   UR4                  R6                  " U40 UD6nUR8                  R;                  U5        XVl        U$ SU R                  l        U$ )zW
Takes the given response and tries digest-auth, if needed.

:rtype: requests.Response
i�  iô  r   zwww-authenticaterZ   Údigesté   zdigest )Úflags)ÚcountrG   )Ústatus_coderV   r`   r_   ÚrequestÚbodyÚseekrI   r‘   ÚlowerÚreÚcompileÚ
IGNORECASEr
   Úsubr^   ÚcontentÚcloseÚcopyr	   Ú_cookiesÚrawÚprepare_cookiesr©   rš   r›   Ú
connectionÚsendÚhistoryÚappend)r$   r%   r­   Ús_authÚpatÚprepÚ_rs          r   Ú
handle_401ÚHTTPDigestAuth.handle_401ñ   sž  € ð �a—m‘mÕ) cÕ)Ø/0ˆD×ÑÔ,ØˆHà×Ñ×!Ñ!Ñ-ð �I‰I�N‰N×Ñ × 2Ñ 2× 6Ñ 6Ô7Ø—‘—‘Ð1°2Ó6ˆà�v—|‘|“~Ô%¨$×*<Ñ*<×*JÑ*JÈQÔ*NØ×Ñ×,Ò,°Ñ1Õ,Ü—*’*˜Z¬r¯}©}Ñ=ˆCÜ&7¸¿¹ÀÀFÐRS¸Ð8TÓ&UˆD×ÑÔ#ð �IŠIØ�G‰GŒIØ—9‘9—>‘>Ó#ˆDÜ" 4§=¡=°!·)±)¸Q¿U¹UÔCØ× Ñ  §¡Ô/à,0×,DÑ,DØ—‘˜TŸX™Xó-ˆD�L‰L˜Ñ)ð —‘×"Ò" 4Ñ2¨6Ñ2ˆBØ�J‰J×Ñ˜aÔ ØŒJàˆIà+,ˆ×ÑÔ(Øˆr   c                 óê  • U R                  5         U R                  R                  (       a3  U R                  UR                  UR
                  5      UR                  S'    UR                  R                  5       U R                  l	        UR                  SU R                  5        UR                  SU R                  5        SU R                  l        U$ ! [         a    S U R                  l	         Nhf = f)NrG   Úresponser   )ra   rV   r\   r©   rš   r›   rI   r·   Útellr_   ÚAttributeErrorÚregister_hookrÌ   r®   r`   r#   s     r   r&   ÚHTTPDigestAuth.__call__  s¹   € à×"Ñ"Ô$à×Ñ×(×(Ø)-×)AÑ)AÀ!Ç(Á(ÈAÏEÉEÓ)RˆA�I‰I�oÑ&ð	*Ø%&§V¡V§[¡[£]ˆD×ÑÔ"ð 	
�‰˜
 D§O¡OÔ4Ø	�‰˜
 D×$8Ñ$8Ô9Ø+,ˆ×ÑÔ(àˆøô ó 	*ð
 &*ˆD×ÑÖ"ð	*ús   Á )C ÃC2Ã1C2c           	      ó|   • [        U R                  [        USS 5      :H  U R                  [        USS 5      :H  /5      $ r9   r:   r=   s     r   r?   ÚHTTPDigestAuth.__eq__1  rA   r   c                 ó   • X:X  + $ r4   r(   r=   s     r   rC   ÚHTTPDigestAuth.__ne__9  rE   r   )rV   r   r   N)r*   r+   r,   r-   r.   r6   ra   r©   r®   rÌ   r&   r?   rC   r/   r(   r   r   rQ   rQ   k   s0   † ÙJò/ò4òl ò\1ò
*òXò(
õ!r   rQ   )r.   rm   r—   rº   rT   r•   r   Úbase64r   Ú_internal_utilsr   Úcompatr   r   r   Úcookiesr	   Úutilsr
   ÚCONTENT_TYPE_FORM_URLENCODEDÚCONTENT_TYPE_MULTI_PARTr   r   r1   rL   rQ   r(   r   r   Ú<module>rß      st   ðñó Û 	Û 	Û Û Û Ý å -ß -Ñ -Ý +Ý $àBÐ Ø/Ð ò)÷XBñ Bô�Hô ô.�Mô ôO!�Xõ O!r   