ó
    Ðiei   ã                  ó  • % S SK Jr  S SKrS SKrS SKJr  S SKJr  SSKJ	r	  SSK
Jr  \R                  (       a  S S	KJr  S
r\" / SQ5      rSr  S SKr\S-  r S SKr\S-  r " S S\5      r\R2                  rS\S'   \R8                  \\4   r1 Skr      S             SS jjr       SS jr!SS jr" " S S\RF                  5      r$        SS jr%g! \ a    S SKr N™f = f! \ a     N f = f! \ a     N¢f = f)é    )ÚannotationsN)Ú	b64encode)ÚEnumé   )ÚUnrewindableBodyErroré   )Úto_bytes)ÚFinalz@@@SKIP_HEADER@@@)úaccept-encodingÚhostú
user-agentzgzip,deflatez,brz,zstdc                  ó   • \ rS rSrSrSrg)Ú_TYPE_FAILEDTELLé'   r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚtokenÚ__static_attributes__r   ó    Ú6/usr/lib/python3/dist-packages/urllib3/util/request.pyr   r   '   s   † ØƒEr   r   zFinal[_TYPE_FAILEDTELL]Ú_FAILEDTELL>   ÚGETÚHEADÚTRACEÚDELETEÚCONNECTÚOPTIONSc                óÀ  • 0 nU(       aG  [        U[        5      (       a  O-[        U[        5      (       a  SR                  U5      nO[        nXS'   U(       a  X&S'   U (       a  SUS'   U(       a.  S[        UR                  S5      5      R                  5        3US'   U(       a.  S[        UR                  S5      5      R                  5        3US	'   U(       a  S
US'   U$ )aì  
Shortcuts for generating request headers.

:param keep_alive:
    If ``True``, adds 'connection: keep-alive' header.

:param accept_encoding:
    Can be a boolean, list, or string.
    ``True`` translates to 'gzip,deflate'.  If the dependencies for
    Brotli (either the ``brotli`` or ``brotlicffi`` package) and/or Zstandard
    (the ``zstandard`` package) algorithms are installed, then their encodings are
    included in the string ('br' and 'zstd', respectively).
    List will get joined by comma.
    String will be used as provided.

:param user_agent:
    String representing the user-agent you want, such as
    "python-urllib3/0.6"

:param basic_auth:
    Colon-separated username:password string for 'authorization: basic ...'
    auth header.

:param proxy_basic_auth:
    Colon-separated username:password string for 'proxy-authorization: basic ...'
    auth header.

:param disable_cache:
    If ``True``, adds 'cache-control: no-cache' header.

Example:

.. code-block:: python

    import urllib3

    print(urllib3.util.make_headers(keep_alive=True, user_agent="Batman/1.0"))
    # {'connection': 'keep-alive', 'user-agent': 'Batman/1.0'}
    print(urllib3.util.make_headers(accept_encoding=True))
    # {'accept-encoding': 'gzip,deflate'}
Ú,r   r   z
keep-aliveÚ
connectionzBasic zlatin-1Úauthorizationzproxy-authorizationzno-cachezcache-control)Ú
isinstanceÚstrÚlistÚjoinÚACCEPT_ENCODINGr   ÚencodeÚdecode)Ú
keep_aliveÚaccept_encodingÚ
user_agentÚ
basic_authÚproxy_basic_authÚdisable_cacheÚheaderss          r   Úmake_headersr3   7   sØ   € ðb !€GÞÜ�o¤s×+Ñ+ØÜ˜¬×.Ñ.Ø!Ÿh™h Ó7‰Oä-ˆOØ%4Ð!Ñ"æØ *�ÑæØ ,ˆ�Ñæà”Y˜z×0Ñ0°Ó;Ó<×CÑCÓEÐFÐGð 	�Ñ ö à”YÐ/×6Ñ6°yÓAÓB×IÑIÓKÐLÐMð 	Ð%Ñ&ö Ø#-ˆ�Ñ à€Nr   c                ó–   • Ub  [        X5        U$ [        U SS5      b   U R                  5       nU$ U$ ! [         a
    [        n U$ f = f)zs
If a position is provided, move file to that point.
Otherwise, we'll attempt to record a position for future use.
NÚtell)Úrewind_bodyÚgetattrr5   ÚOSErrorr   )ÚbodyÚposs     r   Úset_file_positionr;   ˆ   sa   € ð �Ü�DÔð €Jô 
��v˜tÓ	$Ñ	0ð	Ø—)‘)“+ˆCð €Jˆ3€Jøô ó 	ô ‰Cà€Jð	ús    4 ´AÁAc                óô   • [        U SS5      nUb  [        U[        5      (       a
   U" U5        gU[
        L a  [	        S5      e[        S[        U5       S35      e! [         a  n[	        S5      UeSnAff = f)zÊ
Attempt to rewind body to a certain position.
Primarily used for request redirects and retries.

:param body:
    File-like object that supports seek.

:param int pos:
    Position to seek to in file.
ÚseekNzAAn error occurred when rewinding request body for redirect/retry.zRUnable to record file position for rewinding request body during a redirect/retry.z1body_pos must be of type integer, instead it was Ú.)r7   r%   Úintr8   r   r   Ú
ValueErrorÚtype)r9   Úbody_posÚ	body_seekÚes       r   r6   r6   œ   s’   € ô ˜˜f dÓ+€IØÑ¤¨H´c×!:Ñ!:ð	Ù�hÕð
 
”[Ò	 Ü#ð4ó
ð 	
ô
 Ø?ÄÀXÃÐ?OÈqÐQó
ð 	
øô ó 	Ü'ØSóàðûð	ús   §A Á
A7Á&A2Á2A7c                  ó*   • \ rS rSr% S\S'   S\S'   Srg)ÚChunksAndContentLengthéº   ztyping.Iterable[bytes] | NoneÚchunksz
int | NoneÚcontent_lengthr   N)r   r   r   r   Ú__annotations__r   r   r   r   rF   rF   º   s   ‡ Ø)Ó)ØÖr   rF   c                óÀ  ^ ^• T c   SnUR                  5       [        ;  a  SnOxSnOu[        T [        [        45      (       a  [        T 5      4n[        US   5      nO?[        T S5      (       a  SUU 4S jjnU" 5       nSnO [        T 5      nT 4nUR                  n[        X4S9$ ! [         a/     [        T 5      nSn N#! [         a    [        ST < 35      Sef = ff = f)a:  Takes the HTTP request method, body, and blocksize and
transforms them into an iterable of chunks to pass to
socket.sendall() and an optional 'Content-Length' header.

A 'Content-Length' of 'None' indicates the length of the body
can't be determined so should use 'Transfer-Encoding: chunked'
for framing instead.
Nr   Úreadc               3  ó°   >#   • [        T[        R                  5      n  TR                  T5      nU(       d  g U (       a  UR	                  S5      nUv •  M7  7f)Nzutf-8)r%   ÚioÚ
TextIOBaserL   r*   )r*   Ú	datablockÚ	blocksizer9   s     €€r   Úchunk_readableÚ&body_to_chunks.<locals>.chunk_readableà   sJ   øé € ä ¤b§m¡mÓ4ˆFØØ ŸI™I iÓ0�	Þ ØÞØ )× 0Ñ 0°Ó 9�IØ’ñ ùs   ƒAAzO'body' must be a bytes-like object, file-like object, or iterable. Instead was )rH   rI   )Úreturnztyping.Iterable[bytes])ÚupperÚ_METHODS_NOT_EXPECTING_BODYr%   r&   Úbytesr	   ÚlenÚhasattrÚ
memoryviewÚnbytesÚ	TypeErrorÚiterrF   )r9   ÚmethodrQ   rH   rI   rR   Úmvs   ` `    r   Úbody_to_chunksr`   ¿   sý   ù€ ð$ �|ØˆØ�<‰<‹>Ô!<Ó<Ø‰Nà!‰Nô 
�Dœ3¤˜,×	'Ñ	'Ü˜4“.Ð"ˆÜ˜V A™Y›‰ô 
��v×	Ñ	÷		 ð 		 ñ  Ó!ˆØ‰ð	'ä˜DÓ!ˆBð �WˆFØŸY™YˆNä!¨ÑOÐOøô ó 		ðä˜d›�Ø!%’øÜó Üð8Ø8<±xðAóð ððúð		ús   ÂB$ Â$
CÂ/B>Â>CÃC)NNNNNN)r,   úbool | Noner-   zbool | list[str] | str | Noner.   ú
str | Noner/   rb   r0   rb   r1   ra   rT   zdict[str, str])r9   z
typing.Anyr:   ú_TYPE_BODY_POSITION | NonerT   rc   )r9   ztyping.IO[typing.AnyStr]rB   Ú_TYPE_BODY_POSITIONrT   ÚNone)r9   ztyping.Any | Noner^   r&   rQ   r?   rT   rF   )&Ú
__future__r   rN   ÚtypingÚbase64r   Úenumr   Ú
exceptionsr   Úutilr	   ÚTYPE_CHECKINGr
   ÚSKIP_HEADERÚ	frozensetÚSKIPPABLE_HEADERSr)   Ú
brotlicffiÚ_unused_module_brotliÚImportErrorÚbrotliÚ	zstandardÚ_unused_module_zstdr   r   r   rJ   ÚUnionr?   rd   rV   r3   r;   r6   Ú
NamedTuplerF   r`   r   r   r   Ú<module>rx      s¨  ðÞ "ã 	Û Ý Ý å .Ý à	××Ýð "€ÙÒGÓHÐ à €ðð/Û2ð �uÑ€OðÛ+ð �wÑ€Oô�tô ð (8×'=Ñ'=€Ð$Ó =à—l‘l 3Ð(8Ð#8Ñ9Ð ò WÐ ð #Ø59Ø!Ø!Ø#'Ø!%ðNØðNà2ðNð ðNð ð	Nð
 !ðNð ðNð õNðbØ
ðØ5ðàôô(
ô<˜V×.Ñ.ô ð
CPØ
ðCPØ%(ðCPØ58ðCPàõCPøðM ó /Ý.ð/ûàó 	Ùð	ûð ó 	Ùð	ús<   ÁC  ÁC< Ã 
C-Ã*C0 Ã,C-Ã-C0 Ã0C9Ã8C9Ã<DÄD