HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib/python3.10/site-packages/websockets/__pycache__/frames.cpython-310.pyc
o

�h�1�@s�UddlmZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
ddlmZm
Z
ddlmZmZzddlmZWneyNddlmZYnwgd�ZGd	d
�d
ej�ZejZejZejZejZej Z!ej"Z#eeefZ$ee!e#fZ%Gdd�dej�Z&e&j'd
e&j(de&j)de&j*de&j+de&j,de&j-de&j.de&j/de&j0de&j1de&j2de&j3de&j4de&j5diZ6de7d<e&j'e&j(e&j)e&j*e&j-e&j.e&j/e&j0e&j1e&j2e&j3e&j4hZ8e&j'e&j(e&j+hZ9e:e;e<fZ=ej>Gdd�d��Z?ej>Gd d!�d!��Z@dd"lAmBZBdS)#�)�annotationsN)�	Generator�Sequence)�Callable�Union�)�
PayloadTooBig�
ProtocolError)�
apply_mask)�Opcode�OP_CONT�OP_TEXT�	OP_BINARY�OP_CLOSE�OP_PING�OP_PONG�DATA_OPCODES�CTRL_OPCODES�	CloseCode�Frame�Closec@s$eZdZdZd\ZZZd\ZZZ	dS)rz#Opcode values for WebSocket frames.)rr�)��	�
N)
�__name__�
__module__�__qualname__�__doc__�CONT�TEXT�BINARY�CLOSE�PING�PONG�r%r%�D/usr/local/CyberCP/lib/python3.10/site-packages/websockets/frames.pyr%s
rc@sLeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdS)rz-Close code values for WebSocket close frames.i�i�i�i�i�i�i�i�i�i�i�i�i�i�i�N)rrrr�NORMAL_CLOSURE�
GOING_AWAY�PROTOCOL_ERROR�UNSUPPORTED_DATA�NO_STATUS_RCVD�ABNORMAL_CLOSURE�INVALID_DATA�POLICY_VIOLATION�MESSAGE_TOO_BIG�MANDATORY_EXTENSION�INTERNAL_ERROR�SERVICE_RESTART�TRY_AGAIN_LATER�BAD_GATEWAY�
TLS_HANDSHAKEr%r%r%r&r7s"r�OKz
going awayzprotocol errorzunsupported datazno status received [internal]zabnormal closure [internal]zinvalid frame payload datazpolicy violationzmessage too bigzmandatory extensionzinternal errorzservice restartztry again laterzbad gatewayz TLS handshake failure [internal]zdict[int, str]�CLOSE_CODE_EXPLANATIONSc@s�eZdZUdZded<ded<dZded<d	Zded
<d	Zded<d	Zded<e	e
j�d
d��Z
d&dd�Zeddd�d'dd��Zdd�d(d!d"�Zd)d$d%�ZdS)*raN
    WebSocket frame.

    Attributes:
        opcode: Opcode.
        data: Payload data.
        fin: FIN bit.
        rsv1: RSV1 bit.
        rsv2: RSV2 bit.
        rsv3: RSV3 bit.

    Only these fields are needed. The MASK bit, payload length and masking-key
    are handled on the fly when parsing and serializing frames.

    r�opcodez#Union[bytes, bytearray, memoryview]�dataT�bool�finF�rsv1�rsv2�rsv3�WEBSOCKETS_MAX_LOG_SIZE�75�return�strc
