Ë
    ,Œ:j7  ã            
       ó*  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlZddlmZ ej                   rddlmZ ddd	œZej)                   ed
«      D � ci c]   } | dk7  sŒ	 e| «      dj/                  | «      “Œ" c} «        ej0                  dj3                  ej5                  «       D � cg c]  }  ej6                  | «      ‘Œ c} «      «      Z	 d9dej:                  eef   de dejB                  e   defd„Z"	 d9dej:                  eef   dejB                  e   defd„Z#dddefd„Z$dede fd„Z%dededefd„Z&dejB                  e   fd„Z'dedejP                  ejR                  eef      fd„Z*dedejB                  e   fd„Z+ddhZ,dejZ                  ej\                  ej^                  ej^                  f      dej`                  ej\                  ej^                  ej^                  f      fd „Z1d!d"dejB                  e2   fd#„Z3d!d"d$d"de fd%„Z4d!d"d&d"de fd'„Z5dejR                  eejB                  e   f   fd(„Z6d:dej:                  eef   dedefd)„Z7d:dej:                  eef   dedefd*„Z8ded+ej^                  dej^                  fd,„Z9dedefd-„Z:d.ejB                  e   dejB                  e   fd/„Z;d0ejx                  dejB                  e2   fd1„Z= G d2„ d3«      Z> G d4„ d5«      Z?d6ede fd7„Z@d6ede fd8„ZAyc c} w c c} w );é    N)ÚPath)Ú
getproxiesé   )ÚPrimitiveData©ÚURLz%22z\\)ú"ú\é    é   z%{:02X}ú|ÚvalueÚlowerÚencodingÚreturnc                 óz   — t        | t        «      r| }n| j                  |xs d«      }|r|j                  «       S |S )zE
    Coerce str/bytes into a strictly byte-wise HTTP header key.
    Úascii)Ú
isinstanceÚbytesÚencoder   )r   r   r   Úbytes_values       úN/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/httpx/_utils.pyÚnormalize_header_keyr      s<   € ô �%œÔØ‰à—l‘l 8Ò#6¨wÓ7ˆá"'ˆ;×ÑÓÐ8¨[Ð8ó    c                 óP   — t        | t        «      r| S | j                  |xs d«      S )zG
    Coerce str/bytes into a strictly byte-wise HTTP header value.
    r   )r   r   r   ©r   r   s     r   Únormalize_header_valuer   -   s'   € ô �%œÔØˆØ�<‰<˜Ò+ GÓ,Ð,r   r   c                 ó2   — | du ry| du ry| €yt        | «      S )z‡
    Coerce a primitive data type into a string value.

    Note that we prefer JSON-style 'true'/'false' for boolean values here.
    TÚtrueFÚfalseÚ )Ústr©r   s    r   Úprimitive_value_to_strr$   8   s*   € ð ��}ØØ	�%‰ØØ	ˆØÜˆu‹:Ðr   c                 óN   — 	 t        j                  | «       y# t        $ r Y yw xY w)z7
    Return `True` if `encoding` is a known codec.
    FT)ÚcodecsÚlookupÚLookupError)r   s    r   Úis_known_encodingr)   G   s,   € ðÜ�‰�hÔð øô ò Ùðús   ‚ ˜	$£$Únamec                 óœ   — dt         j                  t           dt        fd„}t        j	                  ||«      }| › d|› d�j                  «       S )z;
    Encode a name/value pair within a multipart form.
    Úmatchr   c                 ó2   — t         | j                  d«         S )Nr   )Ú!_HTML5_FORM_ENCODING_REPLACEMENTSÚgroup)r,   s    r   Úreplacerz#format_form_param.<locals>.replacerW   s   € Ü0°·±¸Q³Ñ@Ð@r   z="r	   )ÚtypingÚMatchr"   Ú_HTML5_FORM_ENCODING_REÚsubr   )r*   r   r0   s      r   Úformat_form_paramr5   R   sQ   € ð
