Ë
    þéñiÂ_  ã                  óf  — d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZmZ dd	lmZ dd
lmZmZmZ ddlmZmZ erddlmZ  ej6                  e«      ZdZdZdZ  e!d«      D � cg c]
  } d| z  dz
  ‘Œ c} Z"dZ#dd„Z$dd„Z%dd„Z&	 	 dd„Z'd d„Z( G d„ d«      Z) G d„ d«      Z*yc c} w )!zL
Implements the HPACK header compression algorithm as detailed by RFC 7541.
é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyé   )ÚHPACKDecodingErrorÚInvalidTableSizeErrorÚOversizedHeaderListError)ÚHuffmanEncoder)ÚREQUEST_CODESÚREQUEST_CODES_LENGTH)Údecode_huffman)ÚHeaderTupleÚHeaderWeaklyTypedÚNeverIndexedHeaderTuple)ÚHeaderTableÚtable_entry_size)ÚIterableó    ó   ó   @é	   é   i   c                óÂ   — t        | d   «      }t        | d   «      }|s0| j                  |j                  d«      |j                  d«      «      S | j                  ||«      S )zj
    Provides a header as a unicode string if raw is False, otherwise returns
    it as a bytestring.
    r   r   úutf-8)ÚbytesÚ	__class__Údecode)ÚheaderÚrawÚnameÚvalues       úM/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/hpack/hpack.pyÚ_unicode_if_neededr#   #   s[   € ô
 �˜‘Ó€DÜ�&˜‘)Ó€EáØ×Ñ §¡¨GÓ 4°e·l±lÀ7Ó6KÓLÐLØ×Ñ˜D %Ó(Ð(ó    c                óX  — t         j                  d| |«       | dk  rd| › �}t        |«      ‚|dk  s|dkD  rd|› �}t        |«      ‚t        |   }| |k  rt	        | g«      S |g}| |z  } | dk\  r"|j                  | dz  dz   «       | d	z  } | dk\  rŒ"|j                  | «       t	        |«      S )
zi
    Encodes an integer according to the wacky integer encoding rules
    defined in the HPACK spec.
    zEncoding %d with %d bitsr   z'Can only encode positive integers, got r   é   ú)Prefix bits must be between 1 and 8, got é€   é   é   )ÚlogÚdebugÚ
ValueErrorÚ_PREFIX_BIT_MAX_NUMBERSÚ	bytearrayÚappend)ÚintegerÚprefix_bitsÚmsgÚ
max_numberÚelementss        r"   Úencode_integerr6   0   sÌ   € ô
 ‡I�IÐ(¨'°;Ô?à�‚{Ø7¸°yÐAˆÜ˜‹oÐà�Q‚˜+¨š/Ø9¸+¸ÐGˆÜ˜‹oÐä(¨Ñ5€Jà�ÒÜ˜'˜Ó#Ð#Øˆ|€HØˆzÑ€Gà
�SŠ.Ø�‰˜ 3™¨#Ñ-Ô.Ø�A‰ˆð �S‹.ð ‡O�O�GÔä�XÓÐr$   c                óL  — |dk  s|dkD  rd|› �}t        |«      ‚t        |   }d}d}dd|z
  z	  }	 | d   |z  }||k(  r+	 | |   }|dz  }|dk\  r||dz
  |z  z  }n	|||z  z  }n|dz  }Œ*t        j                  d
||«       ||fS # t        $ r}	d| ›�}t        |«      |	‚d	}	~	ww xY w)zï
    Decodes an integer according to the wacky integer encoding rules
    defined in the HPACK spec. Returns a tuple of the decoded integer and the
    number of bytes that were consumed from ``data`` in order to get that
    integer.
    r   r&   r'   r   éÿ   r(   r*   z3Unable to decode HPACK integer representation from NzDecoded %d, consumed %d bytes)r-   r.   Ú
