Ë
    Õ±1hM:  ã                  óö  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 ddlmZ ddlmZ ddlmZ g d	¢Z d
j$                  ej&                  Ž Zej*                  j-                  dde› de› �«      Zej*                  j-                  dde› de› �«      Z eej*                  j-                  dd«      «      Z eej*                  j-                  dd«      «      Z eej*                  j-                  dd«      «      Zdd„Z ej<                  d«      Z ej<                  d«      Z ejB                   G d„ d«      «       Z"ejB                   G d„ d«      «       Z#	 	 	 	 d d„Z$	 	 	 	 d!d„Z%	 	 	 	 	 	 	 	 	 	 	 	 d"d„Z&y)#é    )ÚannotationsN)Ú	Generator)ÚCallableé   )ÚHeaders)ÚSecurityError)Úversion)ÚSERVERÚ
USER_AGENTÚRequestÚResponsez{}.{}ÚWEBSOCKETS_USER_AGENTzPython/z websockets/ÚWEBSOCKETS_SERVERÚWEBSOCKETS_MAX_NUM_HEADERSÚ128ÚWEBSOCKETS_MAX_LINE_LENGTHÚ8192ÚWEBSOCKETS_MAX_BODY_SIZEÚ	1_048_576c                ó&   — | j                  d¬«      S )zG
    Decode a bytestring for interpolating into an error message.

    Úbackslashreplace©Úerrors)Údecode)Úvalues    úO/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/websockets/http11.pyÚdr   2   s   € ð
 �<‰<Ð1ˆ<Ó2Ð2ó    s   [-!#$%&\'*+.^_`|~0-9a-zA-Z]+s   [\x09\x20-\x7e\x80-\xff]*c                  óh   — e Zd ZU dZded<   ded<   dZded<   edd	„«       Ze	 	 	 	 dd
„«       Z	dd„Z
y)r   z�
    WebSocket handshake request.

    Attributes:
        path: Request path, including optional query.
        headers: Request headers.
    ÚstrÚpathr   ÚheadersNúException | NoneÚ
_exceptionc                óN   — t        j                  dt        «       | j                  S )NzIRequest.exception is deprecated; use ServerProtocol.handshake_exc instead©ÚwarningsÚwarnÚDeprecationWarningr$   ©Úselfs    r   Ú	exceptionzRequest.exception^   s    € ä�‰ØWÜô	
ð �‰Ðr   c              #  óô  K  — 	 t        |«      E d{  –—† }	 |j                  dd«      \  }}}|dk7  rt        dt	        |«      › �«      ‚|dk7  rt        d	t	        |«      › �«      ‚|j                  d
d«      }t        |«      E d{  –—† }d|v rt        d«      ‚d|v rt        d«      ‚ | ||«      S 7 ŒŸ# t        $ r}t        d«      |‚d}~ww xY w# t        $ r t        dt	        |«      › �«      d‚w xY w7 Œo­w)a©  
        Parse a WebSocket handshake request.

        This is a generator-based coroutine.

        The request path isn't URL-decoded or validated in any way.

        The request path and headers are expected to contain only ASCII
        characters. Other characters are represented with surrogate escapes.

        :meth:`parse` doesn't attempt to read the request body because
        WebSocket handshake requests don't have one. If the request contains a
        body, it may be read from the data stream after :meth:`parse` returns.

        Args:
            read_line: Generator-based coroutine that reads a LF-terminated
                line or raises an exception if there isn't enough data

        Raises:
            EOFError: If the connection is closed without a full HTTP request.
            SecurityError: If the request exceeds a security limit.
            ValueError: If the request isn't well formatted.

        Nz1connection closed while reading HTTP request lineó    é   zinvalid HTTP request line: ó   HTTP/1.1ú)unsupported protocol; expected HTTP/1.1: s   GETz+unsupported HTTP method; expected GET; got ÚasciiÚsurrogateescapeúTransfer-Encodingz!transfer codings aren't supportedúContent-Lengthzunsupported request body)Ú
