Ë
    ¶�/jì$  ã                   óÎ   — d dl Z d dlZd dlZd dlZd dlZd dlZd dl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mZmZmZmZ  G d„ de«      Z G d„ de«      Z G d„ d	e«      Zy)
é    N)ÚNullContext)ÚQUIC_MAX_DATAGRAMÚAsyncQuicConnectionÚAsyncQuicManagerÚBaseQuicStreamÚUnexpectedEOFc                   óR   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd
d„Zdd„Zd„ Zd„ Z	d„ Z
d	„ Zˆ xZS )ÚTrioQuicStreamc                 óX   •— t         ‰| �  ||«       t        j                  «       | _        y ©N)ÚsuperÚ__init__ÚtrioÚ	ConditionÚ_wake_up)ÚselfÚ
connectionÚ	stream_idÚ	__class__s      €úPC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\dns/quic/_trio.pyr   zTrioQuicStream.__init__   s    ø€ Ü‰Ñ˜ YÔ/ÜŸ™Ó(ˆ�ó    c              ƒ   ó&  K  — 	 | j                   j                  |«      ry || _        | j                  4 ƒd {  –—†  | j                  j	                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  d| _        Œr7 Œ>7 Œ7 Œ# 1 ƒd {  –—†7  sw Y   Œ xY w­w)Nr   )Ú_bufferÚhaveÚ
_expectingr   Úwait)r   Úamounts     r   Úwait_forzTrioQuicStream.wait_for    sm   è ø€ ØØ�|‰|× Ñ  Ô(ØØ$ˆDŒOØ—}—}“}Ø—m‘m×(Ñ(Ó*×*Ð*÷ %—}àˆDŒOð ð %øØ*øð %ø—}—}‘}üsV   ‚5B·A6¸B»A<ÁA8ÁA<ÁBÁ)A:Á*BÁ8A<Á:BÁ<BÂBÂBÂ
Bc              ƒ   ó  K  — 	 | j                   j                  «       ry | j                  4 ƒd {  –—†  | j                  j                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  Œc7 Œ77 Œ7 Œ	# 1 ƒd {  –—†7  sw Y   ŒxY w­wr   )r   Úseen_endr   r   ©r   s    r   Úwait_for_endzTrioQuicStream.wait_for_end)   s]   è ø€ ØØ�|‰|×$Ñ$Ô&ØØ—}—}“}Ø—m‘m×(Ñ(Ó*×*Ð*÷ %—}ð ð %øØ*øð %ø—}—}‘}üsV   ‚-B¯A'°B³A-ÁA)ÁA-ÁBÁ!A+Á"BÁ)A-Á+BÁ-A?Á3A6Á4A?Á;Bc              ƒ   ód  K  — |€t        d «      }nt        j                  |«      }|5  | j                  j	                  «       r;| j                  «       ƒ d {  –—†  | j                  j                  «       cd d d «       S | j                  d«      ƒ d {  –—†  t        j                  d| j                  j                  d«      «      \  }| j                  |«      ƒ d {  –—†  | j                  j                  |«      cd d d «       S 7 Œ®7 Œt7 Œ,# 1 sw Y   t        j                  j                  ‚xY w­w)Né   z!H)r   r   Úmove_on_afterÚ_connectionÚis_h3r"   r   Úget_allr   ÚstructÚunpackÚgetÚdnsÚ	exceptionÚTimeout)r   ÚtimeoutÚcontextÚsizes       r   ÚreceivezTrioQuicStream.receive0   sè   è ø€ Øˆ?Ü! $Ó'‰Gä×(Ñ(¨Ó1ˆGÚØ×Ñ×%Ñ%Ô'Ø×'Ñ'Ó)×)Ð)Ø—|‘|×+Ñ+Ó-÷ ‰Wð
 —m‘m AÓ&×&Ð&Ü Ÿ-™-¨¨d¯l©l×.>Ñ.>¸qÓ.AÓB‘�Ø—m‘m DÓ)×)Ð)Ø—|‘|×'Ñ'¨Ó-÷ ‰Wà)øð 'øà)ø÷ ô �m‰m×#Ñ#Ð#üs_   ‚&D0¨.DÁDÁDÁ4