IndexErrorr   r+   r,   )
Údatar2   r3   r4   ÚindexÚshiftÚmaskÚnumberÚ	next_byteÚerrs
             r"   Údecode_integerrA   O   sû   € ð �Q‚˜+¨š/Ø9¸+¸ÐGˆÜ˜‹oÐä(¨Ñ5€JØ€EØ€EØ�Q˜‘_Ñ%€Dð/Ø�a‘˜4‘ˆØ�ZÒØØ  ™K�	Ø˜‘
�à Ò#Ø˜y¨3™°5Ñ8Ñ8‘Fà˜i¨5Ñ0Ñ0�FØØ˜‘
�ð ô ‡I�IÐ-¨v°uÔ=à�5ˆ=Ðøô ò /ØCÀDÀ8ÐLˆÜ  Ó%¨3Ð.ûð/ús   ±8B Â	B#ÂBÂB#c              #  ó¶   K  — t        | t        «      sdt        | «      › �}t        |«      ‚t	        | j                  «       d„ ¬«      }|D ]  }|| |   f–— Œ y­w)z¯
    Converts a dictionary to an iterable of key-value tuples. This is a
    HPACK-specific function because it pulls "special-headers" out first and
    then emits them.
    zheader_dict not a dict, but c                ó8   — t        | «      j                  d«       S )Nó   :)Ú	_to_bytesÚ
startswith)Úks    r"   ú<lambda>z#_dict_to_iterable.<locals>.<lambda>ƒ   s   € œ) A›,×1Ñ1°$Ó7Ð7€ r$   )ÚkeyN)Ú
isinstanceÚdictÚtypeÚ	TypeErrorÚsortedÚkeys)Úheader_dictr3   rO   rI   s       r"   Ú_dict_to_iterablerQ   v   sh   è ø€ ô �k¤4Ô(Ø,¬T°+Ó->Ð,?Ð@ˆÜ˜‹nÐäØ×ÑÓÙ7ô€Dð ò $ˆØ�;˜sÑ#Ð#Ó#ñ$ùs   ‚AAc                ót   — t        | «      }|t        u r| S |t        urt        | «      } | j                  d«      S )zB
    Convert anything to bytes through a UTF-8 encoded string
    r   )rL   r   ÚstrÚencode)r!   Úts     r"   rE   rE   ‰   s8   € ô 	ˆU‹€AØŒE�zØˆØ”�|Ü�E“
ˆØ�<‰<˜Ó Ð r$   c                  ó”   — e Zd ZdZdd„Zedd„«       Zej                  dd„«       Z	 d	 	 	 	 	 dd„Zddd„Z	dd„Z
ddd„Zddd	„Zdd
„Zy)ÚEncoderzm
    An HPACK encoder object. This object takes HTTP headers and emits encoded
    HTTP/2 header blocks.
    c                ób   — t        «       | _        t        t        t        «      | _        g | _        y ©N)r   Úheader_tabler
   r   r   Úhuffman_coderÚtable_size_changes©Úselfs    r"   Ú__init__zEncoder.__init__›   s)   € Ü'›MˆÔÜ+ÜÔ/ó
