ó
    §ZÇh„  ã                   ó|   • S SK r S SKrS SKJrJrJr  S/r\ R                  " S\ R                  5      r	 " S S5      r
g)é    N)ÚListÚOptionalÚUnionÚReceiveBuffers   
?
c                   óÊ   • \ rS rSrSS jrS\\\4   SS 4S jrS\	4S jr
S\4S jrS\4S	 jrS
\S\4S jrS
\S\\   4S jrS\\   4S jrS\\\      4S jrS\	4S jrSrg)r   é/   ÚreturnNc                 ó>   • [        5       U l        SU l        SU l        g ©Nr   )Ú	bytearrayÚ_dataÚ_next_line_searchÚ_multiple_lines_search©Úselfs    ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/h11/_receivebuffer.pyÚ__init__ÚReceiveBuffer.__init__0   s   € Ü“[ˆŒ
Ø!"ˆÔØ&'ˆÕ#ó    Ú	byteslikec                 ó0   • U =R                   U-  sl         U $ ©N)r   )r   r   s     r   Ú__iadd__ÚReceiveBuffer.__iadd__5   s   € Ø�
Š
�iÑ�
Øˆr   c                 ó*   • [        [        U 5      5      $ r   )ÚboolÚlenr   s    r   Ú__bool__ÚReceiveBuffer.__bool__9   s   € Ü”C˜“I‹Ðr   c                 ó,   • [        U R                  5      $ r   )r   r   r   s    r   Ú__len__ÚReceiveBuffer.__len__<   s   € Ü�4—:‘:‹Ðr   c                 ó,   • [        U R                  5      $ r   )Úbytesr   r   s    r   Ú	__bytes__ÚReceiveBuffer.__bytes__@   s   € Ü�T—Z‘ZÓ Ð r   Úcountc                 ó^   • U R                   S U nU R                   S U2	 SU l        SU l        U$ r   )r   r   r   ©r   r'   Úouts      r   Ú_extractÚReceiveBuffer._extractC   s7   € à�j‰j˜˜%Ð ˆØ�J‰J�v˜�vÐà!"ˆÔØ&'ˆÔ#àˆ
r   c                 óR   • U R                   SU nU(       d  gU R                  U5      $ )z2
Extract a fixed number of bytes from the buffer.
N)r   r+   r)   s      r   Úmaybe_extract_at_mostÚ#ReceiveBuffer.maybe_extract_at_mostM   s)   € ð �j‰j˜˜%Ð ˆÞØà�}‰}˜UÓ#Ð#r   c                 óÚ   • [        SU R                  S-
  5      nU R                  R                  SU5      nUS:X  a  [	        U R                  5      U l        gUS-   nU R                  U5      $ )z;
Extract the first line, if it is completed in the buffer.
r   é   ó   
éÿÿÿÿNé   )Úmaxr   r   Úfindr   r+   )r   Úsearch_start_indexÚpartial_idxÚidxs       r   Úmaybe_extract_next_lineÚ%ReceiveBuffer.maybe_extract_next_lineW   sf   € ô
 !  D×$:Ñ$:¸QÑ$>Ó?ÐØ—j‘j—o‘o gÐ/AÓBˆà˜"ÓÜ%(¨¯©£_ˆDÔ"Øð ˜A‰oˆà�}‰}˜SÓ!Ð!r   c                 ó6  • U R                   SS S:X  a  U R                  S5        / $ U R                   SS S:X  a  U R                  S5        / $ [        R                  U R                   U R                  5      nUc(  [        S[        U R                   5      S-
  5      U l        gUR                  S5      S   nU R                  U5      nUR                  S5      nU H  nUR                  S5      (       d  M  US	 M      US	   US   s=:X  a  S
:X  d   e   eUS	S2	 U$ )zL
Extract everything up to the first blank line, and return a list of lines.
Nr1   ó   
r4   r2   r   r3   ó   éþÿÿÿr   )
r   r+   Úblank_line_regexÚsearchr   r5   r   ÚspanÚsplitÚendswith)r   Úmatchr9   r*   ÚlinesÚlines         r   Úmaybe_extract_linesÚ!ReceiveBuffer.maybe_extract_linesh   s  € ð
 �:‰:�b�qˆ>˜UÓ"Ø�M‰M˜!ÔØˆIà�:‰:�b�qˆ>˜WÓ$Ø�M‰M˜!ÔØˆIô !×'Ñ'¨¯
©
°D×4OÑ4OÓPˆØ‰=Ü*-¨a´°T·Z±Z³À1Ñ1DÓ*EˆDÔ'Øð �j‰j˜‹m˜BÑˆØ�m‰m˜CÓ ˆØ—	‘	˜%Ó ˆãˆDØ�}‰}˜U×#Ó#Ø˜’Hñ ð �R‰y˜E "™IÕ,¨Ó,Ð,Ñ,Ð,Ð,à�"‘#ˆJàˆr   c                 óH   •  U R                   S   S:  $ ! [         a     gf = f)Nr   é!   F)r   Ú
IndexErrorr   s    r   Ú+is_next_line_obviously_invalid_request_lineÚ9ReceiveBuffer.is_next_line_obviously_invalid_request_line“   s.   € ð	ð —:‘:˜a‘= 4Ñ'Ð'øÜó 	Ùð	ús   ‚ ”
! !)r   r   r   )r	   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r$   r   r   r   r   Úintr!   r%   r+   r   r.   r:   r   rH   rM   Ú__static_attributes__© r   r   r   r   /   s¦   † ô(ð
 %¨¨yÐ(8Ñ"9ð ¸oô ð˜$ô ð˜ô ð!˜5ô !ð˜cð  iô ð$¨3ð $°8¸IÑ3Fô $ð"¨°)Ñ)<ô "ð"  X¨d°9©oÑ%>ô  ðV¸T÷ r   )ÚreÚsysÚtypingr   r   r   Ú__all__ÚcompileÚ	MULTILINEr@   r   rU   r   r   Ú<module>r\      s=   ðÛ 	Û 
ß (Ñ (àÐ
€ðN —:’:˜j¨"¯,©,Ó7Ð ÷jò jr   