D0Á>DÂDÂA	DÃD	ÃDÃ;
D0ÄDÄDÄ	DÄD-Ä D0c              ƒ   ó�   K  — | j                  |«      }| j                  j                  | j                  ||«      ƒ d {  –—†  y 7 Œ­wr   )Ú_encapsulater&   ÚwriteÚ
_stream_id)r   ÚdatagramÚis_endÚdatas       r   ÚsendzTrioQuicStream.send@   s8   è ø€ Ø× Ñ  Ó*ˆØ×Ñ×$Ñ$ T§_¡_°d¸FÓC×CÒCús   ‚<A¾A¿Ac              ƒ   óâ   K  — | j                  ||«      r@| j                  4 ƒd {  –—†  | j                  j                  «        d d d «      ƒd {  –—†  y y 7 Œ07 Œ# 1 ƒd {  –—†7  sw Y   y xY w­wr   )Ú_common_add_inputr   Únotify)r   r9   r8   s      r   Ú
_add_inputzTrioQuicStream._add_inputD   sJ   è ø€ Ø×!Ñ! $¨Ô/Ø—}—}“}Ø—‘×$Ñ$Ô&÷ %—}�}ð 0Ø$ø�}ø—}—}‘}üsD   ‚#A/¥A¦A/©AÁA/ÁAÁA/ÁA/ÁA,Á A#Á!A,Á(A/c              ƒ   ó,   K  — | j                  «        y ­wr   )Ú_closer!   s    r   ÚclosezTrioQuicStream.closeI   s   è ø€ Ø�‰�ùs   ‚c              ƒ   ó   K  — | S ­wr   © r!   s    r   Ú
__aenter__zTrioQuicStream.__aenter__N   ó   è ø€ Øˆùó   ‚c              ƒ   óð   K  — | j                  «       ƒ d {  –—†  | j                  4 ƒd {  –—†  | j                  j                  «        d d d «      ƒd {  –—†  y7 ŒD7 Œ17 Œ	# 1 ƒd {  –—†7  sw Y   yxY w­w©NF)rA   r   r=   )r   Úexc_typeÚexc_valÚexc_tbs       r   Ú	__aexit__zTrioQuicStream.__aexit__Q   sN   è ø€ Ø�j‰j‹l×ÐØ—=—=“=Ø�M‰M× Ñ Ô"÷ !—=àð 	øØ ø�=ø—=—=�=àüsT   ‚A6–A—A6«A¬A6¯A!Á
A6ÁAÁA6ÁA6ÁA6Á!A3Á'A*Á(A3Á/A6r   ©F)Ú__name__Ú
__module__Ú__qualname__r   r   r"   r2   r:   r>   rA   rD   rL   Ú__classcell__©r   s   @r   r
   r
      s1   ø„ ô)ò ò+ó$ó Dò'ò
ò
ör   r
   c                   óH   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd	d„Zd„ Zdd„Zd„ Z	ˆ xZ
S )
ÚTrioQuicConnectionc                 ó*  •— t         ‰| �  ||||||«       t        j                  j                  | j                  t        j
                  d«      | _        t        j                  «       | _        t        j                  «       | _	        d | _
        d| _        y )Nr   F)r   r   r   ÚsocketÚ_afÚ
