Ë
    ,Œ:j&  ã                   óH  — d 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  G d„ d«      Z	 G d„ d	e	«      Z
 G d
„ de	«      Z G d„ de	«      Z G d„ de	«      Z G d„ de	«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Ze
eeedœZe€ej)                  d«       yy)zq
Handlers for Content-Encoding.

See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding
é    Né   )Úbrotli)ÚDecodingErrorc                   ó(   — e Zd Zdedefd„Zdefd„Zy)ÚContentDecoderÚdataÚreturnc                 ó   — t        «       ‚©N©ÚNotImplementedError©Úselfr   s     úQ/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/httpx/_decoders.pyÚdecodezContentDecoder.decode   ó   € Ü!Ó#Ð#ó    c                 ó   — t        «       ‚r   r   ©r   s    r   ÚflushzContentDecoder.flush   r   r   N)Ú__name__Ú
__module__Ú__qualname__Úbytesr   r   © r   r   r   r      s!   „ ð$˜5ð $ Uó $ð$�uô $r   r   c                   ó,   — e Zd ZdZdedefd„Zdefd„Zy)ÚIdentityDecoderz 
    Handle unencoded data.
    r   r	   c                 ó   — |S r   r   r   s     r   r   zIdentityDecoder.decode   s   € Øˆr   c                  ó   — y©Nr   r   r   s    r   r   zIdentityDecoder.flush   s   € Ør   N)r   r   r   Ú__doc__r   r   r   r   r   r   r   r      s&   „ ñð˜5ð  Uó ð�uô r   r   c                   ó4   — e Zd ZdZdd„Zdedefd„Zdefd„Zy)	ÚDeflateDecoderzZ
    Handle 'deflate' decoding.

    See: https://stackoverflow.com/questions/1838699
    r	   Nc                 óD   — d| _         t        j                  «       | _        y )NT)Úfirst_attemptÚzlibÚdecompressobjÚdecompressorr   s    r   Ú__init__zDeflateDecoder.__init__*   s   € Ø!ˆÔÜ ×.Ñ.Ó0ˆÕr   r   c                 óB  — | j                   }d| _         	 | j                  j                  |«      S # t        j                  $ r[}|r?t        j
                  t        j                   «      | _        | j                  |«      cY d }~S t        t        |«      «      |‚d }~ww xY w©NF)
r%   r(   Ú
decompressr&   Úerrorr'   Ú	MAX_WBITSr   r   Ústr)r   r   Úwas_first_attemptÚexcs       r   r   zDeflateDecoder.decode.   s‚   € Ø ×.Ñ.ÐØ"ˆÔð	3Ø×$Ñ$×/Ñ/°Ó5Ð5øÜ�z‰zò 	3Ù Ü$(×$6Ñ$6¼¿¹°Ó$G�Ô!Ø—{‘{ 4Ó(Õ(Ü¤ C£Ó)¨sÐ2ûð		3ús!   •0 °BÁ;BÁ>BÂBÂBc                 ó˜   — 	 | j                   j                  «       S # t        j                  $ r}t	        t        |«      «      |‚d }~ww xY wr   ©r(   r   r&   r-   r   r/   ©r   r1   s     r   r   zDeflateDecoder.flush9   óA   € ð	3Ø×$Ñ$×*Ñ*Ó,Ð,øÜ�z‰zò 	3Ü¤ C£Ó)¨sÐ2ûð	3úó   ‚ œA	¯AÁA	©r	   N©r   r   r   r!   r)   r   r   r   r   r   r   r#   r#   #   s+   „ ñó1ð	3˜5ð 	3 Uó 	3ð3�uô 3r   r#   c                   ó4   — e Zd ZdZdd„Zdedefd„Zdefd„Zy)	ÚGZipDecoderzW
    Handle 'gzip' decoding.

    See: https://stackoverflow.com/questions/1838699
    r	   Nc                 óZ   — t        j                  t         j                  dz  «      | _        y )Né   )r&   r'   r.   r(   r   s    r   r)   zGZipDecoder.__init__G   s   € Ü ×.Ñ.¬t¯~©~ÀÑ/BÓCˆÕr   r   c                 óš   — 	 | j                   j                  |«      S # t        j                  $ r}t	        t        |«      «      |‚d }~ww xY wr   )r(   r,   r&   r-   r   r/   ©r   r   r1   s      r   r   zGZipDecoder.decodeJ   sC   € ð	3Ø×$Ñ$×/Ñ/°Ó5Ð5øÜ�z‰zò 	3Ü¤ C£Ó)¨sÐ2ûð	3ús   ‚ �A