ˆÔð .0ˆÕr$   c                ó.   — | j                   j                  S ©z>
        Controls the size of the HPACK header table.
        ©rZ   Úmaxsizer]   s    r"   Úheader_table_sizezEncoder.header_table_size¢   ó   € ð
 × Ñ ×(Ñ(Ð(r$   c                óŠ   — || j                   _        | j                   j                  r| j                  j	                  |«       y y rY   )rZ   rc   Úresizedr\   r0   ©r^   r!   s     r"   rd   zEncoder.header_table_size©   s8   € à$)ˆ×ÑÔ!Ø×Ñ×$Ò$Ø×#Ñ#×*Ñ*¨5Õ1ð %r$   c                ó$  — g }| j                   j                  r0|j                  | j                  «       «       d| j                   _        t	        |t
        «      rt        |«      }n	 t        |«      }|D ]s  }d}t	        |t        «      r|j                   }nt        |«      dkD  r|d   }t        |d   «      t        |d   «      f}|j                  | j                  |||«      «       Œu dj                  |«      }t        j                  d|«       |S )a€	  
        Takes a set of headers and encodes them into a HPACK-encoded header
        block.

        :param headers: The headers to encode. Must be either an iterable of
                        tuples, an iterable of :class:`HeaderTuple
                        <hpack.HeaderTuple>`, or a ``dict``.

                        If an iterable of tuples, the tuples may be either
                        two-tuples or three-tuples. If they are two-tuples, the
                        tuples must be of the format ``(name, value)``. If they
                        are three-tuples, they must be of the format
                        ``(name, value, sensitive)``, where ``sensitive`` is a
                        boolean value indicating whether the header should be
                        added to header tables anywhere. If not present,
                        ``sensitive`` defaults to ``False``.

                        If an iterable of :class:`HeaderTuple
                        <hpack.HeaderTuple>`, the tuples must always be
                        two-tuples. Instead of using ``sensitive`` as a third
                        tuple entry, use :class:`NeverIndexedHeaderTuple
                        <hpack.NeverIndexedHeaderTuple>` to request that
                        the field never be indexed.

                        .. warning:: HTTP/2 requires that all special headers
                            (headers whose names begin with ``:`` characters)
                            appear at the *start* of the header block. While
                            this method will ensure that happens for ``dict``
                            subclasses, callers using any other iterable of
                            tuples **must** ensure they place their special
                            headers at the start of the iterable.

                            For efficiency reasons users should prefer to use
                            iterables of two-tuples: fixing the ordering of
                            dictionary headers is an expensive operation that
                            should be avoided if possible.

        :param huffman: (optional) Whether to Huffman-encode any header sent as
                        a literal value. Except for use when debugging, it is
                        recommended that this be left enabled.

        :returns: A bytestring containing the HPACK-encoded header block.
        Fr   r   r   r$   zEncoded header block to %s)rZ   rg   r0   Ú_encode_table_size_changerJ   rK   rQ   Úiterr   Ú	indexableÚlenrE   ÚaddÚjoinr+   r,   )	r^   ÚheadersÚhuffmanÚheader_blockÚhpack_headersr   Ú	sensitiveÚ
new_headerÚencodeds	            r"   rT   zEncoder.encode¯   s  € ðp ˆð ×Ñ×$Ò$Ø×Ñ × >Ñ >Ó @ÔAØ(-ˆD×ÑÔ%ä�gœtÔ$ô .¨gÓ6‰Mðô& ! ›MˆMð $ò 		JˆFØˆIÜ˜&¤+Ô.à &× 0Ñ 0Ð0‘	Ü�V“˜q’Ø" 1™I�	ä# F¨1¡IÓ.´	¸&À¹)Ó0DÐEˆJØ×Ñ §¡¨°YÀÓ HÕIð		Jð —(‘(˜<Ó(ˆä�	‰	Ð.°Ô8àˆr$   c                óš  — t         j                  d|||«       |\  }}|st        nt        }| j                  j                  ||«      }|€4| j                  ||||«      }|s| j                  j                  ||«       |S |\  }	}}
|
r| j                  |	«      }|S | j                  |	|||«      }|s| j                  j                  ||«       |S )z6
        Serializes a header key-value tuple.
        z7Adding %s to the header table, sensitive:%s, huffman:%s)
