§
    ÌtºfB  ã                   óà   — d dl Z d dlmZmZmZmZmZ dZ G d„ de¦  «        Z	 G d„ dee	¦  «        Z
 G d„ d	ee	¦  «        Z G d
„ dee	¦  «        Z G d„ dee	¦  «        Z G d„ dee	¦  «        ZdS )é    N)ÚPerMessageCompressOfferÚPerMessageCompressOfferAcceptÚPerMessageCompressResponseÚ PerMessageCompressResponseAcceptÚPerMessageCompress)ÚPerMessageSnappyMixinÚPerMessageSnappyOfferÚPerMessageSnappyOfferAcceptÚPerMessageSnappyResponseÚPerMessageSnappyResponseAcceptÚPerMessageSnappyc                   ó   — e Zd ZdZdZdS )r   z)
    Mixin class for this extension.
    zpermessage-snappyN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚEXTENSION_NAME© ó    úa/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/websocket/compress_snappy.pyr   r   -   s%   € € € € € ðð ð )€Nðð r   r   c                   óF   — e Zd ZdZed„ ¦   «         Z	 	 d
d„Zd„ Zd„ Zd„ Z	d	S )r	   zv
    Set of extension parameters for `permessage-snappy` WebSocket extension
    offered by a client to a server.
    c           
      ó”  — d}d}|D ]´}t          ||         ¦  «        dk    rt          d|›d| j        ›d�¦  «        ‚||         d         }|dk    r%|durt          d	|›d
|›d| j        ›d�¦  «        ‚d}Œo|dk    r%|durt          d	|›d
|›d| j        ›d�¦  «        ‚d}Œšt          d|›d| j        ›d�¦  «        ‚ | ||¦  «        }|S )a]  
        Parses a WebSocket extension offer for `permessage-snappy` provided by a client to a server.

        :param params: Output from :func:`autobahn.websocket.WebSocketProtocol._parseExtensionsHeader`.
        :type params: list

        :returns: A new instance of :class:`autobahn.compress.PerMessageSnappyOffer`.
        :rtype: obj
        Fé   ú,multiple occurrence of extension parameter 'ú' for extension 'ú'r   Úclient_no_context_takeoverTú#illegal extension parameter value 'ú' for parameter 'ú' of extension 'Úserver_no_context_takeoverúillegal extension parameter '©ÚlenÚ	Exceptionr   )ÚclsÚparamsÚaccept_no_context_takeoverÚrequest_no_context_takeoverÚpÚvalÚoffers          r   ÚparsezPerMessageSnappyOffer.parse>   s�  € ð &+Ð"Ø&+Ð#ð ð 	qð 	qˆAå�6˜!”9‰~Œ~ Ò!Ð!Ý�iÐhiÐhiÐhiÐknÔk}Ðk}Ðk}Ð ~ÑÔÐà˜”)˜A”,ˆCàÐ0Ò0Ð0à˜d�?�?Ý#˜)ÐuxÐuxÐuxÐz{Ðz{Ðz{ð  ~Aô  ~Pð  ~Pð  ~Pð  %Qñ  Rô  Rð  Rà15Ð.Ð.àÐ2Ò2Ð2à˜d�?�?Ý#˜)ÐuxÐuxÐuxÐz{Ðz{Ðz{ð  ~Aô  ~Pð  ~Pð  ~Pð  %Qñ  Rô  Rð  Rà26Ð/Ð/õ  �iÐYZÐYZÐYZÐ\_Ô\nÐ\nÐ\nÐ oÑpÔpÐpà�Ð.Ø/ñ1ô 1ˆàˆr   TFc                 óþ   — t          |¦  «        t          k    rt          dt          |¦  «        z  ¦  «        ‚|| _        t          |¦  «        t          k    rt          dt          |¦  «        z  ¦  «        ‚|| _        dS )a0  

        :param accept_no_context_takeover: Iff true, client accepts "no context takeover" feature.
        :type accept_no_context_takeover: bool
        :param request_no_context_takeover: Iff true, client request "no context takeover" feature.
        :type request_no_context_takeover: bool
        z.invalid type %s for accept_no_context_takeoverú/invalid type %s for request_no_context_takeoverN)ÚtypeÚboolr%   r(   r)   )Úselfr(   r)   s      r   Ú__init__zPerMessageSnappyOffer.__init__j   s}   € õ Ð*Ñ+Ô+­tÒ3Ð3ÝÐLÍtÐTnÑOoÔOoÑoÑpÔpÐpà*DˆÔ'åÐ+Ñ,Ô,µÒ4Ð4ÝÐMÕPTÐUpÑPqÔPqÑqÑrÔrÐrà+FˆÔ(Ð(Ð(r   c                 óD   — | j         }| j        r|dz  }| j        r|dz  }|S )úŸ
        Returns the WebSocket extension configuration string as sent to the server.

        :returns: PMCE configuration string.
        :rtype: str
        ú; client_no_context_takeoverú; server_no_context_takeover©r   r(   r)   ©r2   Úpmce_strings     r   Úget_extension_stringz*PerMessageSnappyOffer.get_extension_string~   s>   € ð Ô)ˆØÔ*ð 	:ØÐ9Ñ9ˆKØÔ+ð 	:ØÐ9Ñ9ˆKØÐr   c                 ó,   — | j         | j        | j        dœS )úŽ
        Returns a JSON serializable object representation.

        :returns: JSON serializable representation.
        :rtype: dict
        )Ú	extensionr(   r)   r8   ©r2   s    r   Ú__json__zPerMessageSnappyOffer.__json__Œ   s(   € ð "Ô0Ø.2Ô.MØ/3Ô/OðQð Qð 	Qr   c                 ó(   — d| j         ›d| j        ›d�S )úª
        Returns Python object representation that can be eval'ed to reconstruct the object.

        :returns: Python string representation.
        :rtype: str
        z3PerMessageSnappyOffer(accept_no_context_takeover = ú , request_no_context_takeover = ú))r(   r)   r?   s    r   Ú__repr__zPerMessageSnappyOffer.__repr__—   sH   € € ð nrô  nMð  nMð  nMð  OSô  Ooð  Ooð  Ooð  pð  	pr   N)TF)