SOCK_DGRAMÚ_socketÚEventÚ_handshake_completeÚ	_run_doneÚ_worker_scopeÚ_send_pending)r   r   ÚaddressÚportÚsourceÚsource_portÚmanagerr   s          €r   r   zTrioQuicConnection.__init__Y   si   ø€ Ü‰Ñ˜ W¨d°F¸KÈÔQÜ—{‘{×)Ñ)¨$¯(©(´F×4EÑ4EÀqÓIˆŒÜ#'§:¡:£<ˆÔ ÜŸ™›ˆŒØ!ˆÔØ"ˆÕr   c              ƒ   ó   K  — 	 | j                   rU| j                  j                  t        j                  j                  | j                   | j                  «      «      ƒ d {  –—†  | j                  j                  | j                  «      ƒ d {  –—†  | j                  �sZ| j                  d«      \  }}| j                  rd}t        j                  t        j                  «       |z   ¬«      5 | _        | j                  j!                  t"        «      ƒ d {  –—† }| j$                  j'                  || j                  t)        j(                  «       «       d d d «       d | _        | j+                  |«       | j-                  «       ƒ d {  –—†  d| _        | j$                  j/                  t)        j(                  «       «      }|D ](  \  }}| j                  j1                  |«      ƒ d {  –—†  Œ* | j                  s�ŒZd| _	        | j                  j3                  «        | j4                  j7                  «        y 7 �ŒÕ7 �Œ«7 �Œ'# 1 sw Y   ŒíxY w7 ŒÄ7 Œg# d| _	        | j                  j3                  «        | j4                  j7                  «        w xY w­w)NFg        )ÚdeadlineT)Ú_sourcerY   Úbindr,   ÚinetÚlow_level_address_tuplerW   ÚconnectÚ_peerÚ_doneÚ_get_timer_valuesr^   r   ÚCancelScopeÚcurrent_timer]   Úrecvr   r&   Úreceive_datagramÚtimeÚ_handle_timerÚ_handle_eventsÚdatagrams_to_sendr:   rA   r[   Úset)r   Ú
expirationÚintervalr7   Ú	datagramsÚ_s         r   Ú_workerzTrioQuicConnection._workera   sö  è ø€ ð"	+Ø�|Š|Ø—l‘l×'Ñ'Ü—H‘H×4Ñ4°T·\±\À4Ç8Á8ÓLó÷ ð ð —,‘,×&Ñ& t§z¡zÓ2×2Ð2Ø—j“jØ)-×)?Ñ)?ÀÓ)FÑ&�˜XØ×%Ò%ð  #�HÜ×%Ñ%Ü!×.Ñ.Ó0°8Ñ;õàÔ'Ø%)§\¡\×%6Ñ%6Ô7HÓ%I×I�HØ×$Ñ$×5Ñ5°hÀÇ
Á
ÌDÏIÉIËKÔX÷	ð
 &*�Ô"Ø×"Ñ" :Ô.Ø×)Ñ)Ó+×+Ð+ð &+�Ô"Ø ×,Ñ,×>Ñ>¼t¿y¹y»{ÓK�	Û#,‘K�H˜aØŸ,™,×+Ñ+¨HÓ5×5Ñ5ð $-ð/ —j”jð4 ˆDŒJØ�L‰L×ÑÔ Ø×$Ñ$×(Ñ(Õ*ðAùð 3ùð  Jù÷ð úð ,øð 6ùàˆDŒJØ�L‰L×ÑÔ Ø×$Ñ$×(Ñ(Õ*üs‹   ‚J„AI Á H5Á!,I ÂH8ÂAI Ã,(H>ÄH;Ä=H>Å3I ÆI
ÆAI Ç$IÇ%I Ç9<JÈ5I È8I È;H>È>IÉI ÉI É=JÊJc              ƒ   óà  K  — d}	 | j                   j                  «       }|€y t        |t        j                  j
                  j                  «      �rÜ| j                  «       �rs| j                  €J ‚| j                  j                  |«      }|D �]B  }t        |t        j                  j
                  j                  «      r‹| j                  j                  |j                  «      }|sŒZ|j                  €|j                   |_        n|j"                  €|j                   |_        |j$                  sŒ¢|j'                  dd«      ƒ d {  –—†  Œ½t        |t        j                  j
                  j(                  «      sŒì| j                  j                  |j                  «      }|s�Œ|j'                  |j*                  |j$                  «      ƒ d {  –—†  �ŒE �n`| j                  j                  |j                  «      }|�r8|j'                  |j*                  |j,                  «      ƒ d {  –—†  �nt        |t        j                  j
                  j.                  «      r| j0                  j3                  «        n¿t        |t        j                  j
                  j4                  «      r"d| _        | j8                  j;                  «        not        |t        j                  j
                  j<                  «      rA| j                  j                  |j                  «      }|r|j'                  dd«      ƒ d {  –—†  |dz  }|dkD  rd}t?        j@                  d«      ƒ d {  –—†  �Œ[7 �Œ7 �Œ˜7 �Œ@7 Œ87 Œ­w)Nr   Tr   é   é
   )!r&   Ú