r+   r,   ÚINDEX_INCREMENTALÚINDEX_NEVERrZ   ÚsearchÚ_encode_literalrn   Ú_encode_indexedÚ_encode_indexed_literal)r^   Úto_addrt   rq   r    r!   ÚindexbitÚmatchrv   r;   Úperfects              r"   rn   zEncoder.add  së   € ô 	�	‰	ØEØØØô		
ð ‰ˆˆeñ -6Õ$¼;ˆð ×!Ñ!×(Ñ(¨¨uÓ5ˆàˆ=ð ×*Ñ*¨4°¸À'ÓJˆGÙØ×!Ñ!×%Ñ% d¨EÔ2ØˆNð
  %Ñˆˆt�Wáà×*Ñ*¨5Ó1ˆGð ˆð ×2Ñ2Ø�u˜h¨óˆGñ Ø×!Ñ!×%Ñ% d¨EÔ2àˆr$   c                óJ   — t        |d«      }|dxx   dz  cc<   t        |«      S )zD
        Encodes a header using the indexed representation.
        r*   r   r(   )r6   r   )r^   r;   Úfields      r"   r|   zEncoder._encode_indexedM  s(   € ô ˜u aÓ(ˆØˆa‹�DÑ‹Ü�U‹|Ðr$   c                óN  — |r6| j                   j                  |«      }| j                   j                  |«      }t        t        |«      d«      }t        t        |«      d«      }|r|dxx   dz  cc<   |dxx   dz  cc<   dj	                  |t        |«      |t        |«      |g«      S )z·
        Encodes a header with a literal name and literal value. If ``indexing``
        is True, the header will be added to the header table: otherwise it
        will not.
        r*   r   r(   r$   )r[   rT   r6   rm   ro   r   )r^   r    r!   r   rq   Úname_lenÚ	value_lens          r"   r{   zEncoder._encode_literalU  sš   € ñ Ø×%Ñ%×,Ñ,¨TÓ2ˆDØ×&Ñ&×-Ñ-¨eÓ4ˆEä!¤# d£)¨QÓ/ˆÜ"¤3 u£:¨qÓ1ˆ	áØ�Q‹K˜4Ñ‹KØ�a‹L˜DÑ ‹Là�x‰xØ”u˜X“¨¬e°IÓ.>ÀÐFó
ð 	
r$   c                ó@  — |t         k7  rt        |d«      }nt        |d«      }|dxx   t        |«      z  cc<   |r| j                  j	                  |«      }t        t        |«      d«      }|r|dxx   dz  cc<   dj                  t        |«      t        |«      |g«      S )zv
        Encodes a header with an indexed name and a literal value and performs
        incremental indexing.
        é   é   r   r*   r(   r$   )rx   r6   Úordr[   rT   rm   ro   r   )r^   r;   r!   r   rq   Úprefixr†   s          r"   r}   zEncoder._encode_indexed_literalj  s�   € ð
 Ô(Ò(Ü# E¨1Ó-‰Fä# E¨1Ó-ˆFàˆq‹	”S˜“]Ñ"‹	áØ×&Ñ&×-Ñ-¨eÓ4ˆEä"¤3 u£:¨qÓ1ˆ	áØ�a‹L˜DÑ ‹Là�x‰xœ˜v›¬¨iÓ(8¸%Ð@ÓAÐAr$   c                óˆ   — d}| j                   D ])  }t        |d«      }|dxx   dz  cc<   |t        |«      z  }Œ+ g | _         |S )zd
        Produces the encoded form of all header table size change context
        updates.
        r$   é   r   é    )r\   r6   r   )r^   ÚblockÚ
size_bytesÚbs       r"   rj   z!Encoder._encode_table_size_change€  sT   € ð
 ˆØ×1Ñ1ò 	ˆJÜ˜z¨1Ó-ˆAØˆa‹D�D‰L‹DØ”U˜1“XÑ‰Eð	ð #%ˆÔØˆr$   N©ÚreturnÚNone©r“   Úint©r!   r–   r“   r”   )T)rp   z‡Iterable[HeaderTuple | tuple[bytes | str, bytes | str] | tuple[bytes | str, bytes | str, bool | None]] | dict[bytes | str, bytes | str]rq   Úboolr“   r   ©F)r~   ztuple[bytes, bytes]rt   r˜   rq   r˜   r“   r   )r;   r–   r“   r   )