°AÁA
c                 ó˜   — 	 | j                   j                  «       S # t        j                  $ r}t	        t        |«      «      |‚d }~ww xY wr   r3   r4   s     r   r   zGZipDecoder.flushP   r5   r6   r7   r8   r   r   r   r:   r:   @   s,   „ ñóDð3˜5ð 3 Uó 3ð3�uô 3r   r:   c                   ó4   — e Zd ZdZdd„Zdedefd„Zdefd„Zy)	ÚBrotliDecoderaT  
    Handle 'brotli' decoding.

    Requires `pip install brotlipy`. See: https://brotlipy.readthedocs.io/
        or   `pip install brotli`. See https://github.com/google/brotli
    Supports both 'brotlipy' and 'Brotli' packages since they share an import
    name. The top branches are for 'brotlipy' and bottom branches for 'Brotli'
    r	   Nc                 ó  — t         €t        d«      d ‚t        j                  «       | _        d| _        |  t        | j                  d«      r| j                  j                  | _        y | j                  j                  | _        y )NzžUsing 'BrotliDecoder', but neither of the 'brotlicffi' or 'brotli' packages have been installed. Make sure to install httpx using `pip install httpx[brotli]`.Fr,   )	r   ÚImportErrorÚDecompressorr(   Ú	seen_dataÚhasattrr,   Ú_decompressÚprocessr   s    r   r)   zBrotliDecoder.__init__a   sv   € Üˆ>ÜðPóð ð	ô #×/Ñ/Ó1ˆÔØˆŒÙÜ�4×$Ñ$ lÔ3à#×0Ñ0×;Ñ;ˆDÕð  $×0Ñ0×8Ñ8ˆDÕr   r   c                 óš   — |syd| _         	 | j                  |«      S # t        j                  $ r}t	        t        |«      «      |‚d }~ww xY w©Nr   T)rE   rG   r   r-   r   r/   r>   s      r   r   zBrotliDecoder.decodes   sJ   € ÙØØˆŒð	3Ø×#Ñ# DÓ)Ð)øÜ�|‰|ò 	3Ü¤ C£Ó)¨sÐ2ûð	3ús   Œ �A
°AÁA
c                 óà   — | j                   sy	 t        | j                  d«      r| j                  j                  «        y# t        j
                  $ r}t        t        |«      «      |‚d }~ww xY w)Nr   Úfinish)rE   rF   r(   rL   r   r-   r   r/   r4   s     r   r   zBrotliDecoder.flush|   s]   € Ø�~Š~Øð
	3Ü�t×(Ñ(¨(Ô3ð ×!Ñ!×(Ñ(Ô*ØøÜ�|‰|ò 	3Ü¤ C£Ó)¨sÐ2ûð	3ús   �0A  Á A-ÁA(Á(A-r7   r8   r   r   r   rA   rA   W   s+   „ ñó9ð$3˜5ð 3 Uó 3ð3�uô 3r   rA   c                   óV   — e Zd ZdZdej
                  e   ddfd„Zdedefd„Z	defd„Z
y)	ÚMultiDecoderzE
    Handle the case where multiple encodings have been applied.
    Úchildrenr	   Nc                 ó6   — t        t        |«      «      | _        y)zm
        'children' should be a sequence of decoders in the order in which
        each was applied.
        N)ÚlistÚreversedrO   )r   rO   s     r   r)   zMultiDecoder.__init__‘   s   € ô œX hÓ/Ó0ˆ�r   r   c                 óJ   — | j                   D ]  }|j                  |«      }Œ |S r   )rO   r   ©r   r   Úchilds      r   r   zMultiDecoder.decode™   s(   € Ø—]‘]ò 	&ˆEØ—<‘< Ó%‰Dð	&àˆr   c                 óp   — d}| j                   D ]$  }|j                  |«      |j                  «       z   }Œ& |S r    )rO   r   r   rT   s      r   r   zMultiDecoder.flushž   s8   € ØˆØ—]‘]ò 	6ˆEØ—<‘< Ó%¨¯©«Ñ5‰Dð	6àˆr   )r   r   r   r!   ÚtypingÚSequencer   r)   r   r   r   r   r   r   rN   rN   Œ   sB   „ ñð1 §¡°Ñ!@ð 1ÀTó 1ð˜5ð  Uó ð
�uô r   rN   c                   óŒ   — e Zd ZdZd	dej
                  e   ddfd„Zdedej                  e   fd„Z