AœŸ™¤SÑ)ð A¬có Aô $×'Ñ'¨°%Ó8€EØˆV�2�e�W˜AÐ×%Ñ%Ó'Ð'r   c                  ó(  — dt         j                  v r7t        t         j                  d   «      } | j                  «       rt	        | «      S dt         j                  v r7t        t         j                  d   «      }|j                  «       rt	        |«      S y )NÚSSL_CERT_FILEÚSSL_CERT_DIR)ÚosÚenvironr   Úis_filer"   Úis_dir)Ússl_fileÚssl_paths     r   Úget_ca_bundle_from_envr?   ^   sm   € Øœ"Ÿ*™*Ñ$ÜœŸ
™
 ?Ñ3Ó4ˆØ×ÑÔÜ�x“=Ð ØœŸ™Ñ#ÜœŸ
™
 >Ñ2Ó3ˆØ�?‰?ÔÜ�x“=Ð Ør   c                 óÄ  — g }d}| j                  |«      } | s|S t        j                  d| «      D ]Š  }	 |j                  dd«      \  }}d|j                  d«      i}|j                  d«      D ]:  }	 |j                  d«      \  }} | j                  |«      ||j                  |«      <   Œ< |j	                  |«       ŒŒ |S # t        $ r |d}}Y Œ…w xY w# t        $ r Y  Œ4w xY w)	a7  
    Returns a list of parsed link headers, for more info see:
    https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Link
    The generic syntax of those is:
    Link: < uri-reference >; param1=value1; param2="value2"
    So for instance:
    Link; '<http:/.../front.jpeg>; type="image/jpeg",<http://.../back.jpeg>;'
    would return
        [
            {"url": "http:/.../front.jpeg", "type": "image/jpeg"},
            {"url": "http://.../back.jpeg"},
        ]
    :param value: HTTP Link entity-header field
    :return: list of parsed link headers
    z '"z, *<ú;r   r!   Úurlz<> '"ú=)ÚstripÚreÚsplitÚ
ValueErrorÚappend)	r   ÚlinksÚreplace_charsÚvalrB   ÚparamsÚlinkÚparamÚkeys	            r   Úparse_header_linksrP   j   sý   € ð  13€EØ€MØ�K‰K˜Ó&€EÙØˆÜ�x‰x˜ Ó&ò ˆð	"ØŸ)™) C¨Ó+‰KˆC�ð �s—y‘y Ó*Ð+ˆØ—\‘\ #Ó&ò 	HˆEðØ"Ÿ[™[¨Ó-‘
��Uð .3¯[©[¸Ó-GˆD�—‘˜=Ó)Ò*ð	Hð 	�‰�TÕðð €Løô ò 	"Ø˜r�ŠCð	"ûô ò Úðús#   ´B?Á1CÂ?CÃCÃ	CÃCÚcontent_typec                 ól   — t         j                  j                  «       }| |d<   |j                  d ¬«      S )Nzcontent-type)Úfailobj)ÚemailÚmessageÚMessageÚget_content_charset)rQ   Úmsgs     r   Úparse_content_type_charsetrY   �   s4   € ô �-‰-×
Ñ
Ó
!€CØ&€CˆÑØ×"Ñ"¨4Ð"Ó0Ð0r   Úauthorizationzproxy-authorizationÚitemsc              #   ó„   K  — | D ]7  \  }}t        |j                  «       «      t        v rt        d|¬«      }||f–— Œ9 y ­w)Nz[secure])Úmatch_type_of)Úto_strr   ÚSENSITIVE_HEADERSÚto_bytes_or_str)r[   ÚkÚvs      r   Úobfuscate_sensitive_headersrc   š   sD   è ø€ ð ò ‰ˆˆ1Ü�!—'‘'“)ÓÔ 1Ñ1Ü 
¸!Ô<ˆAØ�ˆd‹
ñùs   ‚>A rB   r   c                 ón   — | j                   �| j                   S dddœj                  | j                  «      S )NéP   é»  )ÚhttpÚhttps)ÚportÚgetÚscheme)rB   s    r   Úport_or_defaultrl   £   s/   € Ø
‡x�xÐØ�x‰xˆØ Ñ%×)Ñ)¨#¯*©*Ó5Ð5r   Úotherc                 óœ   — | j                   |j                   k(  xr2 | j                  |j                  k(  xr t        | «      t        |«      k(  S )z@
    Return 'True' if the given URLs share the same origin.
    )rk   Úhostrl   )rB   rm   s     r   Úsame_originrp   ©   sE   € ð
 	�
