+
    üg©jF  ã                  óD  € ^ RI Ht ^ RIt^ RIHtHtHtHt ^ RIH	t	H
t
 . ROt ! R R]4      t]P                  ! R4      P                  t ! R	 R]]]3,          4      t ! R
 R]
4      t]]]]3,          ,          ]]]]3,          ,          ,          ],          t ^RIHt R# )é    )ÚannotationsN)ÚIterableÚIteratorÚMappingÚMutableMapping)ÚAnyÚProtocolÚHeadersÚMultipleValuesErrorc                  ó2   a € ] tR t^tRtR V 3R lltRtV ;t# )r   zH
Exception raised when :class:`Headers` has multiple values for a key.

c               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚstr© )Úformats   "ÚT/var/www/html/bestweb/venv/lib/python3.14/site-packages/websockets/datastructures.pyÚ__annotate__Ú MultipleValuesError.__annotate__   s   € ÷ !ñ !˜ñ !ó    c                	óŒ   <€ \        V P                  4      ^8X  d   \        V P                  ^ ,          4      # \        SV `  4       # ©é   )ÚlenÚargsÚreprÚsuperÚ__str__)ÚselfÚ	__class__s   &€r   r   ÚMultipleValuesError.__str__   s3   ø€ äˆt�y‰y‹>˜QÔÜ˜Ÿ	™	 !�Ó%Ð%Ü‰w‰Ó Ð r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__static_attributes__Ú__classcell__©r!   s   @r   r   r      s   ø† ñ÷
!ö !r   z[\x09\x20-\x7e\x80-\xff]*c                  óú   a € ] tR t^ tRtRR.tR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR V 3R lltR  R! ltR" R# ltR$ R% ltR&tV ;t# )'r
   a	  
Efficient data structure for manipulating HTTP headers.

A :class:`list` of ``(name, values)`` is inefficient for lookups.

A :class:`dict` doesn't suffice because header names are case-insensitive
and multiple occurrences of headers with the same name are possible.

:class:`Headers` stores HTTP headers in a hybrid data structure to provide
efficient insertions and lookups while preserving the original data.

In order to account for multiple values with minimal hassle,
:class:`Headers` follows this logic:

- When getting a header with ``headers[name]``:
    - if there's no value, :exc:`KeyError` is raised;
    - if there's exactly one value, it's returned;
    - if there's more than one value, :exc:`MultipleValuesError` is raised.

- When setting a header with ``headers[name] = value``, the value is
  appended to the list of values for that header.

- When deleting a header with ``del headers[name]``, all values for that
  header are removed (this is slow).

Other methods for manipulating headers are consistent with this logic.

As long as no header occurs multiple times, :class:`Headers` behaves like
:class:`dict`, except keys are lower-cased to provide case-insensitivity.

Two methods support manipulating multiple values explicitly:

- :meth:`get_all` returns a list of all values for a header;
- :meth:`raw_items` returns an iterator of ``(name, values)`` pairs.

Header names and values are expected to contain only ASCII text. However,
non-ASCII values happen in practice, even though there is no standard for
transmitting non-ASCII data in HTTP headers. :class:`Headers` supports it
by treating it as ISO-8859-1 data. This is a safe and reversible encoding
to represent arbitrary data in a :class:`str`.

When reading headers from the network, if the actual encoding isn't
ISO-8859-1, you must re-encode and decode, e.g.::

    value = headers[key].encode("iso-8859-1").decode("utf-8")

Conversely, when sending headers to the network, if you need to use a
different encoding, you can encode and decode, e.g.::

    headers[key] = value.encode("utf-8").decode("iso-8859-1")

When assigning a value to a header, as a security hardening measure, the
value is checked for unsafe characters. The name isn't checked because it's
usually a constant in code, unlikely to be tainted by user input.