dej                  e   fd„Zy)
ÚByteChunkerz>
    Handles returning byte content in fixed-size chunks.
    NÚ
chunk_sizer	   c                 óD   — t        j                  «       | _        || _        y r   )ÚioÚBytesIOÚ_bufferÚ_chunk_size©r   r[   s     r   r)   zByteChunker.__init__ª   s   € Ü—z‘z“|ˆŒØ%ˆÕr   Úcontentc                 ó¾  — | j                   €|r|gS g S | j                  j                  |«       | j                  j                  «       | j                   k\  �r| j                  j	                  «       }t        dt        |«      | j                   «      D �cg c]  }|||| j                   z    ‘Œ }}t        |d   «      | j                   k(  r7| j                  j                  d«       | j                  j                  «        |S | j                  j                  d«       | j                  j                  |d   «       | j                  j                  «        |d d S g S c c}w ©Nr   éÿÿÿÿ©	r`   r_   ÚwriteÚtellÚgetvalueÚrangeÚlenÚseekÚtruncate©r   rb   ÚvalueÚiÚchunkss        r   r   zByteChunker.decode®   s-  € Ø×ÑÐ#Ù '�G�9Ð/¨RÐ/à�‰×Ñ˜7Ô#Ø�<‰<×ÑÓ $×"2Ñ"2Ó2Ø—L‘L×)Ñ)Ó+ˆEô ˜q¤# e£*¨d×.>Ñ.>Ó?öàð �a˜!˜d×.Ñ.Ñ.Ò/ðˆFð ô �6˜"‘:‹ $×"2Ñ"2Ò2Ø—‘×!Ñ! !Ô$Ø—‘×%Ñ%Ô'Ø�à—‘×!Ñ! !Ô$Ø—‘×"Ñ" 6¨"¡:Ô.Ø—‘×%Ñ%Ô'Ø˜c˜r�{Ð"àˆIùòs   ÂEc                 ó®   — | j                   j                  «       }| j                   j                  d«       | j                   j                  «        |r|gS g S ©Nr   ©r_   ri   rl   rm   ©r   ro   s     r   r   zByteChunker.flushÅ   óE   € Ø—‘×%Ñ%Ó'ˆØ�‰×Ñ˜!ÔØ�‰×ÑÔÙ�ˆwÐ' RÐ'r   r   )r   r   r   r!   rW   ÚOptionalÚintr)   r   ÚListr   r   r   r   r   rZ   rZ   ¥   sT   „ ññ& 6§?¡?°3Ñ#7ð &À4ó &ð˜eð ¨¯©°EÑ(:ó ð.(�v—{‘{ 5Ñ)ô (r   rZ   c                   óŒ   — e Zd ZdZd	dej
                  e   ddfd„Zdedej                  e   fd„Z
dej                  e   fd„Zy)
ÚTextChunkerz>
    Handles returning text content in fixed-size chunks.
    Nr[   r	   c                 óD   — t        j                  «       | _        || _        y r   )r]   ÚStringIOr_   r`   ra   s     r   r)   zTextChunker.__init__Ñ   s   € Ü—{‘{“}ˆŒØ%ˆÕr   rb   c                 ó¶  — | j                   €|gS | j                  j                  |«       | j                  j                  «       | j                   k\  �r| j                  j	                  «       }t        dt        |«      | j                   «      D �cg c]  }|||| j                   z    ‘Œ }}t        |d   «      | j                   k(  r7| j                  j                  d«       | j                  j                  «        |S | j                  j                  d«       | j                  j                  |d   «       | j                  j                  «        |d d S g S c c}w rd   rf   rn   s        r   r   zTextChunker.decodeÕ   s&  € Ø×ÑÐ#Ø�9Ðà�‰×Ñ˜7Ô#Ø�<‰<×ÑÓ $×"2Ñ"2Ó2Ø—L‘L×)Ñ)Ó+ˆEô ˜q¤# e£*¨d×.>Ñ.>Ó?öàð �a˜!˜d×.Ñ.Ñ.Ò/ðˆFð ô �6˜"‘:‹ $×"2Ñ"2Ò2Ø—‘×!Ñ! !Ô$Ø—‘×%Ñ%Ô'Ø�à—‘×!Ñ! !Ô$Ø—‘×"Ñ" 6¨"¡:Ô.Ø—‘×%Ñ%Ô'Ø˜c˜r�{Ð"àˆIùòs   ÂEc                 ó®   — | j                   j                  «       }| j                   j                  d«       | j                   j                  «        |r|gS g S rs   rt   ru   s     r   r   zTextChunker.flushì   rv   r   r   )r   r   r   r!   rW   rw   rx   r)   r/   ry   r   r   r   r   r   r{   r{   Ì   sT   „ ññ& 6§?¡?°3Ñ#7ð &À4ó &ð˜cð  f§k¡k°#Ñ&6ó ð.(�v—{‘{ 3Ñ'ô (r   r{   c                   ó:   — e Zd ZdZd	defd„Zdedefd„Zdefd„Zy)