‰
�e—l‘lÑ"ò 	;Ø�H‰H˜Ÿ
™
Ñ"ò	;ä˜CÓ ¤O°EÓ$:Ñ:ðr   Úlocationc                 ó¶   — | j                   |j                   k7  ry| j                  dk(  xr/ t        | «      dk(  xr |j                  dk(  xr t        |«      dk(  S )zA
    Return 'True' if 'location' is a HTTPS upgrade of 'url'
    Frg   re   rh   rf   )ro   rk   rl   )rB   rq   s     r   Úis_https_redirectrs   ´   sa   € ð ‡x�x�8—=‘=Ò Øð 	�
‰
�fÑò 	-Ü˜CÓ  BÑ&ò	-à�O‰O˜wÑ&ò	-ô ˜HÓ%¨Ñ,ð	r   c                  ó¾  — t        «       } i }dD ]*  }| j                  |«      sŒ| |   }d|v r|nd|› �||› d�<   Œ, | j                  dd«      j                  d«      D �cg c]  }|j                  «       ‘Œ }}|D ][  }|dk(  ri c S |sŒt	        |«      r	d|d	|› �<   Œ#t        |«      r
d|d
|› d�<   Œ8|j                  «       dk(  r	d|d	|› �<   ŒTd|d|› �<   Œ] |S c c}w )z+Gets proxy information from the environment)rg   rh   Úallz://zhttp://Únor!   ú,Ú*Nzall://zall://[ú]Ú	localhostzall://*)r   rj   rF   rD   Úis_ipv4_hostnameÚis_ipv6_hostnamer   )Ú
proxy_infoÚmountsrk   Úhostnamero   Úno_proxy_hostss         r   Úget_environment_proxiesr�   Ã   s  € ô “€JØ57€Fà*ò ˆØ�>‰>˜&Õ!Ø! &Ñ)ˆHà! XÑ-‘°W¸X¸JÐ3Gð �f�X˜S�>Ò"ðð 0:¯~©~¸dÀBÓ/G×/MÑ/MÈcÓ/RÖS t�d—j‘j•lÐS€NÐSØ"ò 4ˆð �sŠ?ð
 ŠIÚô   Ô)Ø.2�˜ ˜zÐ*Ò+Ü! (Ô+Ø04�˜  
¨!Ð,Ò-Ø—‘Ó! [Ò0Ø.2�˜ ˜zÐ*Ò+à/3�˜  
Ð+Ò,ð14ð4 €Mùò7 Ts   ÁCc                 óH   — t        | t        «      r| j                  |«      S | S ©N©r   r"   r   r   s     r   Úto_bytesr…   ò   s   € Ü%/°´sÔ%;ˆ5�<‰<˜Ó!ÐFÀÐFr   c                 óH   — t        | t        «      r| S | j                  |«      S rƒ   )r   r"   Údecoder   s     r   r^   r^   ö   s   € Ü˜u¤cÔ*ˆ5ÐF°·±¸XÓ0FÐFr   r]   c                 óF   — t        |t        «      r| S | j                  «       S rƒ   r„   )r   r]   s     r   r`   r`   ú   s   € Ü˜}¬cÔ2ˆ5ÐF¸¿¹»ÐFr   c                 ó8   — | d   | d   cxk(  rdk(  rn n| dd S | S )Nr   éÿÿÿÿr	   r   © r#   s    r   ÚunquoterŒ   þ   s'   € Ø ™( e¨B¡iÔ6°3Õ6ˆ5��2ˆ;ÐA¸EÐAr   Úfilenamec                 ó@   — | rt        j                  | «      d   xs dS y )Nr   zapplication/octet-stream)Ú	mimetypesÚ
guess_type)r�   s    r   Úguess_content_typer‘     s$   € ÙÜ×#Ñ# HÓ-¨aÑ0ÒNÐ4NÐNØr   Ústreamc                 óB  — 	 | j                  «       }t        j                  |«      j                  }|S # t        t
        f$ r\ 	 | j                  «       }| j                  dt        j                  «      }| j                  |«       Y |S # t        t
        f$ r Y Y yw xY ww xY w)zs
    Given a file-like stream object, return its length in number of bytes
    without reading it into memory.
    r   N)	Úfilenor9   ÚfstatÚst_sizeÚAttributeErrorÚOSErrorÚtellÚseekÚSEEK_END)r’   ÚfdÚlengthÚoffsets       r   Úpeek_filelike_lengthrŸ     s”   € ð