r   r   r   r   Úclassmethodr-   r3   r;   r@   rE   r   r   r   r	   r	   8   s�   € € € € € ðð ð
 ð)ð )ñ „[ð)ðX -1Ø-2ðGð Gð Gð Gð(ð ð ð	Qð 	Qð 	Qðpð pð pð pð pr   r	   c                   ó0   — e Zd ZdZ	 	 dd„Zd„ Zd„ Zd„ ZdS )	r
   zl
    Set of parameters with which to accept an `permessage-snappy` offer
    from a client by a server.
    FNc                 óä  — t          |t          ¦  «        st          dt          |¦  «        z  ¦  «        ‚|| _        t          |¦  «        t
          k    rt          dt          |¦  «        z  ¦  «        ‚|r|j        st          d|z  ¦  «        ‚|| _        |�Rt          |¦  «        t
          k    rt          dt          |¦  «        z  ¦  «        ‚|j        r|st          d|z  ¦  «        ‚|| _        dS )aÓ  

        :param offer: The offer being accepted.
        :type offer: Instance of :class:`autobahn.compress.PerMessageSnappyOffer`.
        :param request_no_context_takeover: Iff true, server request "no context takeover" feature.
        :type request_no_context_takeover: bool
        :param no_context_takeover: Override server ("server-to-client direction") context takeover (this must be compatible with offer).
        :type no_context_takeover: bool
        zinvalid type %s for offerr/   zPinvalid value %s for request_no_context_takeover - feature unsupported by clientNú'invalid type %s for no_context_takeoverzCinvalid value %s for no_context_takeover - client requested feature)	Ú