r    r   r!   r   r   r   rq   r˜   r“   r   )
r;   r–   r!   r   r   r   rq   r˜   r“   r   )r“   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r_   Úpropertyrd   ÚsetterrT   rn   r|   r{   r}   rj   © r$   r"   rW   rW   •   s‚   „ ñó
0ð ò)ó ð)ð ×Ñò2ó ð2ð  $ðkð2ðkð ðkð ).ókôZ/óbô
ô*Bô,r$   rW   c                  óŽ   — e Zd ZdZefdd„Zedd„«       Zej                  dd„«       Zddd„Z	dd„Z
dd„Zdd„Zdd	„Zdd
„Zdd„Zy)ÚDecodera  
    An HPACK decoder object.

    .. versionchanged:: 2.3.0
       Added ``max_header_list_size`` argument.

    :param max_header_list_size: The maximum decompressed size we will allow
        for any single header block. This is a protection against DoS attacks
        that attempt to force the application to expand a relatively small
        amount of data into a really large header list, allowing enormous
        amounts of memory to be allocated.

        If this amount of data is exceeded, a `OversizedHeaderListError
        <hpack.OversizedHeaderListError>` exception will be raised. At this
        point the connection should be shut down, as the HPACK state will no
        longer be usable.

        Defaults to 64kB.
    :type max_header_list_size: ``int``
    c                óf   — t        «       | _        || _        | j                  j                  | _        y rY   )r   rZ   Úmax_header_list_sizerc   Úmax_allowed_table_size)r^   r¤   s     r"   r_   zDecoder.__init__¤  s,   € Ü'›MˆÔð  %9ˆÔ!ð '+×&7Ñ&7×&?Ñ&?ˆÕ#r$   c                ó.   — | j                   j                  S ra   rb   r]   s    r"   rd   zDecoder.header_table_sizeÀ  re   r$   c                ó&   — || j                   _        y rY   rb   rh   s     r"   rd   zDecoder.header_table_sizeÇ  s   € à$)ˆ×ÑÕ!r$   c                ó  — t         j                  d|«       t        |«      }g }t        |«      }d}d}||k  rÿ||   }t	        |dz  «      }	t	        |dz  «      }
t	        |dz  «      }|	r| j                  ||d «      \  }}nY|
r| j                  ||d «      \  }}n?|r&|rd}t        |«      ‚| j                  ||d «      }d}n| j                  ||d «      \  }}|rP|j                  |«       |t        |d   |d   «      z  }|| j                  kD  rd	| j                  › d
�}t        |«      ‚||z  }||k  rŒÿ| j                  «        	 |D �cg c]  }t        ||«      ‘Œ c}S c c}w # t         $ r}d}t        |«      |‚d}~ww xY w)aê  
        Takes an HPACK-encoded header block and decodes it into a header set.

        :param data: A bytestring representing a complete HPACK-encoded header
                     block.
        :param raw: (optional) Whether to return the headers as tuples of raw
                    byte strings or to decode them as UTF-8 before returning
                    them. The default value is False, which returns tuples of
                    Unicode strings
        :returns: A list of two-tuples of ``(name, value)`` representing the
                  HPACK-encoded headers, in the order they were decoded.
        :raises HPACKDecodingError: If an error is encountered while decoding
                                    the header block.
        zDecoding %sr   r(   é@   rŽ   Nz/Table size update not at the start of the blockr   zA header list larger than z has been receivedz!Unable to decode headers as UTF-8)r+   r,   Ú