Ú_dictÚ_listc               ó$   € V ^8„  d   QhRRRRRR/# ©r   r   ÚHeadersLikeÚkwargsr   r   ÚNoner   )r   s   "r   r   ÚHeaders.__annotate__]   s!   € ÷ %ñ %˜kð %°Sð %¸Tñ %r   c                	óF   € / V n         . V n        V P                  ! V/ VB  R # ©N)r,   r-   Úupdate)r    r   r1   s   &*,r   Ú__init__ÚHeaders.__init__]   s!   € Ø+-ˆŒ
Ø,.ˆŒ
Ø�Š�TÐ$˜VÔ$r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r3   b   s   € ÷ Tñ T˜ñ Tr   c                	óT   € R P                  R V P                   4       4      R,           # )Ú c              3  ó6   "  € T F  w  rV R V R2x € K  	  R# 5i)z: ú
Nr   )Ú.0ÚkeyÚvalues   &  r   Ú	<genexpr>Ú"Headers.__str__.<locals>.<genexpr>c   s   é € ÐJ¹z±°˜#˜˜b   tÕ,»zùs   ‚r=   )Újoinr-   ©r    s   &r   r   ÚHeaders.__str__b   s    € Ø�w‰wÑJ¸t¿zºzÓJÓJÈVÕSÐSr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   r3   e   s   € ÷ <ñ <˜#ñ <r   c                	óP   € V P                   P                   R V P                  : R2# )Ú(Ú))r!   r#   r-   rD   s   &r   Ú__repr__ÚHeaders.__repr__e   s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯J©J©>¸Ð;Ð;r   c               ó   € V ^8„  d   QhRR/# )r   r   r
   r   )r   s   "r   r   r3   h   s   € ÷ ñ �gñ r   c                	ó¢   € V P                  4       pV P                  P                  4       Vn        V P                  P                  4       Vn        V# r5   )r!   r,   Úcopyr-   )r    rN   s   & r   rN   ÚHeaders.copyh   s7   € Ø�~‰~ÓˆØ—Z‘Z—_‘_Ó&ˆŒ
Ø—Z‘Z—_‘_Ó&ˆŒ
Øˆr   c               ó   € V ^8„  d   QhRR/# )r   r   Úbytesr   )r   s   "r   r   r3   n   s   € ÷ .ñ .˜5ñ .r   c                	ó6   € \        V 4      P                  R 4      # )z
iso-8859-1)r   ÚencoderD   s   &r   Ú	serializeÚHeaders.serializen   s   € ô �4‹y×Ñ Ó-Ð-r   c               ó    € V ^8„  d   QhRRRR/# )r   r?   Úobjectr   Úboolr   )r   s   "r   r   r3   u   s   € ÷ Bñ B ð B¨4ñ Br   c                	ól   € \        V\        4      ;'       d    VP                  4       V P                  9   # r5   )Ú
isinstancer   Úlowerr,   ©r    r?   s   &&r   Ú__contains__ÚHeaders.__contains__u   s&   € Ü˜#œsÓ#×AÐA¨¯	©	«°t·z±zÑ(AÐAr   c               ó   € V ^8„  d   QhRR/# )r   r   zIterator[str]r   )r   s   "r   r   r3   x   s   € ÷  ñ  ˜-ñ  r   c                	ó,   € \        V P                  4      # r5   )Úiterr,   rD   s   &r   Ú__iter__ÚHeaders.__iter__x   s   € Ü�D—J‘JÓÐr   c               ó   € V ^8„  d   QhRR/# )r   r   Úintr   )r   s   "r   r   r3   {   s   € ÷ ñ ˜ñ r   c                	ó,   € \        V P                  4      # r5   )r   r,   rD   s   &r   Ú__len__ÚHeaders.__len__{   s   € Ü�4—:‘:‹Ðr   c               ó    € V ^8„  d   QhRRRR/# ©r   r?   r   r   r   )r   s   "r   r   r3   €   s   € ÷ +ñ +˜sð + sñ +r   c                	óŒ   € V P                   VP                  4       ,          p\        V4      ^8X  d
   V^ ,          # \        V4      hr   )r,   r[   r   r   ©r    r?   r@   s   && r   Ú__getitem__ÚHeaders.__getitem__€   s5   € Ø—