à�]‰]‹_ˆä—‘˜"“×%Ñ%ˆð €Møô œGÐ$ò 
ð	ð —[‘[“]ˆFØ—[‘[ ¤B§K¡KÓ0ˆFØ�K‰K˜Õð
 €Møô	 ¤Ð(ò 	âð	úð
ús(   ‚/3 ³BÁABÂBÂBÂBÂBc                   ó@   — e Zd Zdefd„Zdd„Zdd„Zdefd„Zdefd„Zy)	ÚTimerr   c              ƒ   ó  K  — t        j                  «       }|dk(  rdd l}|j                  «       S |dk(  r4dd l}t        j                  t        |j                  «       ƒ d {  –—† «      S dd l	}|j                  «       j                  «       S 7 Œ*­w)NÚtrior   Úcurio)ÚsniffioÚcurrent_async_libraryr£   Úcurrent_timer¤   r1   ÚcastÚfloatÚclockÚasyncioÚget_event_loopÚtime)ÚselfÚlibraryr£   r¤   r«   s        r   Ú	_get_timezTimer._get_time"  ss   è ø€ Ü×/Ñ/Ó1ˆØ�fÒÛà×$Ñ$Ó&Ð&Ø˜ÒÛä—;‘;œu¨E¯K©K«M×&9Ó:Ð:ãà×%Ñ%Ó'×,Ñ,Ó.Ð.ð	 ':ús   ‚ABÁ B
Á!+BNc                 ó6   — t        j                  «       | _        y rƒ   ©r­   Úperf_counterÚstarted©r®   s    r   Ú
sync_startzTimer.sync_start1  s   € Ü×(Ñ(Ó*ˆ�r   c              ƒ   óJ   K  — | j                  «       ƒ d {  –—† | _        y 7 Œ
­wrƒ   ©r°   r´   rµ   s    r   Úasync_startzTimer.async_start4  s   è ø€ Ø!Ÿ^™^Ó-×-ˆ�Ð-ús   ‚#–!—#c                 óH   — t        j                  «       }|| j                  z
  S rƒ   r²   ©r®   Únows     r   Úsync_elapsedzTimer.sync_elapsed7  s   € Ü×ÑÓ!ˆØ�T—\‘\Ñ!Ð!r   c              ƒ   ó\   K  — | j                  «       ƒ d {  –—† }|| j                  z
  S 7 Œ­wrƒ   r¸   r»   s     r   Úasync_elapsedzTimer.async_elapsed;  s)   è ø€ Ø—N‘NÓ$×$ˆØ�T—\‘\Ñ!Ð!ð %ús   ‚,–*—,)r   N)	Ú__name__Ú