parse_lineÚEOFErrorÚsplitÚ
ValueErrorr   r   Úparse_headersÚNotImplementedError)	ÚclsÚ	read_lineÚrequest_lineÚexcÚmethodÚraw_pathÚprotocolr!   r"   s	            r   ÚparsezRequest.parsef   s-  è ø€ ðF	YÜ&0°Ó&;×;ˆLð	XØ)5×);Ñ);¸DÀ!Ó)DÑ&ˆF�H˜hð �{Ò"ÜØ;¼A¸l»OÐ;LÐMóð ð �VÒÜÐJÌ1ÈVË9È+ÐVÓWÐWØ�‰˜wÐ(9Ó:ˆä*¨9Ó5×5ˆð  'Ñ)Ü%Ð&IÓJÐJà˜wÑ&ÜÐ7Ó8Ð8á�4˜Ó!Ð!ð5 <ùÜò 	YÜÐNÓOÐUXÐXûð	Yûô
 ò 	XÜÐ:¼1¸\»?Ð:KÐLÓMÐSWÐWð	Xúð 6úsU   ‚C8„B4 ’B2“B4 ˜C ®AC8ÂC6Â+C8Â2B4 Â4	CÂ=C	Ã	CÃC8Ã"C3Ã3C8c                ó|   — d| j                   › d�j                  «       }|| j                  j                  «       z  }|S )z;
        Serialize a WebSocket handshake request.

        zGET z HTTP/1.1
)r!   Úencoder"   Ú	serialize)r+   Úrequests     r   rF   zRequest.serialize¦   s;   € ð ˜Ÿ™˜ =Ð1×8Ñ8Ó:ˆØ�4—<‘<×)Ñ)Ó+Ñ+ˆØˆr   ©Úreturnr#   )r=   ú-Callable[[int], Generator[None, None, bytes]]rI   zGenerator[None, None, Request]©rI   Úbytes)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r$   Úpropertyr,   ÚclassmethodrC   rF   © r   r   r   r   N   s_   … ñð ƒIØÓð $(€JÐ Ó'àòó ðð ð="à@ð="ð 
(ò="ó ð="ô~	r   r   c                  óŽ   — e Zd ZU dZded<   ded<   ded<   dZd	ed
<   dZded<   edd„«       Ze		 d	 	 	 	 	 	 	 	 	 dd„«       Z
dd„Zy)r   zÅ
    WebSocket handshake response.

    Attributes:
        status_code: Response code.
        reason_phrase: Response reason.
        headers: Response headers.
        body: Response body.

    ÚintÚstatus_coder    Úreason_phraser   r"   r   rL   ÚbodyNr#   r$   c                óN   — t        j                  dt        «       | j                  S )NzJResponse.exception is deprecated; use ClientProtocol.handshake_exc insteadr&   r*   s    r   r,   zResponse.exceptionÆ   s"   € ä�‰ð7äô	
ð
 �‰Ðr   c              #  óÂ  K  — 	 t        |«      E d{  –—† }	 |j                  dd«      \  }}}	|dk7  rt        dt	        |«      › �«      ‚	 t        |«      }
d	|
cxk  rd
k  sn t        dt	        |«      › �«      ‚t        j                  |	«      st        dt	        |	«      › �«      ‚|	j                  dd«      }t        |«      E d{  –—† }|rt        |
||||«      E d{  –—† }nd} | |
|||«      S 7 Œß# t        $ r}t        d«      |‚d}~ww xY w# t        $ r t        dt	        |«      › �«      d‚w xY w# t        $ r t        dt	        |«      › �«      d‚w xY w7 Œ”7 Œ}­w)aÂ  
        Parse a WebSocket handshake response.

        This is a generator-based coroutine.

        The reason phrase and headers are expected to contain only ASCII
        characters. Other characters are represented with surrogate escapes.

        Args:
            read_line: Generator-based coroutine that reads a LF-terminated
                line or raises an exception if there isn't enough data.
            read_exact: Generator-based coroutine that reads the requested
                bytes or raises an exception if there isn't enough data.
            read_to_eof: Generator-based coroutine that reads until the end
                of the stream.

        Raises:
            EOFError: If the connection is closed without a full HTTP response.
            SecurityError: If the response exceeds a security limit.
            LookupError: If the response isn't well formatted.
            ValueError: If the response isn't well formatted.

        Nz0connection closed while reading HTTP status liner.   r/   zinvalid HTTP status line: r0   r1   z+invalid status code; expected integer; got éd   iX  u-   invalid status code; expected 100â€“599; got zinvalid HTTP reason phrase: r2   r3   r   )r6   r7   r8   r9   r   rV   Ú	_value_reÚ	fullmatchr   r:   Ú	read_body)r<   r=   Ú