‘
˜3Ÿ9™9›;Õ'ˆÜˆu‹:˜Œ?Ø˜•8ˆOä% cÓ*Ð*r   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   r?   r   r@   r   r2   r   )r   s   "r   r   r3   ‡   s!   € ÷ (ñ (˜sð (¨3ð (°4ñ (r   c                	óú   € \        \        V4      4      '       g   \        W4      hV P                  P	                  VP                  4       . 4      P                  V4       V P                  P                  W34       R # r5   )Úis_valid_header_valuer   ÚInvalidHeaderValuer,   Ú
setdefaultr[   Úappendr-   rl   s   &&&r   Ú__setitem__ÚHeaders.__setitem__‡   sU   € Ü$¤S¨£Z×0Ò0Ü$ SÓ0Ð0Ø�
‰
×Ñ˜cŸi™i›k¨2Ó.×5Ñ5°eÔ<Ø�
‰
×Ñ˜3˜,Ö'r   c               ó    € V ^8„  d   QhRRRR/# )r   r?   r   r   r2   r   )r   s   "r   r   r3   �   s   € ÷ Oñ O˜sð O tñ Or   c                	óâ   € VP                  4       pV P                  P                  V4       V P                   UUu. uF  w  r4VP                  4       V8w  g   K  W43NK!  	  uppV n        R # u uppi r5   )r[   r,   Ú__delitem__r-   )r    r?   Ú	key_lowerÚkÚvs   &&   r   rz   ÚHeaders.__delitem__�   sO   € Ø—I‘I“Kˆ	Ø�
‰
×Ñ˜yÔ)à)-¯ªÔN©¡ °q·w±w³yÀIÑ7M”f�q“f©ÒNˆŽ
ùÓNs   »A+ÁA+c               ó    € V ^8„  d   QhRRRR/# )r   Úotherr   r   rX   r   )r   s   "r   r   r3   “   s   € ÷ )ñ )˜Cð ) Dñ )r   c                	ól   € \        V\        4      '       g   \        # V P                  VP                  8H  # r5   )rZ   r
   ÚNotImplementedr,   )r    r€   s   &&r   Ú__eq__ÚHeaders.__eq__“   s(   € Ü˜%¤×)Ò)Ü!Ð!Ø�z‰z˜UŸ[™[Ñ(Ð(r   c               ó   € V ^8„  d   QhRR/# )r   r   r2   r   )r   s   "r   r   r3   ˜   s   € ÷ ñ �tñ r   c                ó"   € / V n         . V n        R# )z
Remove all headers.

N©r,   r-   rD   s   &r   ÚclearÚHeaders.clear˜   s   € ð
 ˆŒ
ØˆŽ
r   c               ó$   € V ^8„  d   QhRRRRRR/# r/   r   )r   s   "r   r   r3       s!   € ÷ (ñ (˜Kð (°3ð (¸4ñ (r   c                ó€   <€ \         ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      p\        SV `  ! V/ VB  R# )zD
Update from a :class:`Headers` instance and/or keyword arguments.

c              3  ór   "  € T F-  p\        V\        4      '       d   VP                  4       MTx € K/  	  R # 5ir5   )rZ   r
   Ú	raw_items)r>   Úargs   & r   rA   Ú!Headers.update.<locals>.<genexpr>¥   s*   é € ð 
ÙLPÀSœz¨#¬w×7Ò7ˆC�M‰MŒO¸SÔ@ËDùs   ‚57N)Útupler   r6   )r    r   r1   r!   s   &*,€r   r6   ÚHeaders.update    sB   ø€ ÷
 Œuñ 
ÙLPó
�u‰uñ 
ÙLPó
ó 
ˆô 	‰Š˜Ð' Ô'r   c               ó    € V ^8„  d   QhRRRR/# )r   r?   r   r   z	list[str]r   )r   s   "r   r   r3   ¬   s   € ÷ /ñ /˜3ð / 9ñ /r   c                óV   € V P                   P                  VP                  4       . 4      # )z\
Return the (possibly empty) list of all values for a header.

Args:
    key: Header name.

)r,   Úgetr[   r\   s   &&r   Úget_allÚHeaders.get_all¬   s   € ð �z‰z�~‰~˜cŸi™i›k¨2Ó.Ð.r   c               ó   € V ^8„  d   QhRR/# )r   r   zIterator[tuple[str, str]]r   )r   s   "r   r   r3   ¶   s   € ÷  ñ  Ð4ñ  r   c                ó,   € \        V P                  4      # )z?
Return an iterator of all values as ``(name, value)`` pairs.

)ra   r-   rD   s   &r   r�   ÚHeaders.raw_items¶   s   € ô
 �D—J‘JÓÐr   c               ó$   € V ^8„  d   QhRRRRRR/# rp   r   )r   s   "r   r   r3   ¿   s!   € ÷ (ñ ( ð (¨Cð (°Dñ (r   c                ó°   € V P                   P                  VP                  4       . 4      P                  V4       V P                  P                  W34       R# )z-
Set a header without validating its value.

N)r,   rt   r[   ru   r-   rl   s   &&&r   Úset_insecureÚHeaders.set_insecure¿   s=   € ð
 	�
‰
×Ñ˜cŸi™i›k¨2Ó.×5Ñ5°eÔ<Ø�
‰
×Ñ˜3˜,Ö'r   r‡   )r#   r$   r%   r&   r'   Ú	__slots__r7   r   rJ   rN   rT   r]   rb   rg   rm   rv   rz   rƒ   rˆ   r6   r•   r�   rœ   r(   r)   r*   s   @r   r
   r
       sw   ø† ñ7ðr ˜'Ð"€Iõ%õ
Tõ<õõ.õBõ õõ
+õ(õOõ)õ
÷(ð (õ/õ ÷(ó (r   c                  ó2   € ] tR t^ÉtRtR R ltR R ltRtR# )ÚSupportsKeysAndGetItemzW
Dict-like types with ``keys() -> str`` and ``__getitem__(key: str) -> str`` methods.

c               ó   € V ^8„  d   QhRR/# )r   r   zIterable[str]r   )r   s   "r   r   Ú#SupportsKeysAndGetItem.__annotate__Ï   s   € ×(Ñ(�mÑ(r   c                	ó   € R # r5   r   rD   s   &r   ÚkeysÚSupportsKeysAndGetItem.keysÏ   s   € ¡Sr   c               ó    € V ^8„  d   QhRRRR/# rj   r   )r   s   "r   r   r¢   Ñ   s   € ×/Ñ/˜sÐ/ sÑ/r   c                	ó   € R # r5   r   r\   s   &&r   rm   Ú"SupportsKeysAndGetItem.__getitem__Ñ   s   € ©Cr   r   N)r#   r$   r%   r&   r'   r¤   rm   r(   r   r   r   r    r    É   s   † ñõ
 )ç/Ñ/r   r    )rs   )r
   r0   r   )Ú
__future__r   ÚreÚcollections.abcr   r   r   r   Útypingr   r	   Ú__all__ÚLookupErrorr   ÚcompileÚ	fullmatchrr   r   r
   r    r�   r0   Ú
exceptionsrs   r   r   r   Ú<module>r²      s�   ðÝ "ã 	ß GÓ Gß  ò€ô
!˜+ô 
!ð Ÿ
š
Ð#?Ó@×JÑJÐ ôe(ˆn˜S #˜XÕ&ô e(ôR0˜Xô 0ð ˆg�c˜3�hÕÕ (¨5°°c°­?Õ";Õ;Ð>TÕTð ð÷ +r   