__module__Ú__qualname__r©   r°   r¶   r¹   r½   r¿   r‹   r   r   r¡   r¡   !  s0   „ ð/ ó /ó+ó.ð"˜eó "ð" Uô "r   r¡   c                   ó¦   — e Zd ZdZdeddfd„Zdddefd„Zede	j                  eeef   fd	„«       Zdefd
„Zdd defd„Zde	j                  defd„Zy)Ú
URLPatternaË  
    A utility class currently used for making lookups against proxy keys...

    # Wildcard matching...
    >>> pattern = URLPattern("all://")
    >>> pattern.matches(httpx.URL("http://example.com"))
    True

    # Witch scheme matching...
    >>> pattern = URLPattern("https://")
    >>> pattern.matches(httpx.URL("https://example.com"))
    True
    >>> pattern.matches(httpx.URL("http://example.com"))
    False

    # With domain matching...
    >>> pattern = URLPattern("https://example.com")
    >>> pattern.matches(httpx.URL("https://example.com"))
    True
    >>> pattern.matches(httpx.URL("http://example.com"))
    False
    >>> pattern.matches(httpx.URL("https://other.com"))
    False

    # Wildcard scheme, with domain matching...
    >>> pattern = URLPattern("all://example.com")
    >>> pattern.matches(httpx.URL("https://example.com"))
    True
    >>> pattern.matches(httpx.URL("http://example.com"))
    True
    >>> pattern.matches(httpx.URL("https://other.com"))
    False

    # With port matching...
    >>> pattern = URLPattern("https://example.com:1234")
    >>> pattern.matches(httpx.URL("https://example.com:1234"))
    True
    >>> pattern.matches(httpx.URL("https://example.com"))
    False
    Úpatternr   Nc                 ó8  — ddl m} |rd|vrt        d|› d|› d�«      ‚ ||«      }|| _        |j                  dk(  rdn|j                  | _        |j
                  d	k(  rdn|j
                  | _        |j                  | _        |j
                  r|j
                  d	k(  rd | _        y |j
                  j                  d
«      rAt        j                  |j
                  dd  «      }t        j                  d|› d�«      | _        y |j
                  j                  d	«      rAt        j                  |j
                  dd  «      }t        j                  d|› d�«      | _        y t        j                  |j
                  «      }t        j                  d|› d�«      | _        y )Nr   r   ú:zUProxy keys should use proper URL forms rather than plain scheme strings. Instead of "z", use "z://"ru   r!   rx   z*.é   z^.+\.ú$z^(.+\.)?ú^)Ú_urlsr   rG   rÅ   rk   ro   ri   Ú
host_regexÚ
startswithrE   ÚescapeÚcompile)r®   rÅ   r   rB   Údomains        r   Ú__init__zURLPattern.__init__j  sI  € Ýá�s 'Ñ)Üðà&˜i x°¨y¸ð>óð ñ �'‹lˆØˆŒØŸJ™J¨%Ò/‘b°S·Z±ZˆŒØŸ(™( cš/‘B¨s¯x©xˆŒ	Ø—H‘HˆŒ	Ø�xŠx˜3Ÿ8™8 sš?ØDHˆD�OØ�X‰X× Ñ  Ô&ä—Y‘Y˜sŸx™x¨¨˜|Ó,ˆFÜ Ÿj™j¨6°&°¸Ð);Ó<ˆD�OØ�X‰X× Ñ  Ô%ä—Y‘Y˜sŸx™x¨¨˜|Ó,ˆFÜ Ÿj™j¨9°V°H¸AÐ)>Ó?ˆD�Oô —Y‘Y˜sŸx™xÓ(ˆFÜ Ÿj™j¨1¨V¨H°A¨Ó7ˆD�Or   rm   r   c                 ó  — | j                   r| j                   |j                   k7  ry| j                  r2| j                  �&| j                  j                  |j                  «      sy| j                  �| j                  |j                  k7  ryy)NFT)rk   ro   rÌ   r,   ri   ©r®   rm   s     r   ÚmatcheszURLPattern.matchesˆ  sd   € Ø�;Š;˜4Ÿ;™;¨%¯,©,Ò6Øà�IŠIØ—‘Ð+Ø—O‘O×)Ñ)¨%¯*©*Ô5àØ�9‰9Ð  T§Y¡Y°%·*±*Ò%<ØØr   c                 ó„   — | j                   �dnd}t        | j                  «       }t        | j                  «       }|||fS )z�
        The priority allows URLPattern instances to be sortable, so that
        we can match from most specific to least specific.
        r   r   )ri   Úlenro   rk   )r®   Úport_priorityÚhost_priorityÚscheme_prioritys       r   ÚpriorityzURLPattern.priority•  sA   € ð "ŸY™YÐ2™¸ˆä˜TŸY™Y›˜ˆä˜tŸ{™{Ó+Ð+ˆØ˜}¨oÐ>Ð>r   c                 ó,   — t        | j                  «      S rƒ   )ÚhashrÅ   rµ   s    r   Ú__hash__zURLPattern.__hash__£  s   € Ü�D—L‘LÓ!Ð!r   c                 ó4   — | j                   |j                   k  S rƒ   )rÚ   rÓ   s     r   Ú__lt__zURLPattern.__lt__¦  s   € Ø�}‰}˜uŸ~™~Ñ-Ð-r   c                 óX   — t        |t        «      xr | j                  |j                  k(  S rƒ   )r   rÄ   rÅ   rÓ   s     r   Ú__eq__zURLPattern.__eq__©  s!   € Ü˜%¤Ó,ÒN°·±ÀÇÁÑ1NÐNr   )rÀ   rÁ   rÂ   Ú__doc__r"   rÑ   ÚboolrÔ   Úpropertyr1   ÚTupleÚintrÚ   rÝ   rß   ÚAnyrá   r‹   r   r   rÄ   rÄ   @  s‘   „ ñ'ðR8 ð 8¨ó 8ð<˜Uð  tó ð ð?˜&Ÿ,™, s¨C° }Ñ5ò ?ó ð?ð"˜#ó "ð.˜Lð .¨Tó .ðO˜FŸJ™Jð O¨4ô Or   rÄ   r   c                 ór   — 	 t        j                  | j                  d«      d   «       y# t        $ r Y yw xY w©Nú/r   FT)Ú	ipaddressÚIPv4AddressrF   Ú	Exception©r   s    r   r{   r{   ­  ó<   € ðÜ×Ñ˜hŸn™n¨SÓ1°!Ñ4Ô5ð øô ò Ùðúó   ‚'* ª	6µ6c                 ór   — 	 t        j                  | j                  d«      d   «       y# t        $ r Y yw xY wré   )rë   ÚIPv6AddressrF   rí   rî   s    r   r|   r|   µ  rï   rð   rƒ   )zutf-8)Br&   Úemail.messagerT   rë   r�   r9   rE   r­   r1   Úpathlibr   Úurllib.requestr   r¥   Ú_typesr   ÚTYPE_CHECKINGrË   r   r.   ÚupdateÚrangeÚchrÚformatrÏ   ÚjoinÚkeysrÎ   r3   ÚUnionr"   r   rã   ÚOptionalr   r   r$   r)   r5   r?   ÚListÚDictrP   rY   r_   ÚIterablerå   ÚAnyStrÚIteratorrc   ræ   rl   rp   rs   r�   r…   r^   r`   rŒ   r‘   rç   rŸ   r¡   rÄ   r{   r|   )Úcs   0r   ú<module>r     sË  ðÛ Û Û Û Û 	Û 	Û Û Ý Ý %ã å !à	×ÒÝð +0°vÑ$>Ð !Ø !× (Ñ (Ù*/°«/ÖG Q¸QÀ$»Y�SˆƒVˆY×Ñ˜aÓ Ñ ÒGôð %˜"Ÿ*™*Ø‡I�IÐ%F×%KÑ%KÓ%MÖN ˆyˆr�y‰y˜�|ÒNÓOóÐ ð &*ñ9Ø�<‰<˜˜U˜