ÚTextDecoderz8
    Handles incrementally decoding bytes into text
    Úencodingc                 óF   —  t        j                  |«      d¬«      | _        y )NÚreplace)Úerrors)ÚcodecsÚgetincrementaldecoderÚdecoder)r   r‚   s     r   r)   zTextDecoder.__init__ø   s   € Ø=”v×3Ñ3°HÓ=ÀYÔOˆ�r   r   r	   c                 ó8   — | j                   j                  |«      S r   ©rˆ   r   r   s     r   r   zTextDecoder.decodeû   s   € Ø�|‰|×"Ñ" 4Ó(Ð(r   c                 ó:   — | j                   j                  dd«      S rJ   rŠ   r   s    r   r   zTextDecoder.flushþ   s   € Ø�|‰|×"Ñ" 3¨Ó-Ð-r   N)zutf-8)	r   r   r   r!   r/   r)   r   r   r   r   r   r   r�   r�   ó   s4   „ ññP ó Pð)˜5ð ) Só )ð.�sô .r   r�   c                   óh   — e Zd ZdZdd„Zdedej                  e   fd„Zdej                  e   fd„Z	y)	ÚLineDecoderz“
    Handles incrementally reading lines from text.

    Has the same behaviour as the stdllib splitlines, but handling the input iteratively.
    r	   Nc                 ó    — g | _         d| _        y r+   )ÚbufferÚtrailing_crr   s    r   r)   zLineDecoder.__init__	  s   € Ø(*ˆŒØ!&ˆÕr   Útextc                 ó°  — d}| j                   rd|z   }d| _         |j                  d«      rd| _         |d d }|sg S |d   |v }|j                  «       }t        |«      dk(  r"|s | j                  j                  |d   «       g S | j                  r/dj                  | j                  «      |d   z   g|dd  z   }g | _        |s|j                  «       g| _        |S )	Nu   
Â…â€¨â€©úFTre   r   r   Ú )r�   ÚendswithÚ
splitlinesrk   r�   ÚappendÚjoinÚpop)r   r‘   ÚNEWLINE_CHARSÚtrailing_newlineÚliness        r   r   zLineDecoder.decode  sà   € àBˆð ×ÒØ˜$‘;ˆDØ$ˆDÔØ�=‰=˜ÔØ#ˆDÔØ˜˜�9ˆDáØˆIà ™8 }Ð4ÐØ—‘Ó!ˆäˆu‹:˜Š?Ñ#3à�K‰K×Ñ˜u Q™xÔ(ØˆIà�;Š;ð —W‘W˜TŸ[™[Ó)¨E°!©HÑ4Ð5¸¸a¸b¸	ÑAˆEØˆDŒKáð !Ÿ9™9›;˜-ˆDŒKàˆr   c                 óŽ   — | j                   s| j                  sg S dj                  | j                   «      g}g | _         d| _        |S )Nr”   F)r�   r�   r˜   )r   rœ   s     r   r   zLineDecoder.flush1  s?   € Ø�{Š{ 4×#3Ò#3ØˆIà—‘˜Ÿ™Ó%Ð&ˆØˆŒØ ˆÔØˆr   r7   )
r   r   r   r!   r)   r/   rW   ry   r   r   r   r   r   r�   r�     s>   „ ñó'ð"˜3ð " 6§;¡;¨sÑ#3ó "ðH�v—{‘{ 3Ñ'ô r   r�   )ÚidentityÚgzipÚdeflateÚbrr¡   )r!   r†   r]   rW   r&   Ú_compatr   Ú_exceptionsr   r   r   r#   r:   rA   rN   rZ   r{   r�   r�   ÚSUPPORTED_DECODERSr™   r   r   r   ú<module>r¥      sÀ   ðñó
 Û 	Û Û å Ý &÷$ñ $ô	�nô 	ô3�^ô 3ô:3�.ô 3ô.23�Nô 23ôj�>ô ÷2$(ñ $(÷N$(ñ $(÷N.ñ .÷6ñ 6ðt  ØØØ
ñ	Ð ð 
€>Ø×Ñ˜4Õ ð r   