
    Jid                    x   S SK Jr  S SKrS SKJr  S SKJrJr  SSKJ	r	  SSK
JrJrJrJrJrJr  SSKJrJrJr  S	S
KJrJrJr  / SQrSr\" SS5       V s/ s H  n \" U 5      PM     sn r " S S\5      r          SS jr      SS jr " S S\5      r     SS jr! " S S\5      r"    SS jr#gs  sn f )    )annotationsN)Sequence)AnyLiteral   )frames)DuplicateParameterInvalidParameterNameInvalidParameterValueNegotiationErrorPayloadTooBigProtocolError)	BytesLikeExtensionNameExtensionParameter   )ClientExtensionFactory	ExtensionServerExtensionFactory)PerMessageDeflateClientPerMessageDeflateFactory enable_client_permessage_deflateServerPerMessageDeflateFactory enable_server_permessage_deflates           c                  ~    \ rS rSrSr\" S5      r S           SS jjrSS jrSS.     SS jjr	SS	 jr
S
rg)r   !   z!
Per-Message Deflate extension.

permessage-deflateNc                   Uc  0 nUS;   d   eUS;   d   eSUs=::  a  S::  d   e   eSUs=::  a  S::  d   e   eSU;  d   eXl         X l        X0l        X@l        XPl        U R                   (       d$  [
        R                  " U R                  * S9U l        U R                  (       d2  [
        R                  " SSU R                  * 0U R                  D6U l	        SU l
        g)	z/
Configure the Per-Message Deflate extension.

N)FTr      wbitsr"   F )remote_no_context_takeoverlocal_no_context_takeoverremote_max_window_bitslocal_max_window_bitscompress_settingszlibdecompressobjdecodercompressobjencoderdecode_cont_data)selfr%   r&   r'   r(   r)   s         j/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/websockets/extensions/permessage_deflate.py__init__PerMessageDeflate.__init__)   s     $ ")]:::(M999*0b00000)/R/////////*D')B&&<#%:"!2..--T5P5P4PQDL--++ 111((DL !&    c           	     p    SU R                    SU R                   SU R                   SU R                   S3	$ )Nz-PerMessageDeflate(remote_no_context_takeover=z, local_no_context_takeover=z, remote_max_window_bits=z, local_max_window_bits=))r%   r&   r'   r(   r0   s    r1   __repr__PerMessageDeflate.__repr__S   sV    **.*I*I)J K))-)G)G(H I&&*&A&A%B C%%)%?%?$@	C	
r4   )max_sizec                  UR                   [        R                  ;   a  U$ UR                   [        R                  L a,  U R                  (       d  U$ UR
                  (       a  SU l        O`UR                  (       d  U$ UR
                  (       d  SU l        U R                  (       a$  [        R                  " U R                  * S9U l        UR
                  (       a6  [        UR                  5      S:  a  [        UR                  5      [        -   nOUR                  nUc  SOUn U R                  R!                  X45      nU R                  R"                  (       a  Uc   e[%        SU5      eUR
                  (       a8  [        UR                  5      S:  a  U R                  R!                  [        5        UR
                  (       a  U R                  (       a  U ?[        R*                  " UR                   UUR
                  SUR,                  UR.                  5      $ ! [        R&                   a  n[)        S5      UeSnAff = f)z
Decode an incoming frame.

FTr#   i  Nr   zdecompression failed)opcoder   CTRL_OPCODESOP_CONTr/   finrsv1r%   r*   r+   r'   r,   lendatabytes_EMPTY_UNCOMPRESSED_BLOCK
decompressunconsumed_tailr   errorr   Framersv2rsv3)r0   framer:   rB   
max_lengthexcs         r1   decodePerMessageDeflate.decode\   s    <<6...L
 <<6>>)((yy(-% ::99(,% ..#119T9T8TU 99UZZ4/ $'@@D::D"*Q
		A<<**4<D||+++++#D(33yyS_4''(AB
 9988||LLIIJJJJ
 	
 zz 	A 67S@	As   %BH I0H<<Ic                (   UR                   [        R                  ;   a  U$ UR                   [        R                  LaC  U R                  (       a2  [
        R                  " SSU R                  * 0U R                  D6U l	        U R                  R                  UR                  5      U R                  R                  [
        R                  5      -   nUR                  (       a2  USS [        :X  d   e[!        U5      S:  a  USS nO[#        U5      SS nUR                  (       a  U R                  (       a  U ?	[        R$                  " UR                   UUR                  UR                   [        R                  LUR&                  UR(                  5      $ )z
Encode an outgoing frame.

r"   Ni   r$   )r<   r   r=   r>   r&   r*   r-   r(   r)   r.   compressrB   flushZ_SYNC_FLUSHr?   rD   rA   
memoryviewrH   rI   rJ   )r0   rK   rB   s      r1   encodePerMessageDeflate.encode   s7    <<6...L
 <<v~~---#//  555 ,,  ||$$UZZ04<<3E3EdFWFW3XX99 9 99994y4CRy!$', 9977||LLIILL.JJJJ
 	
r4   )r)   r/   r,   r.   r(   r&   r'   r%   N)r%   boolr&   rY   r'   intr(   rZ   r)   zdict[Any, Any] | NonereturnNone)r[   str)rK   frames.Framer:   
int | Noner[   r^   )rK   r^   r[   r^   )__name__
__module____qualname____firstlineno____doc__r   namer2   r8   rN   rV   __static_attributes__r$   r4   r1   r   r   !   s    
 -.D 48&&$(&& $(&& !$	&&
  #&& 1&& 
&&T
  $	G
G
 	G

 
G
R-
r4   r   c                &   / nU (       a  UR                  S5        U(       a  UR                  S5        U(       a  UR                  S[        U5      45        USL a  UR                  S5        U$ U(       a  UR                  S[        U5      45        U$ )zK
Build a list of ``(name, value)`` pairs for some compression parameters.

)server_no_context_takeoverN)client_no_context_takeoverNserver_max_window_bitsT)client_max_window_bitsNrk   )appendr]   )rh   ri   rj   rk   paramss        r1   _build_parametersrn      s     (*F!:;!:;/5K1LMN%67 M 
 /5K1LMNMr4   c                  SnSnSnSnU  H  u  pgUS:X  a$  U(       a  [        U5      eUc  SnM$  [        Xg5      eUS:X  a$  U(       a  [        U5      eUc  SnMN  [        Xg5      eUS:X  a0  Ub  [        U5      eU[        ;   a  [        U5      nM  [        Xg5      eUS:X  a>  Ub  [        U5      eU(       a  Uc  SnM  U[        ;   a  [        U5      nM  [        Xg5      e[	        U5      e   UUUU4$ )z
Extract compression parameters from a list of ``(name, value)`` pairs.

If ``is_server`` is :obj:`True`, ``client_max_window_bits`` may be
provided without a value. This is only allowed in handshake requests.

FNrh   Tri   rj   rk   )r	   r   _MAX_WINDOW_BITS_VALUESrZ   r
   )rm   	is_serverrh   ri   rj   rk   re   values           r1   _extract_parametersrs      s&    (-',)-9=//)(..}-1*+D8811)(..}-1*+D88--%1(..//),U&+D88--%1(..U])-&11),U&+D88 't,,I N 	#"	 r4   c                  v    \ rS rSrSr\" S5      r     S	           S
S jjrSS jr      SS jr	Sr
g)r   i*  a  
Client-side extension factory for the Per-Message Deflate extension.

Parameters behave as described in `section 7.1 of RFC 7692`_.

.. _section 7.1 of RFC 7692: https://datatracker.ietf.org/doc/html/rfc7692#section-7.1

Set them to :obj:`True` to include them in the negotiation offer without a
value or to an integer value to include them with this value.

Args:
    server_no_context_takeover: Prevent server from using context takeover.
    client_no_context_takeover: Prevent client from using context takeover.
    server_max_window_bits: Maximum size of the server's LZ77 sliding window
        in bits, between 8 and 15.
    client_max_window_bits: Maximum size of the client's LZ77 sliding window
        in bits, between 8 and 15, or :obj:`True` to indicate support without
        setting a limit.
    compress_settings: Additional keyword arguments for :func:`zlib.compressobj`,
        excluding ``wbits``.

r   Nc                    Ub  SUs=::  a  S::  d  O  [        S5      eUb  USL d  SUs=::  a  S::  d  O  [        S5      eUb  SU;   a  [        S5      eXl        X l        X0l        X@l        XPl        g)	7
Configure the Per-Message Deflate extension factory.

Nr   r!   /server_max_window_bits must be between 8 and 15T/client_max_window_bits must be between 8 and 15r"   zLcompress_settings must not include wbits, set client_max_window_bits instead)
ValueErrorrh   ri   rj   rk   r)   )r0   rh   ri   rj   rk   r)   s         r1   r2   'ClientPerMessageDeflateFactory.__init__D  s     '.!7M2SQS2SNOO"*%-*0b0NOO(W8I-I5 
 +E'*D'&<#&<#!2r4   c                n    [        U R                  U R                  U R                  U R                  5      $ )z
Build request parameters.

)rn   rh   ri   rj   rk   r7   s    r1   get_request_params1ClientPerMessageDeflateFactory.get_request_paramsd  s5    
 !++++''''	
 	
r4   c                r  ^  [        U 4S jU 5       5      (       a  [        ST R                   35      e[        USS9u  nnnnT R                  (       a  U(       d  [        S5      eT R
                  (       a	  U(       d  SnT R                  c  O)Uc  [        S5      eUT R                  :  a  [        S5      eT R                  c  Ub  [        S	5      eO;T R                  SL a  O+Uc  T R                  nOUT R                  :  a  [        S
5      e[        UUU=(       d    SU=(       d    ST R                  5      $ )z>
Process response parameters.

Return an extension instance.

c              3  T   >#    U  H  oR                   TR                   :H  v   M     g 7frX   re   .0otherr0   s     r1   	<genexpr>IClientPerMessageDeflateFactory.process_response_params.<locals>.<genexpr>{       H4G5zzTYY&4G   %(zreceived duplicate Frq   z#expected server_no_context_takeoverTzexpected server_max_window_bitsz"unsupported server_max_window_bitsz!unexpected client_max_window_bitsz"unsupported client_max_window_bitsr!   )
anyr   re   rs   rh   ri   rj   rk   r   r)   r0   rm   accepted_extensionsrh   ri   rj   rk   s   `      r1   process_response_params6ClientPerMessageDeflateFactory.process_response_paramsp  sJ    H4GHHH"%8#DEE  %8	
&&"" **-&'LMM **--1* &&. &-&'HII'$*E*EE&'KLL &&.%1&'JKK 2 ((D0 &-)-)D)D&'$*E*EE&'KLL &&"(b"(b""
 	
r4   )rk   ri   r)   rj   rh   )FFNTN)rh   rY   ri   rY   rj   r_   rk   int | Literal[True] | Noner)   dict[str, Any] | Noner[   r\   )r[   Sequence[ExtensionParameter])rm   r   r   Sequence[Extension]r[   r   )r`   ra   rb   rc   rd   r   re   r2   r|   r   rf   r$   r4   r1   r   r   *  s    . -.D ,1+0-1=A373$(3 %)3 !+	3
 !;3 13 
3@

g
,g
 1g
 
	g
r4   r   c                n    U c  / n [        S U  5       5      (       d  [        U 5      [        SS0S9/-   n U $ )z
Enable Per-Message Deflate with default settings in client extensions.

If the extension is already present, perhaps with non-default settings,
the configuration isn't changed.

c              3  \   #    U  H"  nUR                   [        R                   :H  v   M$     g 7frX   )re   r   )r   extension_factorys     r1   r   3enable_client_permessage_deflate.<locals>.<genexpr>  s*      !+ 	"@"E"EE!+   *,memLevel   )r)   )r   listr   
extensionss    r1   r   r     sV     
 !+   *%*#-q/)
 


 r4   c                  r    \ rS rSrSr\" S5      r      S             S	S jjr      S
S jrSr	g)r   i  aS  
Server-side extension factory for the Per-Message Deflate extension.

Parameters behave as described in `section 7.1 of RFC 7692`_.

.. _section 7.1 of RFC 7692: https://datatracker.ietf.org/doc/html/rfc7692#section-7.1

Set them to :obj:`True` to include them in the negotiation offer without a
value or to an integer value to include them with this value.

Args:
    server_no_context_takeover: Prevent server from using context takeover.
    client_no_context_takeover: Prevent client from using context takeover.
    server_max_window_bits: Maximum size of the server's LZ77 sliding window
        in bits, between 8 and 15.
    client_max_window_bits: Maximum size of the client's LZ77 sliding window
        in bits, between 8 and 15.
    compress_settings: Additional keyword arguments for :func:`zlib.compressobj`,
        excluding ``wbits``.
    require_client_max_window_bits: Do not enable compression at all if
        client doesn't advertise support for ``client_max_window_bits``;
        the default behavior is to enable compression without enforcing
        ``client_max_window_bits``.

r   Nc                   Ub  SUs=::  a  S::  d  O  [        S5      eUb  SUs=::  a  S::  d  O  [        S5      eUb  SU;   a  [        S5      eUc  U(       a  [        S5      eXl        X l        X0l        X@l        XPl        X`l        g)	rv   Nr   r!   rw   rx   r"   zLcompress_settings must not include wbits, set server_max_window_bits insteadzVrequire_client_max_window_bits is enabled, but client_max_window_bits isn't configured)ry   rh   ri   rj   rk   r)   require_client_max_window_bits)r0   rh   ri   rj   rk   r)   r   s          r1   r2   'ServerPerMessageDeflateFactory.__init__  s     '.!7M2SQS2SNOO&.!7M2SQS2SNOO(W8I-I5  ").L> 
 +E'*D'&<#&<#!2.L+r4   c                  ^  [        U 4S jU 5       5      (       a  [        ST R                   35      e[        USS9u  nnnnT R                  (       a	  U(       d  SnT R
                  (       a	  U(       d  SnT R                  c  O,Uc  T R                  nOUT R                  :  a  T R                  nT R                  c  USL a  T R                  nONUc  T R                  (       a  [        S5      eO.USL a  T R                  nOT R                  U:  a  T R                  n[        UUUU5      [        UUU=(       d    SU=(       d    ST R                  5      4$ )zQ
Process request parameters.

Return response params and an extension instance.

c              3  T   >#    U  H  oR                   TR                   :H  v   M     g 7frX   r   r   s     r1   r   HServerPerMessageDeflateFactory.process_request_params.<locals>.<genexpr>=  r   r   zskipped duplicate Tr   zrequired client_max_window_bitsr!   )r   r   re   rs   rh   ri   rj   rk   r   rn   r   r)   r   s   `      r1   process_request_params5ServerPerMessageDeflateFactory.process_request_params2  so    H4GHHH"%7		{#CDD  $7	
&&""" **--1* **--1* &&. &-)-)D)D&'$*E*EE)-)D)D& &&.%-)-)D)D& &-66*+LMM 7'4/)-)D)D&,,/EE)-)D)D& **&&	 **&,"&,"&&
 	
r4   )rk   ri   r)   r   rj   rh   )FFNNNF)rh   rY   ri   rY   rj   r_   rk   r_   r)   r   r   rY   r[   r\   )rm   r   r   r   r[   z2tuple[list[ExtensionParameter], PerMessageDeflate])
r`   ra   rb   rc   rd   r   re   r2   r   rf   r$   r4   r1   r   r     s    4 -.D ,1+0-1-137/4!M$(!M %)!M !+	!M
 !+!M 1!M )-!M 
!MFo
,o
 1o
 
<	o
r4   r   c                r    U c  / n [        S U  5       5      (       d  [        U 5      [        SSSS0S9/-   n U $ )z
Enable Per-Message Deflate with default settings in server extensions.

If the extension is already present, perhaps with non-default settings,
the configuration isn't changed.

c              3  \   #    U  H"  nUR                   [        R                   :H  v   M$     g 7frX   )re   r   )r   ext_factorys     r1   r   3enable_server_permessage_deflate.<locals>.<genexpr>  s)      %K 	:???%r      r   r   )rj   rk   r)   )r   r   r   r   s    r1   r   r     s\     
 %   *%*')')#-q/)
 

 r4   )
rh   rY   ri   rY   rj   r_   rk   r   r[   zlist[ExtensionParameter])rm   r   rq   rY   r[   z9tuple[bool, bool, int | None, int | Literal[True] | None])r   z'Sequence[ClientExtensionFactory] | Noner[   z Sequence[ClientExtensionFactory])r   z'Sequence[ServerExtensionFactory] | Noner[   z Sequence[ServerExtensionFactory])$
__future__r   r*   collections.abcr   typingr   r    r   
exceptionsr	   r
   r   r   r   r   r   r   r   baser   r   r   __all__rD   ranger]   rp   r   rn   rs   r   r   r   r   )bitss   0r1   <module>r      s   "  $    B A K K 0 16q">3t9> q
	 q
h $ $ ' 7	
 0:(:8<:>:zm
%; m
`7%0o
%; o
d7%M ?s   B7