Ñ#ð9àð9ð �o‰o˜cÑ"ð9ð ó	9ð" GKñ-Ø�<‰<˜˜U˜
Ñ#ð-Ø/5¯©¸sÑ/Cð-à
ó-ð /ð °có ð ð ¨ó ð	(˜Cð 	(¨ð 	(°ó 	(ð	 §¡°Ñ 4ó 	ð"˜cð " f§k¡k°&·+±+¸cÀ3¸hÑ2GÑ&Hó "ðJ1¨Sð 1°V·_±_ÀSÑ5Ió 1ð %Ð&;Ð<Ð ðØ�?‰?˜6Ÿ<™<¨¯©°v·}±}Ð(DÑEÑFðà‡_�_�V—\‘\ &§-¡-°·±Ð">Ñ?Ñ@óð6˜ð 6 6§?¡?°3Ñ#7ó 6ð�Uð  5ð ¨Tó ð˜5ð ¨Eð °dó ð, §¡¨S°&·/±/À#Ñ2FÐ-FÑ!Gó ,ñ^G�F—L‘L  e Ñ,ð G¸ð GÈ%ó GñG�&—,‘,˜s E˜zÑ*ð G°cð GÈó GðG˜3ð G¨v¯}©}ð GÀÇÁó GðB�3ð B˜3ó Bð §¡°Ñ!5ð ¸&¿/¹/È#Ñ:Nó ð §¡ð °·±ÀÑ0Dó ÷2"ñ "÷>jOñ jOðZ˜sð  tó ð˜sð  tô ùò Hùò Os   Á#
LÁ.LÂ8L