memoryviewrm   r˜   Ú_decode_indexedÚ_decode_literal_indexr   Ú_update_encoding_contextÚ_decode_literal_no_indexr0   r   r¤   r	   Ú_assert_valid_table_sizer#   ÚUnicodeDecodeError)r^   r:   r   Údata_memrp   Údata_lenÚinflated_sizeÚcurrent_indexÚcurrentÚindexedÚliteral_indexÚencoding_updater   Úconsumedr3   Úhr@   s                    r"   r   zDecoder.decodeË  sÙ  € ô 	�	‰	�- Ô&ä˜dÓ#ˆØ%'ˆÜ�t“9ˆØˆØˆà˜hÒ&ð ˜=Ñ)ˆGÜ˜7 T™>Ó*ˆGô ! ¨4¡Ó0ˆMô # 7¨T¡>Ó2ˆOáØ#'×#7Ñ#7Ø˜]˜^Ð,ó$Ñ �™ñ à#'×#=Ñ#=Ø˜]˜^Ð,ó$Ñ �™ñ !ñ ØK�CÜ,¨SÓ1Ð1Ø×8Ñ8Ø˜]˜^Ð,ó�ð ‘ð $(×#@Ñ#@Ø˜]˜^Ð,ó$Ñ �˜ñ Ø—‘˜vÔ&ØÔ!1°&¸±)¸VÀA¹YÓ!GÑG�à  4×#<Ñ#<Ò<Ø6°t×7PÑ7PÐ6QÐQcÐd�CÜ2°3Ó7Ð7à˜XÑ%ˆMð_ ˜hÓ&ðh 	×%Ñ%Ô'ð	3Ø8?Ö@°1Ô& q¨#Õ.Ò@Ð@ùÒ@øÜ!ò 	3Ø5ˆCÜ$ SÓ)¨sÐ2ûð	3ús*   ÅE' ÅE"ÅE' Å"E' Å'	FÅ0E>Å>Fc                óP   — | j                   | j                  kD  rd}t        |«      ‚y)zs
        Check that the table size set by the encoder is lower than the maximum
        we expect to have.
        z3Encoder did not shrink table size to within the maxN)rd   r¥   r   )r^   r3   s     r"   r¯   z Decoder._assert_valid_table_size  s.   € ð
 ×!Ñ! D×$?Ñ$?Ò?ØGˆCÜ'¨Ó,Ð,ð @r$   c                ój   — t        |d«      \  }}|| j                  kD  rd}t        |«      ‚|| _        |S )zC
        Handles a byte that updates the encoding context.
        r�   z)Encoder exceeded max allowable table size)rA   r¥   r   rd   )r^   r:   Únew_sizer¹   r3   s        r"   r­   z Decoder._update_encoding_context'  s@   € ô
 ,¨D°!Ó4Ñˆ�(Ø�d×1Ñ1Ò1Ø=ˆCÜ'¨Ó,Ð,Ø!)ˆÔØˆr$   c                ó˜   — t        |d«      \  }}t        | j                  j                  |«      Ž }t        j                  d||«       ||fS )zP
        Decodes a header represented using the indexed representation.
        r*   zDecoded %s, consumed %d)rA   r   rZ   Úget_by_indexr+   r,   )r^   r:   r;   r¹   r   s        r"   r«   zDecoder._decode_indexed3  sK   € ô )¨¨qÓ1‰ˆˆxÜ˜d×/Ñ/×<Ñ<¸UÓCÐDˆÜ�	‰	Ð+¨V°XÔ>Ø�xÐÐr$   c                ó(   — | j                  |d¬«      S )NF©Úshould_index©Ú_decode_literal©r^   r:   s     r"   r®   z Decoder._decode_literal_no_index<  s   € Ø×#Ñ# D°uÐ#Ó=Ð=r$   c                ó(   — | j                  |d¬«      S )NTrÁ   rÃ   rÅ   s     r"   r¬   zDecoder._decode_literal_index?  s   € Ø×#Ñ# D°tÐ#Ó<Ð<r$   c                ó¸  — d}|r|d   dz  }d}d}n|d   }|dz  }d}t        |dz  «      }|r2t        ||«      \  }}	| j                  j                  |«      d   }