isinstancer	   r%   r0   r,   r1   r(   r)   Úno_context_takeover)r2   r,   r)   rK   s       r   r3   z$PerMessageSnappyOfferAccept.__init__§   s  € õ ˜%Õ!6Ñ7Ô7ð 	GÝÐ7½$¸u¹+¼+ÑEÑFÔFÐFàˆŒ
åÐ+Ñ,Ô,µÒ4Ð4ÝÐMÕPTÐUpÑPqÔPqÑqÑrÔrÐrà&ð 	N¨uÔ/Oð 	NÝÐnð  rMñ  Mñ  Nô  Nð  Nà+FˆÔ(àÐ*ÝÐ'Ñ(Ô(­DÒ0Ð0ÝÐ IÍDÐQdÑLeÔLeÑ eÑfÔfÐfàÔ0ð }Ð9Lð }ÝÐ eÐh{Ñ {Ñ|Ô|Ð|à#6ˆÔ Ð Ð r   c                 óN   — | j         }| j        j        r|dz  }| j        r|dz  }|S )r5   r7   r6   )r   r,   r)   r9   s     r   r;   z0PerMessageSnappyOfferAccept.get_extension_stringÊ   s@   € ð Ô)ˆØŒ:Ô1ð 	:ØÐ9Ñ9ˆKØÔ+ð 	:ØÐ9Ñ9ˆKØÐr   c                 ó\   — | j         | j                             ¦   «         | j        | j        dœS )r=   )r>   r,   r)   rK   )r   r,   r@   r)   rK   r?   s    r   r@   z$PerMessageSnappyOfferAccept.__json__Ø   s9   € ð "Ô0Øœ×,Ò,Ñ.Ô.Ø/3Ô/OØ'+Ô'?ðAð Að 	Ar   c                 ó\   — d| j                              ¦   «         ›d| j        ›d| j        ›d�S )rB   zPerMessageSnappyAccept(offer = rC   ú, no_context_takeover = rD   )r,   rE   r)   rK   r?   s    r   rE   z$PerMessageSnappyOfferAccept.__repr__ä   s|   € € ð txÔs}÷  tGò  tGñ  tIô  tIð  tIð  tIð  KOô  Kkð  Kkð  Kkð  mqô  mEð  mEð  mEð  Fð  	Fr   )FN)r   r   r   r   r3   r;   r@   rE   r   r   r   r
   r
   ¡   sp   € € € € € ðð ð .3Ø%)ð!7ð !7ð !7ð !7ðFð ð ð
Að 
Að 
AðFð Fð Fð Fð Fr   r
   c                   ó:   — e Zd ZdZed„ ¦   «         Zd„ Zd„ Zd„ ZdS )r   zH
    Set of parameters for `permessage-snappy` responded by server.
    c           
      ó”  — d}d}|D ]´}t          ||         ¦  «        dk    rt          d|›d| j        ›d�¦  «        ‚||         d         }|dk    r%|durt          d	|›d
