HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/aiohttp/_websocket/__pycache__/helpers.cpython-310.pyc
o

���g��	@s�UdZddlZddlZddlmZddlmZmZmZm	Z	m
Z
mZddlm
Z
ddlmZed	�jZed
�jZed�jZed�jZed
�jZed
�jZed�jZdZeeed<dZeeed<dZeeed<ej deefdd��Z!dede"ddfdd�Z#es�e
r�e#Z$nz
ddl%m&Z&e&Z$Wne'y�e#Z$Ynwe�(d�Z)ee
e*ed<e�(d�Z+ee
e*ed <d+d"e	e*d#e,deee,ffd$d%�Z-	!d,d'ed#e,d(e,de*fd)d*�Z.dS)-z1Helpers for WebSocket protocol versions 13 and 8.�N)�Struct)�
TYPE_CHECKING�Final�List�Optional�Pattern�Tuple�)�
NO_EXTENSIONS�)�WSHandshakeErrorz!Qz!Hz!BBz!BBHz!BBQz!Li@�MSG_SIZE��MASK_LENs$258EAFA5-E914-47DA-95CA-C5AB0DC85B11�WS_KEY�returncCsdd�td�D�S)Ncs&g|]�t�fdd�td�D���qS)c3s�|]}|�AVqdS�N�)�.0�a��br�E/usr/local/lib/python3.10/dist-packages/aiohttp/_websocket/helpers.py�	<genexpr>��z(_xor_table.<locals>.<listcomp>.<genexpr>�)�bytes�range)rrrr�
<listcomp>s&z_xor_table.<locals>.<listcomp>r)rrrrr�
_xor_tablesr�mask�datacs�t|t�s	J|��t|�dksJ|��|rct���fdd�|D�\}}}}|ddd��|�|ddd�<|ddd��|�|ddd�<|ddd��|�|ddd�<|ddd��|�|ddd�<dSdS)awWebsocket 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.

    rc3s�|]}�|VqdSrr)r�n��
_XOR_TABLErrr0rz)_websocket_mask_python.<locals>.<genexpr>Nrr	�)�
isinstance�	bytearray�lenr�	translate)r r!rr�c�drr#r�_websocket_mask_pythons
"�r,)�_websocket_mask_cythonz�^(?:;\s*(?:(server_no_context_takeover)|(client_no_context_takeover)|(server_max_window_bits(?:=(\d+))?)|(client_max_window_bits(?:=(\d+))?)))*$�
_WS_EXT_REzpermessage-deflate([^,]+)?�_WS_EXT_RE_SPLITF�extstr�isservercCs�|sdSd}d}t�|�D]m}|�d�}|sd}||fSt�|�}|rod}|rK|�d�r?t|�d��}|dks<|dkr?d}q
|�d�rFd}||fS|�d	�rct|�d	��}|dks_|dkrctd
��|�d�rjd}||fS|sztd|�d���q
||fS)
N)rFrFr�r�	T�zInvalid window sizer	z#Extension for deflate not supported)r/�finditer�groupr.�match�intr)r0r1�compress�
notakeover�ext�defextr7rrr�ws_ext_parseMsF
%
�


�
��r=r2r9�server_notakeovercCs^|dks|dkrtd��dg}|s|�d�|dkr#|�dt|��|r*|�d�d�|�S)	Nr3r2zCCompress wbits must between 9 and 15, zlib does not support wbits=8zpermessage-deflate�client_max_window_bitszserver_max_window_bits=�server_no_context_takeoverz; )�
ValueError�append�str�join)r9r1r>�
enabledextrrr�
ws_ext_gen�s�


rF)F)r2FF)/�__doc__�	functools�re�structr�typingrrrrrr�helpersr
�modelsr�unpack_from�UNPACK_LEN3�unpack�UNPACK_CLOSE_CODE�pack�	PACK_LEN1�	PACK_LEN2�	PACK_LEN3�PACK_CLOSE_CODE�
PACK_RANDBITSr
r8�__annotations__rrr�	lru_cacherr'r,�websocket_maskr r-�ImportError�compiler.rCr/�boolr=rFrrrr�<module>sV 






��$4�����