read_exactÚread_to_eofÚinclude_bodyÚstatus_liner?   rB   Úraw_status_codeÚ
raw_reasonrW   Úreasonr"   rY   s                 r   rC   zResponse.parseÏ   s¥  è ø€ ðB	XÜ%/°	Ó%:×:ˆKð	VØ4?×4EÑ4EÀdÈAÓ4NÑ1ˆH�o zð �{Ò"ÜØ;¼A¸k»NÐ;KÐLóð ð	Ü˜oÓ.ˆKð
 �kÔ' CÔ'ÜØ?ÄÀ/Ó@RÐ?SÐTóð ô ×"Ñ" :Ô.ÜÐ;¼A¸j»M¸?ÐKÓLÐLØ×"Ñ" 7Ð,=Ó>ˆä*¨9Ó5×5ˆáÜ'Ø˜W i°¸[ó÷ ‰Dð ˆDá�; ¨°Ó6Ð6ðG ;ùÜò 	XÜÐMÓNÐTWÐWûð	Xûô
 ò 	VÜÐ9¼!¸K».Ð9IÐJÓKÐQUÐUð	Vûô ò 	ÜØ=¼aÀÓ>PÐ=QÐRóàðð	úð 6øðús   ‚E„C4 ’C2“C4 ˜D ®EÁD6 ÁA0EÃEÃEÃEÃ EÃ2C4 Ã4	DÃ=D	Ä	DÄEÄ"D3Ä3EÄ6"EÅEÅEc                ó´   — d| j                   › d| j                  › d�j                  «       }|| j                  j	                  «       z  }|| j
                  z  }|S )z<
        Serialize a WebSocket handshake response.

        z	HTTP/1.1 ú z
)rW   rX   rE   r"   rF   rY   )r+   Úresponses     r   rF   zResponse.serialize  sY   € ð ˜t×/Ñ/Ð0°°$×2DÑ2DÐ1EÀTÐJ×QÑQÓSˆØ�D—L‘L×*Ñ*Ó,Ñ,ˆØ�D—I‘IÑˆØˆr   rH   )T)
r=   rJ   r`   rJ   ra   rJ   rb   ÚboolrI   zGenerator[None, None, Response]rK   )rM   rN   rO   rP   rQ   rY   r$   rR   r,   rS   rC   rF   rT   r   r   r   r   ²   sš   … ñ	ð ÓØÓØÓØ€Dˆ%Óà#'€JÐ Ó'àòó ðð ð "ðD7à@ðD7ð BðD7ð Cð	D7ð
 ðD7ð 
)òD7ó ðD7ôL
r   r   c              #  óª   K  — 	  | t         «      E d{  –—† }|j                  d«      st	        d«      ‚|dd S 7 Œ%# t        $ r t        d«      ‚w xY w­w)ao  
    Parse a single line.

    CRLF is stripped from the return value.

    Args:
        read_line: Generator-based coroutine that reads a LF-terminated line
            or raises an exception if there isn't enough data.

    Raises:
        EOFError: If the connection is closed without a CRLF.
        SecurityError: If the response exceeds a security limit.

    Nzline too longó   
zline without CRLFéþÿÿÿ)ÚMAX_LINE_LENGTHÚRuntimeErrorr   Úendswithr7   )r=   Úlines     r   r6   r6   #  s\   è ø€ ð"-Ù#¤OÓ4×4ˆð �=‰=˜Ô!ÜÐ*Ó+Ð+Ø��ˆ9Ðð 5ùÜò -Ü˜OÓ,Ð,ð-üs%   ‚A„; “9”; ˜!A¹; »AÁAc              #  óp  K  — t        «       }t        t        dz   «      D ]Å  }	 t        | «      E d{  –—† }|dk(  r |S 	 |j                  dd«      \  }}t        j                  |«      st        dt        |«      › �«      ‚|j                  d«      }t        j                  |«      st        d	t        |«      › �«      ‚|j                  d
«      }|j                  d
d«      }|||<   ŒÇ t        d«      ‚7 ŒÀ# t        $ r}t	        d«      |‚d}~ww xY w# t        $ r t        dt        |«      › �«      d‚w xY w­w)aÅ  
    Parse HTTP headers.

    Non-ASCII characters are represented with surrogate escapes.

    Args:
        read_line: Generator-based coroutine that reads a LF-terminated line
            or raises an exception if there isn't enough data.

    Raises:
        EOFError: If the connection is closed without complete headers.
        SecurityError: If the request exceeds a security limit.
        ValueError: If the request isn't well formatted.

    r   Nz,connection closed while reading HTTP headersr   ó   :zinvalid HTTP header line: zinvalid HTTP header name: s    	zinvalid HTTP header value: r2   r3   ztoo many HTTP headers)r   ÚrangeÚMAX_NUM_HEADERSr6   r7   r8   r9   r   Ú	_token_rer^   Ústripr]   r   r   )	r=   r"   Ú_rq   r?   Úraw_nameÚ	raw_valueÚnamer   s	            r   r:   r:   >  sK  è ø€ ô, ‹i€GÜ”? QÑ&Ó'ò 5ˆð	TÜ(¨Ó3×3ˆDð �3Š;Øð& €Nð#	OØ"&§*¡*¨T°1Ó"5ÑˆH�iô ×"Ñ" 8Ô,ÜÐ9¼!¸H»+¸ÐGÓHÐHØ—O‘O FÓ+ˆ	Ü×"Ñ" 9Ô-ÜÐ:¼1¸Y»<¸.ÐIÓJÐJà�‰˜wÓ'ˆØ× Ñ  Ð*;Ó<ˆØˆ�Šð)5ô. Ð3Ó4Ð4ð+ 4ùÜò 	TÜÐIÓJÐPSÐSûð	Tûô ò 	OÜÐ9¼!¸D»'¸ÐCÓDÈ$ÐNð	OüsO   ‚ D6£C4±C2²C4¶D6¿DÁBD6Ã2C4Ã4	DÃ=D	Ä	DÄD6Ä"D3Ä3D6c              #  ó˜  K  — d| cxk  rdk  sn | dk(  s| dk(  ry|j                  d«      x}�÷|dk7  rt        d|› d	�«      ‚d}	 t        |«      E d {  –—† }|j                  d
d«      d   }t	        |«      dkD  r!|j                  d¬«      }	t        d|	› d�«      ‚t        |d«      }
|
dk(  rnbt	        |«      |
z   t        kD  rt        d|
› dt	        |«      › d�«      ‚| ||
«      E d {  –—† z  } |d«      E d {  –—† dk7  rt        d«      ‚ŒËt        |«      E d {  –—†  |S |j                  d«      x}�Pt	        |«      dkD  rt        d|› d�«      ‚t        |«      }|t        kD  rt        d|› d�«      ‚ ||«      E d {  –—† S 	  |t        «      E d {  –—† S 7 �ŒJ7 Œµ7 Œ¥7 Œ…7 Œ"7 Œ# t        $ r t        dt        › d�«      ‚w xY w­w)Nr\   éÈ   éÌ   i0  r   r4   Úchunkedztransfer coding z isn't supportedó   ;r   r   é   r   r   zchunk too large: 0xz bytesé   zchunk too large: z bytes after r/   rl   zchunk without CRLFr5   é   zbody too large: zbody too large: over )Úgetr;   r6   r8   Úlenr   r   rV   ÚMAX_BODY_SIZEr9   r:   ro   )rW   r"   r=   r`   ra   ÚcodingrY   Úchunk_size_lineÚraw_chunk_sizeÚstr_chunk_sizeÚ
chunk_sizeÚraw_content_lengthÚcontent_lengths                r   r_   r_   q  s  è ø€ ð ˆkÔ˜CÔ ;°#Ò#5¸ÈÒ9KØð —K‘KÐ 3Ó4Ð
4ˆ&Ð	AØ�YÒÜ%Ð(8¸¸Ð@PÐ&QÓRÐRàˆØÜ)3°IÓ)>×>ˆOØ,×2Ñ2°4¸Ó;¸AÑ>ˆNä�>Ó" RÒ'Ø!/×!6Ñ!6Ð>PÐ!6Ó!Q�Ü#Ð&9¸.Ð9IÈÐ$PÓQÐQÜ˜^¨RÓ0ˆJØ˜QŠØÜ�4‹y˜:Ñ%¬Ò5Ü#Ø'¨
 |°=ÄÀTÃÀÈ6ÐRóð ð ™z¨*Ó5×5Ñ5ˆDÙ% a›=×(¨WÒ4Ü Ð!5Ó6Ð6ð! ô$ ! Ó+×+Ð+Øˆà '§¡Ð,<Ó =Ð
=Ð
Ð	JäÐ!Ó" RÒ'ÜÐ"2Ð3EÐ2FÀfÐ MÓNÐNÜÐ/Ó0ˆØœMÒ)ÜÐ"2°>Ð2BÀ&Ð IÓJÐJÙ% nÓ5×5Ð6ð	OÙ*¬=Ó9×9Ð:ð? ?ùð 6øØ(øð 	,øð 6øð :ùÜò 	OÜÐ"7¼°ÀfÐ MÓNÐNð	Oüs†   ‚AG
ÁFÁBG
Ã*F Ã+G
Ã<F"Ã=!G
ÄF$ÄA$G
ÆF&ÆG
Æ	F* ÆF(ÆF* ÆG
Æ G
Æ"G
Æ$G
Æ&G
Æ(F* Æ*GÇG
)r   rL   rI   r    )r=   rJ   rI   úGenerator[None, None, bytes])r=   rJ   rI   zGenerator[None, None, Headers])rW   rV   r"   r   r=   rJ   r`   rJ   ra   rJ   rI   rŽ   )'Ú
__future__r   ÚdataclassesÚosÚreÚsysr'   Úcollections.abcr   Útypingr   Údatastructuresr   Ú
exceptionsr   r	   Úwebsockets_versionÚ__all__ÚformatÚversion_infoÚPYTHON_VERSIONÚenvironr„   r   r
   rV   ru   rn   r†   r   Úcompilerv   r]   Ú	dataclassr   r   r6   r:   r_   rT   r   r   ú<module>r       sÍ  ðÝ "ã Û 	Û 	Û 
Û Ý %Ý å #Ý %Ý 2ò€ð  �—‘ ×!1Ñ!1Ð2€ð �Z‰Z�^‰^ØØˆnÐ˜\Ð*<Ð)=Ð>ó€
ð 
�‰�‰ØØˆnÐ˜\Ð*<Ð)=Ð>ó
€ñ �b—j‘j—n‘nÐ%AÀ5ÓIÓJ€ñ �b—j‘j—n‘nÐ%AÀ6ÓJÓK€ñ �B—J‘J—N‘NÐ#=¸{ÓKÓL€ó3ð ˆB�J‰JÐ7Ó8€	ð ˆB�J‰JÐ4Ó5€	ð ×Ñ÷`ð `ó ð`ðF ×Ñ÷mð mó ðmð`Ø<ðà!óð60Ø<ð0à#ó0ðf:OØð:Oàð:Oð =ð:Oð >ð	:Oð
 ?ð:Oð "ô:Or   