|›d| j        ›d�¦  «        ‚d}Œo|dk    r%|durt          d	|›d
|›d| j        ›d�¦  «        ‚d}Œšt          d|›d| j        ›d�¦  «        ‚ | ||¦  «        }|S )ac  
        Parses a WebSocket extension response for `permessage-snappy` provided by a server to a client.

        :param params: Output from :func:`autobahn.websocket.WebSocketProtocol._parseExtensionsHeader`.
        :type params: list

        :returns: A new instance of :class:`autobahn.compress.PerMessageSnappyResponse`.
        :rtype: obj
        Fr   r   r   r   r   r   Tr   r   r    r!   r"   r#   )r&   r'   r   r!   r*   r+   Úresponses          r   r-   zPerMessageSnappyResponse.parseó   s  € ð &+Ð"Ø%*Ð"àð 	qð 	qˆAå�6˜!”9‰~Œ~ Ò!Ð!Ý�iÐhiÐhiÐhiÐknÔk}Ðk}Ðk}Ð ~ÑÔÐà˜”)˜A”,ˆCàÐ0Ò0Ð0à˜d�?�?Ý#˜)ÐuxÐuxÐuxÐz{Ðz{Ðz{ð  ~Aô  ~Pð  ~Pð  ~Pð  %Qñ  Rô  Rð  Rà15Ð.Ð.àÐ2Ò2Ð2à˜d�?�?Ý#˜)ÐuxÐuxÐuxÐz{Ðz{Ðz{ð  ~Aô  ~Pð  ~Pð  ~Pð  %Qñ  Rô  Rð  Rà15Ð.Ð.õ  �iÐYZÐYZÐYZÐ\_Ô\nÐ\nÐ\nÐ oÑpÔpÐpà�3Ð1Ø1ñ3ô 3ˆàˆr   c                 ó"   — || _         || _        d S ©N©r   r!   )r2   r   r!   s      r   r3   z!PerMessageSnappyResponse.__init__  s   € ð +EˆÔ'Ø*DˆÔ'Ð'Ð'r   c                 ó,   — | j         | j        | j        dœS )r=   )r>   r   r!   )r   r   r!   r?   s    r   r@   z!PerMessageSnappyResponse.__json__#  s(   € ð "Ô0Ø.2Ô.MØ.2Ô.MðOð Oð 	Or   c                 ó(   — d| j         ›d| j        ›d�S )rB   z6PerMessageSnappyResponse(client_no_context_takeover = ú, server_no_context_takeover = rD   rU   r?   s    r   rE   z!PerMessageSnappyResponse.__repr__.  sH   € € ð ptô  pOð  pOð  pOð  QUô  Qpð  Qpð  Qpð  qð  	qr   N)	r   r   r   r   rF   r-   r3   r@   rE   r   r   r   r   r   î   sr   € € € € € ðð ð ð'ð 'ñ „[ð'ðREð Eð Eð	Oð 	Oð 	Oðqð qð qð qð qr   r   c                   ó(   — e Zd ZdZ	 dd„Zd„ Zd„ ZdS )r   zo
    Set of parameters with which to accept an `permessage-snappy` response
    from a server by a client.
    Nc                 ó2  — t          |t          ¦  «        st          dt          |¦  «        z  ¦  «        ‚|| _        |�Rt          |¦  «        t
          k    rt          dt          |¦  «        z  ¦  «        ‚|j        r|st          d|z  ¦  «        ‚|| _        dS )aN  

        :param response: The response being accepted.
        :type response: Instance of :class:`autobahn.compress.PerMessageSnappyResponse`.
        :param no_context_takeover: Override client ("client-to-server direction") context takeover (this must be compatible with response).
        :type no_context_takeover: bool
        zinvalid type %s for responseNrI   zCinvalid value %s for no_context_takeover - server requested feature)rJ   r   r%   r0   rR   r1   r   rK   )r2   rR   rK   s      r   r3   z'PerMessageSnappyResponseAccept.__init__>  s¨   € õ ˜(Õ$<Ñ=Ô=ð 	MÝÐ:½TÀ(¹^¼^ÑKÑLÔLÐLà ˆŒàÐ*ÝÐ'Ñ(Ô(­DÒ0Ð0ÝÐ IÍDÐQdÑLeÔLeÑ eÑfÔfÐfàÔ2ð }Ð;Nð }ÝÐ eÐh{Ñ {Ñ|Ô|Ð|à#6ˆÔ Ð Ð r   c                 óP   — | j         | j                             ¦   «         | j        dœS )r=   )r>   rR   rK   )r   rR   r@   rK   r?   s    r   r@   z'PerMessageSnappyResponseAccept.__json__V  s3   € ð "Ô0Ø œM×2Ò2Ñ4Ô4Ø'+Ô'?ðAð Að 	Ar   c                 óL   — d| j                              ¦   «         ›d| j        ›d�S )rB   z*PerMessageSnappyResponseAccept(response = rO   rD   )rR   rE   rK   r?   s    r   rE   z'PerMessageSnappyResponseAccept.__repr__a  sD   € € ð ]aÔ\i×\rÒ\rÑ\tÔ\tÐ\tÐ\tÐvzô  wOð  wOð  wOð  Pð  	Pr   rT   )r   r   r   r   r3   r@   rE   r   r   r   r   r   8  s]   € € € € € ðð ð &*ð7ð 7ð 7ð 7ð0	Að 	Að 	AðPð Pð Pð Pð Pr   r   c                   ót   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ ZdS )r   z<
    `permessage-snappy` WebSocket extension processor.
    c                 ód   —  | ||j         j        |j        �|j        n|j         j        ¦  «        }|S rT   )rR   r!   rK   r   ©r&   Ú	is_serverÚacceptÚpmces       r   Úcreate_from_response_acceptz,PerMessageSnappy.create_from_response_acceptp  sD   € àˆs�9Ø”?Ô=Ø17Ô1KÐ1W�6Ô-Ð-Ð]cÔ]lô  ^HñIô Iˆð ˆr   c                 óZ   —  | ||j         �|j         n|j        j        |j        ¦  «        }|S rT   )rK   r,   r)   r_   s       r   Úcreate_from_offer_acceptz)PerMessageSnappy.create_from_offer_acceptw  s@   € àˆs�9Ø17Ô1KÐ1W�6Ô-Ð-Ð]cÔ]iô  ^FØÔ5ñ7ô 7ˆð ˆr   c                 óL   — || _         || _        || _        d | _        d | _        d S rT   )Ú