|	}d}nR|dd	 }t        |d
«      \  }}	||	|	|z    }
t	        |
«      |k7  rd}t        |«      ‚|d   dz  rt        |
«      }
|	|z   dz   }||	|z   d	 }t        |d
«      \  }}	||	|	|z    }t	        |«      |k7  rd}t        |«      ‚|d   dz  rt        |«      }|||	z   z  }|rt        |
|«      }nt        |
|«      }|r| j                  j                  |
|«       t        j                  d|||«       ||fS )z>
        Decodes a header represented with a literal.
        r   é?   r‰   Fé   rˆ   é   r   Nr*   zTruncated header blockr(   z/Decoded %s, total consumed %d bytes, indexed %s)r˜   rA   rZ   r¿   rm   r   r   r   r   rn   r+   r,   )r^   r:   rÂ   Útotal_consumedÚindexed_namer…   Únot_indexableÚ	high_byter;   r¹   r    Úlengthr3   r!   r   s                  r"   rÄ   zDecoder._decode_literalB  sÈ  € ð ˆñ Ø ™7 T™>ˆLØˆHØ!‰Mà˜Q™ˆIØ$ tÑ+ˆLØˆHÜ  ¨TÑ!1Ó2ˆMáä,¨T°8Ó<‰OˆE�8Ø×$Ñ$×1Ñ1°%Ó8¸Ñ;ˆDà%ˆNØ‰Fð ˜˜�8ˆDä-¨d°AÓ6ÑˆF�HØ˜ ¨FÑ!2Ð3ˆDÜ�4‹y˜FÒ"Ø.�Ü(¨Ó-Ð-à�A‰w˜Š~Ü% dÓ+�Ø%¨Ñ.°Ñ2ˆNà�H˜vÑ%Ð&Ð'ˆô *¨$°Ó2Ñˆ�Ø�X˜h¨Ñ/Ð0ˆÜˆu‹:˜ÒØ*ˆCÜ$ SÓ)Ð)à�‰7�TŠ>Ü" 5Ó)ˆEð 	˜& 8Ñ+Ñ+ˆñ
 Ü,¨T°5Ó9‰Fä   uÓ-ˆFñ Ø×Ñ×!Ñ! $¨Ô.ä�	‰	Ø=ØØØô		
ð �~Ð%Ð%r$   N)r¤   r–   r“   r”   r•   r—   r™   )r:   r   r   r˜   r“   zIterable[HeaderTuple]r’   )r:   r   r“   r–   )r:   r   r“   útuple[HeaderTuple, int])r:   r   rÂ   r˜   r“   rÐ   )rš   r›   rœ   r�   ÚDEFAULT_MAX_HEADER_LIST_SIZEr_   rž   rd   rŸ   r   r¯   r­   r«   r®   r¬   rÄ   r    r$   r"   r¢   r¢   Ž  sg   „ ñð* 4Pô @ð8 ò)ó ð)ð ×Ñò*ó ð*ôQ3óf-ó
ó ó>ó=ôL&r$   r¢   )r   r   r   r˜   r“   r   )r1   r–   r2   r–   r“   r/   )r:   r   r2   r–   r“   ztuple[int, int])rP   zdict[bytes | str, bytes | str]r“   z)Iterable[tuple[bytes | str, bytes | str]])r!   zbytes | str | Anyr“   r   )+r�   Ú
__future__r   ÚloggingÚtypingr   r   Ú
exceptionsr   r   r	   rq   r
   Úhuffman_constantsr   r   Úhuffman_tabler   Ústructr   r   r   Útabler   r   Úcollections.abcr   Ú	getLoggerrš   r+   Ú
INDEX_NONEry   rx   Úranger.   rÑ   r#   r6   rA   rQ   rE   rW   r¢   )Úis   0r"   ú<module>rß      s½   ðñõ #ã ß %ç [Ñ [Ý #ß BÝ )ß KÑ Kß 0áÝ(à€g×Ñ˜Ó!€à€
Ø€ØÐ ñ
 27°q³Ö:¨A˜A ™F a›<Ò:Ð ð  'Ð ó
)óó>$ðN$Ø4ó$ó&	!÷vñ v÷r@&ò @&ùòe ;s   Á/B.