
    rp0j              	          % S r SSKrSSKrSSKJr  SSKJr  SSKJrJr  SSK	J
r
  SS	KJr  \" S
5      R                  r\" S5      R                  r\" S5      R"                  r\" S5      R"                  r\" S5      R"                  r\" S5      R"                  r\" S5      R"                  rSr\\   \S'   Sr\\   \S'   Sr\\   \S'   \R:                  S\\   4S j5       rS\S\ SS4S jr!\(       d  \
(       a  \!r"O	 SSK#J$r$  \$r"\RL                  " S5      r'\\\(      \S'   \RL                  " S5      r)\\\(      \S'   S&S \(S-  S!\*S\+\\*4   4S" jjr, S'S#\S!\*S$\*S\(4S% jjr-g! \% a    \!r" Njf = f)(z1Helpers for WebSocket protocol versions 13 and 8.    N)Pattern)Struct)TYPE_CHECKINGFinal   )NO_EXTENSIONS   )WSHandshakeErrorz!Qz!Hz!BBz!BBHz!BBQz!Li @  MSG_SIZE   MASK_LENs$   258EAFA5-E914-47DA-95CA-C5AB0DC85B11WS_KEYreturnc            	         ^  [        S5       V ^ s/ s H!  m [        U 4S j[        S5       5       5      PM#     sn $ s  sn f )N   c              3   ,   >#    U  H	  oT-  v   M     g 7fN ).0abs     T/home/wildlama/miniconda3/lib/python3.13/site-packages/aiohttp/_websocket/helpers.py	<genexpr>_xor_table.<locals>.<genexpr>   s     ,Aa%s   )rangebytes)r   s   `r   
_xor_tabler      s.    6;CjAjE,s,,jAAAs   (;maskdatac                   ^ [        U[        5      (       d   U5       e[        U 5      S:X  d   U 5       eU(       a  [        5       mU4S jU  5       u  p#pEUSSS2   R	                  U5      USSS2'   USSS2   R	                  U5      USSS2'   USSS2   R	                  U5      USSS2'   USSS2   R	                  U5      USSS2'   gg)a[  Websocket masking function.

`mask` is a `bytes` object of length 4; `data` is a `bytearray`
object of any length. The contents of `data` are masked with `mask`,
as specified in section 5.3 of RFC 6455.

Note that this function mutates the `data` argument.

This pure-python implementation may be replaced by an optimized
version when available.

r   c              3   .   >#    U  H
  nTU   v   M     g 7fr   r   )r   n
_XOR_TABLEs     r   r   )_websocket_mask_python.<locals>.<genexpr>1   s     2TjmTs   Nr	   r      )
isinstance	bytearraylenr   	translate)r   r   r   r   cdr#   s         @r   _websocket_mask_pythonr,      s     dI&&,,&t9>4>\
2T2
a1I''*SqS	!$Q$Z))!,QTT
!$Q$Z))!,QTT
!$Q$Z))!,QTT
     )_websocket_mask_cythonz^(?:;\s*(?:(server_no_context_takeover)|(client_no_context_takeover)|(server_max_window_bits(?:=(\d+))?)|(client_max_window_bits(?:=(\d+))?)))*$
_WS_EXT_REzpermessage-deflate([^,]+)?_WS_EXT_RE_SPLITextstrisserverc                    U (       d  gSnSn[         R                  U 5       GH*  nUR                  S5      nU(       d  Sn  X#4$ [        R	                  U5      nU(       a  SnU(       a\  UR                  S5      (       a*  [        UR                  S5      5      nUS:  d  US:  a  SnM  UR                  S5      (       a  Sn  X#4$ UR                  S	5      (       a1  [        UR                  S	5      5      nUS:  d  US:  a  [        S
5      eUR                  S5      (       a  Sn  X#4$ U(       a  GM  [        SUR                  S5      -   5      e   X#4$ )N)r   Fr   Fr	      r   	   T   zInvalid window sizer   z#Extension for deflate not supported)r0   finditergroupr/   matchintr
   )r1   r2   compress
notakeoverextdefextr9   s          r   ws_ext_parser?   N   sK   HJ((01HJ I   (H ;;q>>"5;;q>2H
  "}1#$ ;;q>>!%J$ ! ;;q>>"5;;q>2H
  "}1./DEE;;q>>!%J
  "#H399UV<#WXXQ 1T r-   r;   server_notakeoverc                     U S:  d  U S:  a  [        S5      eS/nU(       d  UR                  S5        U S:  a  UR                  S[        U 5      -   5        U(       a  UR                  S5        SR                  U5      $ )	Nr5   r4   zCCompress wbits must between 9 and 15, zlib does not support wbits=8zpermessage-deflateclient_max_window_bitszserver_max_window_bits=server_no_context_takeoverz; )
ValueErrorappendstrjoin)r;   r2   r@   
enabledexts       r   
ws_ext_genrI      s    
 !|x"}Q
 	
 ''J23"}3c(mCD67 99Z  r-   )F)r4   FF).__doc__	functoolsrer   structr   typingr   r   helpersr   modelsr
   unpack_fromUNPACK_LEN3unpackUNPACK_CLOSE_CODEpack	PACK_LEN1	PACK_LEN2	PACK_LEN3PACK_CLOSE_CODEPACK_RANDBITSr   r:   __annotations__r   r   r   	lru_cachelistr   r'   r,   websocket_maskr   r.   ImportErrorcompiler/   rF   r0   booltupler?   rI   r   r-   r   <module>rc      s   7  	   ' # $Tl&&4L'' 5M	6N	6N	,##t!!%* %* >e > BDK B B- -i -D -2 M+N00/
 #%**/#
E'#,  )+

3P(Q %% Q0 t 0 t 0 c4i@P 0 h KP!!"&!CG!!E  0/0s   >E& &E10E1