_is_serverr!   r   Ú_compressorÚ_decompressor)r2   r`   r!   r   s       r   r3   zPerMessageSnappy.__init__~  s1   € ð $ˆŒØ*DˆÔ'Ø*DˆÔ'àˆÔØ!ˆÔÐÐr   c                 ó,   — | j         | j        | j        dœS )N)r>   r!   r   )r   r!   r   r?   s    r   r@   zPerMessageSnappy.__json__‰  s&   € Ø!Ô0Ø.2Ô.MØ.2Ô.MðOð Oð 	Or   c                 ó8   — d| j         ›d| j        ›d| j        ›d�S )NzPerMessageSnappy(is_server = rX   z, client_no_context_takeover = rD   )rg   r!   r   r?   s    r   rE   zPerMessageSnappy.__repr__Ž  s`   € € Øw{ô  xGð  xGð  xGð  IMô  Ihð  Ihð  Ihð  jnô  jIð  jIð  jIð  Jð  	Jr   c                 ó¸   — | j         r*| j        �| j        rt          j        ¦   «         | _        d S d S | j        �| j        rt          j        ¦   «         | _        d S d S rT   )rg   rh   r!   ÚsnappyÚStreamCompressorr   r?   s    r   Ústart_compress_messagez'PerMessageSnappy.start_compress_message‘  sn   € ØŒ?ð 	=ØÔÐ'¨4Ô+JÐ'Ý#)Ô#:Ñ#<Ô#<�Ô Ð Ð ð (Ð'ð ÔÐ'¨4Ô+JÐ'Ý#)Ô#:Ñ#<Ô#<�Ô Ð Ð ð (Ð'r   c                 ó6   — | j                              |¦  «        S rT   )rh   Ú	add_chunk©r2   Údatas     r   Úcompress_message_dataz&PerMessageSnappy.compress_message_data™  s   € ØÔ×)Ò)¨$Ñ/Ô/Ð/r   c                 ó   — dS )Nr   r   r?   s    r   Úend_compress_messagez%PerMessageSnappy.end_compress_messageœ  s   € Øˆsr   c                 ó¸   — | j         r*| j        �| j        rt          j        ¦   «         | _        d S d S | j        �| j        rt          j        ¦   «         | _        d S d S rT   )rg   ri   r   rm   ÚStreamDecompressorr!   r?   s    r   Ústart_decompress_messagez)PerMessageSnappy.start_decompress_messageŸ  so   € ØŒ?ð 	AØÔ!Ð)¨TÔ-LÐ)Ý%+Ô%>Ñ%@Ô%@�Ô"Ð"Ð"ð *Ð)ð Ô!Ð)¨TÔ-LÐ)Ý%+Ô%>Ñ%@Ô%@�Ô"Ð"Ð"ð *Ð)r   c                 ó6   — | j                              |¦  «        S rT   )ri   Ú
decompressrr   s     r   Údecompress_message_dataz(PerMessageSnappy.decompress_message_data§  s   € ØÔ!×,Ò,¨TÑ2Ô2Ð2r   c                 ó   — d S rT   r   r?   s    r   Úend_decompress_messagez'PerMessageSnappy.end_decompress_messageª  s   € Øˆr   N)r   r   r   r   rF   rc   re   r3   r@   rE   ro   rt   rv   ry   r|   r~   r   r   r   r   r   k  sä   € € € € € ðð ð ðð ñ „[ðð ðð ñ „[ðð	"ð 	"ð 	"ðOð Oð Oð
Jð Jð Jð=ð =ð =ð0ð 0ð 0ðð ð ðAð Að Að3ð 3ð 3ðð ð ð ð r   r   )rm   Ú autobahn.websocket.compress_baser   r   r   r   r   Ú__all__Úobjectr   r	   r
   r   r   r   r   r   r   ú<module>r‚      s½  ðð6 €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð€ðð ð ð ð ˜Fñ ô ð ðfpð fpð fpð fpð fpÐ3Ð5Jñ fpô fpð fpðRJFð JFð JFð JFð JFÐ"?ÐAVñ JFô JFð JFðZGqð Gqð Gqð Gqð GqÐ9Ð;Pñ Gqô Gqð GqðT0Pð 0Pð 0Pð 0Pð 0PÐ%EÐG\ñ 0Pô 0Pð 0Pðf@ð @ð @ð @ð @Ð)Ð+@ñ @ô @ð @ð @ð @r   