next_eventÚ
isinstanceÚaioquicÚquicÚeventsÚStreamDataReceivedr'   Ú_h3_connÚhandle_eventÚh3ÚHeadersReceivedÚ_streamsr+   r   Ú_headersÚheadersÚ	_trailersÚstream_endedr>   ÚDataReceivedr9   Ú
end_streamÚHandshakeCompletedr[   rv   ÚConnectionTerminatedrl   rY   rA   ÚStreamResetr   Úsleep)r   ÚcountÚeventÚ	h3_eventsÚh3_eventÚstreams         r   rt   z!TrioQuicConnection._handle_events†   sŒ  è ø€ ØˆØØ×$Ñ$×/Ñ/Ó1ˆEØˆ}ØÜ˜%¤§¡×!4Ñ!4×!GÑ!GÕHØ—:‘:•<ØŸ=™=Ð4Ð4Ð4Ø $§¡× :Ñ :¸5Ó A�IÜ$-˜Ü% h´·
±
×0AÑ0A×0QÑ0QÔRØ%)§]¡]×%6Ñ%6°u·±Ó%G˜FÚ%Ø#)§?¡?Ð#:Ø6>×6FÑ6F F¥OØ%+×%5Ñ%5Ð%=Ø7?×7GÑ7G FÔ$4Ø#+×#8Ó#8Ø*0×*;Ñ*;¸CÀÓ*F×$FÑ$FÜ'¨´'·*±*×2CÑ2C×2PÑ2PÕQØ%)§]¡]×%6Ñ%6°u·±Ó%G˜FÛ%Ø&,×&7Ñ&7Ø$,§M¡M°8×3HÑ3Hó'"÷ !"ò !"ò %.ð" "Ÿ]™]×.Ñ.¨u¯©Ó?�FÚØ$×/Ñ/°·
±
¸E×<LÑ<LÓM×MÒMÜ˜E¤7§<¡<×#6Ñ#6×#IÑ#IÔJØ×(Ñ(×,Ñ,Õ.Ü˜E¤7§<¡<×#6Ñ#6×#KÑ#KÔLØ!�”
Ø—‘×"Ñ"Õ$Ü˜E¤7§<¡<×#6Ñ#6×#BÑ#BÔCØŸ™×*Ñ*¨5¯?©?Ó;�ÙØ ×+Ñ+¨C°Ó6×6Ð6Ø�Q‰JˆEØ�rŠzà�Ü—j‘j “m×#Ð#ñS ð" %Gùð!"ùð Nùð 7øð
 $úsu   ‚C%M.Ã(AM.Ä0M.ÅM!Å3M.Å:'M.Æ#)M.ÇM$ÇAM.È'M'È(D	M.Ì1M*Ì2(M.ÍM,ÍM.Í$M.Í'M.Í*M.Í,M.c              ƒ   ó¢   K  — | j                   j                  |||«       d| _        | j                  �| j                  j	                  «        y y ­w)NT)r&   Úsend_stream_datar^   r]   Úcancel)r   r˜   r9   r8   s       r   r5   zTrioQuicConnection.write³   sI   è ø€ Ø×Ñ×)Ñ)¨&°$¸Ô?Ø!ˆÔØ×ÑÐ)Ø×Ñ×%Ñ%Õ'ð *ùs   ‚AAc              ƒ   ó  K  — | j                   ry t        j                  «       4 ƒd {  –—† }|j                  | j                  «       d d d «      ƒd {  –—†  | j
                  j                  «        y 7 ŒJ7 Œ!# 1 ƒd {  –—†7  sw Y   Œ1xY w­wr   )Ú_closedr   Úopen_nurseryÚ
start_soonr{   r\   rv   )r   Únurserys     r   ÚrunzTrioQuicConnection.run¹   s^   è ø€ Ø�<Š<ØÜ×$Ñ$×&Ô&¨'Ø×Ñ˜tŸ|™|Ô,÷ '×&à�‰×ÑÕð 'øÐ&ø×&×&Ñ&üsD   ‚&B¨A3©B¬A7ÁBÁA5Á BÁ5BÁ7B	Á=B Á>B	ÂBc              ƒ   óŽ  K  — |€t        d «      }nt        j                  |«      }|5  | j                  j	                  «       ƒ d {  –—†  | j
                  rt        ‚| j                  j                  d«      }t        | |«      }|| j                  |<   |cd d d «       S 7 ŒW# 1 sw Y   t        j                  j                  ‚xY w­wrH   )r   r   r%   r[   r   rl   r   r&   Úget_next_available_stream_idr
   r‰   r,   r-   r.   )r   r/   r0   r   r˜   s        r   Úmake_streamzTrioQuicConnection.make_streamÀ   s¢   è ø€ Øˆ?Ü! $Ó'‰Gä×(Ñ(¨Ó1ˆGÚØ×*Ñ*×/Ñ/Ó1×1Ð1Ø�zŠzÜ#Ð#Ø×(Ñ(×EÑEÀeÓLˆIÜ# D¨)Ó4ˆFØ'-ˆD�M‰M˜)Ñ$Ø÷ ‰WØ1ø÷ ô �m‰m×#Ñ#Ð#üs/   ‚&C¨B ÁBÁAB Â