Cs�d}t|j��dt|j�dkrdnd��}|jrdnd}|jtur+tt|j����}n�|jturc|j}t|�|j	dkrX|j	ddd}d�
|dd	|�d
||d�g�}d�
dd
�|D��}n`|jturqtt
�|j��}nR|jr�z
tt|j����}d}WnAttfy�|j}t|�|j	dkr�|j	ddd}d�
|dd	|�d
||d�g�}d�
dd
�|D��}d}Ynwd}t|�|j	kr�|j	dd}|dd	|�d||d�}d�
td|||g��}|jj�d|�d|�d�S)zE
        Return a human-readable representation of a frame.

        Nz byter��s�	continued��rs� cs��|]}|d�VqdS��02xNr%��.0�byter%r%r&�	<genexpr>���z Frame.__str__.<locals>.<genexpr>�textcsrIrJr%rLr%r%r&rO�rP�binaryz''z...z, z [�])�lenr9r;r8r
�repr�bytes�decoder�MAX_LOG_SIZE�joinrrBr�parse�UnicodeDecodeError�AttributeError�filter�name)�self�coding�length�	non_finalr9rR�cut�metadatar%r%r&�__str__�s>&

&
&�"z
Frame.__str__N)�max_size�
extensions�
read_exact�-Callable[[int], Generator[None, None, bytes]]�maskrf�
int | Nonerg�%Sequence[extensions.Extension] | None�Generator[None, None, Frame]c
cs��|d�EdH}t�d|�\}}|d@rdnd}|d@rdnd}	|d@r&dnd}
|d	@r.dnd}zt|d
@�}WntyI}
ztd�|
�d}
~
ww|d@rPdnd|krXtd��|d
@}|dkro|d�EdH}t�d|�\}n|d
kr�|d�EdH}t�d|�\}|dur�||kr�t||��|r�|d�EdH}||�EdH}|r�t||�}|||||	|
|�}|dur�g}t|�D]	}|j||d�}q�|�	�|S)a�
        Parse a WebSocket frame.

        This is a generator-based coroutine.

        Args:
            read_exact: Generator-based coroutine that reads the requested
                bytes or raises an exception if there isn't enough data.
            mask: Whether the frame should be masked i.e. whether the read
                happens on the server side.
            max_size: Maximum payload size in bytes.
            extensions: List of extensions, applied in reverse order.

        Raises:
            EOFError: If the connection is closed without a full WebSocket frame.
            PayloadTooBig: If the frame's payload size exceeds ``max_size``.
            ProtocolError: If the frame contains incorrect values.

        rN�!BB�TF�@� ��zinvalid opcodezincorrect masking��~�!Hrz!Q�)rf)
�struct�unpackr�
ValueErrorr	rr
�reversedrW�check)�clsrhrjrfrgr9�head1�head2r;r<r=r>r8�excra�
mask_bytes�frame�	extensionr%r%r&rZ�sH�
��

zFrame.parse�rgrVc
Cs&|��|dur
g}|D]}|�|�}qt��}|jrdnd|jr#dndB|jr*dndB|jr1dndB|jB}|r;dnd}t	|j
�}|dkrS|�t�
d|||B��n|d	kre|�t�
d
||dB|��n
|�t�
d||dB|��|r~t�d
�}|�|�|r�t|j
|�}	n|j
}	|�|	�|��S)aH
        Serialize a WebSocket frame.

        Args:
            mask: Whether the frame should be masked i.e. whether the write
                happens on the client side.
            extensions: List of extensions, applied in order.

        Raises:
            ProtocolError: If the frame contains incorrect values.

        Nrorrprqrrrurniz!BBHz!BBQrtrw)r|�encode�io�BytesIOr;r<r=r>r8rTr9�writerx�pack�secrets�token_bytesr
�getvalue)
r_rjrgr��outputr~rrar�r9r%r%r&�	serializes>�����



zFrame.serialize�NonecCsP|js	|js	|jr
td��|jtvr$t|j�dkrtd��|js&td��dSdS)z�
        Check that reserved bits and opcode have acceptable values.

        Raises:
            ProtocolError: If a reserved bit or the opcode is invalid.

        zreserved bits must be 0�}zcontrol frame too longzfragmented control frameN)	r<r=r>r	r8rrTr9r;�r_r%r%r&r|Os
�zFrame.check�rArB)
rhrirjr:rfrkrgrlrArm)rjr:rgrlrArV�rAr�)rrrr�__annotations__r;r<r=r>�int�os�environ�getrXre�classmethodrZr�r|r%r%r%r&r|s"

2�M�;rc@sNeZdZUdZded<ded<ddd�Zeddd��Zdd
d�Zddd�Z	dS)rz
    Code and reason for WebSocket close frames.

    Attributes:
        code: Close code.
        reason: Close reason.

    r��coderB�reasonrAcCszd|jkrdkrnnd}nd|jkrdkr nnd}nt�|jd�}|j�d|�d�}|jr;|�d	|j��}|S)
zU
        Return a human-readable representation of a close code and reason.

        �i��
registered�zprivate use�unknownz (�)rH)r�r7r�r�)r_�explanation�resultr%r%r&reosz
Close.__str__r9rVcCsht|�dkr$t�d|dd��\}|dd���}|||�}|��|St|�dkr0|tjd�Std��)z�
        Parse the payload of a close frame.

        Args:
            data: Payload of the close frame.

        Raises:
            ProtocolError: If data is ill-formed.
            UnicodeDecodeError: If the reason isn't valid UTF-8.

        rrvNrrCzclose frame too short)rTrxryrWr|rr+r	)r}r9r�r��closer%r%r&rZ�s

zClose.parsecCs |��t�d|j�|j��S)z:
        Serialize the payload of a close frame.

        rv)r|rxr�r�r�r�r�r%r%r&r��szClose.serializer�cCs8|jtvsd|jkrdkstd��td��dSdS)z�
        Check that the close code has a valid value for a close frame.

        Raises:
            ProtocolError: If the close code is invalid.

        r�r�zinvalid status codeN)r��EXTERNAL_CLOSE_CODESr	r�r%r%r&r|�s
��zClose.checkNr�)r9rVrAr)rArVr�)
rrrrr�rer�rZr�r|r%r%r%r&ras
	

rr�)C�
__future__r�dataclasses�enumr�r�r�rx�collections.abcrr�typingrr�
exceptionsrr	�speedupsr
�ImportError�utils�__all__�IntEnumrrrr r
r!rr"rr#rr$rrrrr'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r7r�r��OK_CLOSE_CODESrV�	bytearray�
memoryview�	BytesLike�	dataclassrrrCrgr%r%r%r&�<module>s��

���
eL