CÂB Â CÂ% Cc              ƒ   óŽ  K  — | j                   s³| j                  �6| j                  j                  | j                  d   | j                  d   «       d| _         | j                  j                  «        d| _        | j                  �| j                  j                  «        | j                  j                  «       ƒ d {  –—†  y y 7 Œ­w)Nr   r}   T)r�   Ú_managerÚclosedrk   r&   rA   r^   r]   r›   r\   r   r!   s    r   rA   zTrioQuicConnection.closeÏ   sš   è ø€ Ø�|Š|Ø�}‰}Ð(Ø—‘×$Ñ$ T§Z¡Z°¡]°D·J±J¸q±MÔBØˆDŒLØ×Ñ×"Ñ"Ô$Ø!%ˆDÔØ×!Ñ!Ð-Ø×"Ñ"×)Ñ)Ô+Ø—.‘.×%Ñ%Ó'×'Ñ'ð ð (ús   ‚B:CÂ<CÂ=Cr   rM   )rN   rO   rP   r   r{   rt   r5   r¡   r¤   rA   rQ   rR   s   @r   rT   rT   X   s(   ø„ õ#ò#+òJ+$óZ(òó$ö	(r   rT   c                   óR   ‡ — e Zd Zdej                  ddfˆ fd„	Z	 dd„Zd„ Zd„ Zˆ xZ	S )ÚTrioQuicManagerNFc                 óB   •— t         ‰| �  ||t        ||«       || _        y r   )r   r   rT   Ú_nursery)r   r    ÚconfÚverify_modeÚserver_namer‡   r   s         €r   r   zTrioQuicManager.__init__Ü   s"   ø€ ô 	‰Ñ˜˜{Ô,>ÀÈRÔPØˆ�r   c                 ó„   — | j                  |||||«      \  }}|r%| j                  j                  |j                  «       |S r   )Ú_connectr«   rŸ   r¡   )r   r_   r`   ra   rb   Úwant_session_ticketr   Ústarts           r   rj   zTrioQuicManager.connectç   sD   € ð #Ÿm™mØ�T˜6 ;Ð0Có
Ñˆ�Uñ Ø�M‰M×$Ñ$ Z§^¡^Ô4ØÐr   c              ƒ   ó   K  — | S ­wr   rC   r!   s    r   rD   zTrioQuicManager.__aenter__ñ   rE   rF   c              ƒ   ó”   K  — t        | j                  j                  «       «      }|D ]  }|j                  «       ƒ d {  –—†  Œ y7 Œ­wrH   )ÚlistÚ_connectionsÚvaluesrA   )r   rI   rJ   rK   Úconnectionsr   s         r   rL   zTrioQuicManager.__aexit__ô   sE   è ø€ ô ˜4×,Ñ,×3Ñ3Ó5Ó6ˆÛ%ˆJØ×"Ñ"Ó$×$Ñ$ð &àð %ús   ‚<A¾A¿A)iU  Nr   T)
rN   rO   rP   ÚsslÚCERT_REQUIREDr   rj   rD   rL   rQ   rR   s   @r   r©   r©   Û   s2   ø„ ð Ø×%Ñ%ØØõ	 ð RVóòör   r©   )rV   r¹   r)   rr   Úaioquic.h3.connectionr�   Úaioquic.h3.eventsÚaioquic.quic.configurationÚaioquic.quic.connectionÚaioquic.quic.eventsr   Údns.exceptionr,   Údns.inetÚdns._asyncbackendr   Údns.quic._commonr   r   r   r   r   r
   rT   r©   rC   r   r   Ú<module>rÄ      sb   ðó Û 
Û Û ã Û Û !Û Û Û ã Û Ý )÷õ ô:�^ô :ôz@(Ð,ô @(ôFÐ&õ r   