Ë
    ¶�/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Zd dlmZmZmZmZmZ ej                  Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)	é    N)ÚQUIC_MAX_DATAGRAMÚBaseQuicConnectionÚBaseQuicManagerÚ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 )ÚSyncQuicStreamc                 óŠ   •— t         ‰| �  ||«       t        j                  «       | _        t        j
                  «       | _        y ©N)ÚsuperÚ__init__Ú	threadingÚ	ConditionÚ_wake_upÚLockÚ_lock)ÚselfÚ
connectionÚ	stream_idÚ	__class__s      €úPC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\dns/quic/_sync.pyr   zSyncQuicStream.__init__    s0   ø€ Ü‰Ñ˜ YÔ/Ü!×+Ñ+Ó-ˆŒÜ—^‘^Ó%ˆ�
ó    c                 ó~  — 	 | j                  |«      }| j                  5  | j                  j                  |«      r
	 d d d «       y || _        d d d «       | j
                  5  | j
                  j                  |«      st        j                  j                  ‚	 d d d «       d| _        Œ¥# 1 sw Y   Œ\xY w# 1 sw Y   ŒxY w)Nr   )
Ú_timeout_from_expirationr   Ú_bufferÚhaveÚ
_expectingr   ÚwaitÚdnsÚ	exceptionÚTimeout)r   ÚamountÚ
expirationÚtimeouts       r   Úwait_forzSyncQuicStream.wait_for%   s—   € ØØ×3Ñ3°JÓ?ˆGØ—“Ø—<‘<×$Ñ$ VÔ,Ø÷ �ð #)�”÷ ð —“Ø—}‘}×)Ñ)¨'Ô2ÜŸ-™-×/Ñ/Ð/ð 3÷ ð  ˆDŒOð ç�ú÷ �ús   ŸB'ÁB'Á 6B3Â'B0Â3B<c                 ób  — 	 | j                  |«      }| j                  5  | j                  j                  «       r
	 d d d «       y 	 d d d «       | j                  5  | j                  j                  |«      st        j                  j                  ‚	 d d d «       Œ—# 1 sw Y   ŒUxY w# 1 sw Y   ŒxY wr   )	r   r   r   Úseen_endr   r   r   r    r!   )r   r#   r$   s      r   Úwait_for_endzSyncQuicStream.wait_for_end1   s†   € ØØ×3Ñ3°JÓ?ˆGØ—“Ø—<‘<×(Ñ(Ô*Ø÷ �Ø*÷ ð —“Ø—}‘}×)Ñ)¨'Ô2ÜŸ-™-×/Ñ/Ð/ð 3÷ ð ç�ú÷ �ús   ŸBÁ6B%ÂB"Â%B.c                 óX  — | j                  |«      }| j                  j                  «       rA| j                  |«       | j                  5  | j
                  j                  «       cd d d «       S | j                  d|«       | j                  5  t        j                  d| j
                  j                  d«      «      \  }d d d «       | j                  |«       | j                  5  | j
                  j                  |«      cd d d «       S # 1 sw Y   y xY w# 1 sw Y   ŒXxY w# 1 sw Y   y xY w)Né   z!H)Ú_expiration_from_timeoutÚ_connectionÚis_h3r(   r   r   Úget_allr%   ÚstructÚunpackÚget)r   r$   r#   Úsizes       r   ÚreceivezSyncQuicStream.receive;   sÓ   € Ø×2Ñ2°7Ó;ˆ
Ø×Ñ×!Ñ!Ô#Ø×Ñ˜jÔ)Ø—“Ø—|‘|×+Ñ+Ó-÷ ‘ð �M‰M˜!˜ZÔ(Ø—“Ü Ÿ-™-¨¨d¯l©l×.>Ñ.>¸qÓ.AÓB‘�÷ à�M‰M˜$ 
Ô+Ø—“Ø—|‘|×'Ñ'¨Ó-÷ ‘÷ �ú÷ �ú÷ �ús$   Á	DÂ2DÃ#D ÄDÄDÄ D)c                 ót   — | j                  |«      }| j                  j                  | j                  ||«       y r   )Ú_encapsulater,   ÚwriteÚ
_stream_id)r   ÚdatagramÚis_endÚdatas       r   ÚsendzSyncQuicStream.sendI   s.   € Ø× Ñ  Ó*ˆØ×Ñ×Ñ˜tŸ™°°fÕ=r   c                 ó    — | j                  ||«      r0| j                  5  | j                  j                  «        d d d «       y y # 1 sw Y   y xY wr   )Ú_common_add_inputr   Únotify)r   r:   r9   s      r   Ú
_add_inputzSyncQuicStream._add_inputM   s;   € Ø×!Ñ! $¨Ô/Ø—“Ø—‘×$Ñ$Ô&÷ �ð 0ß�ús   ŸAÁAc                 óf   — | j                   5  | j                  «        d d d «       y # 1 sw Y   y xY wr   )r   Ú_close©r   s    r   ÚclosezSyncQuicStream.closeR   s   € Ø�Z‹ZØ�K‰KŒM÷ �Z‰Zús   �'§0c                 ó   — | S r   © rB   s    r   Ú	__enter__zSyncQuicStream.__enter__V   ó   € Øˆr   c                 óš   — | j                  «        | j                  5  | j                  j                  «        d d d «       y# 1 sw Y   yxY w©NF)rC   r   r>   )r   Úexc_typeÚexc_valÚexc_tbs       r   Ú__exit__zSyncQuicStream.__exit__Y   s3   € Ø�
‰
ŒØ�]‹]Ø�M‰M× Ñ Ô"÷ à÷ àús   �AÁA
r   ©F)Ú__name__Ú
__module__Ú__qualname__r   r%   r(   r3   r;   r?   rC   rF   rM   Ú__classcell__©r   s   @r   r	   r	      s0   ø„ ô&ò

 ò0ó.ó>ò'ò
òör   r	   c                   ót   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zdd„Zdˆ fd„	Z	dˆ fd„	Z
d	„ Zdd
„Zˆ fd„Zd„ Zˆ xZS )ÚSyncQuicConnectionc                 óð  •— t         ‰| �  ||||||«       t        | j                  t        j
                  d«      | _        | j                  �N	 | j                  j                  t        j                  j                  | j                  | j                  «      «       | j                  j                  | j                  «       t	        j                   «       \  | _        | _        | j$                  j'                  d«       | j                  j'                  d«       t)        j*                  «       | _        d | _        t)        j0                  «       | _        y # t        $ r | j                  j                  «        ‚ w xY w)Nr   F)r   r   Úsocket_factoryÚ_afÚsocketÚ
SOCK_DGRAMÚ_socketÚ_sourceÚbindr   ÚinetÚlow_level_address_tupleÚ	ExceptionrC   ÚconnectÚ_peerÚ
socketpairÚ_send_wakeupÚ_receive_wakeupÚsetblockingr   ÚEventÚ_handshake_completeÚ_worker_threadr   r   )r   r   ÚaddressÚportÚsourceÚsource_portÚmanagerr   s          €r   r   zSyncQuicConnection.__init__a   s  ø€ Ü‰Ñ˜ W¨d°F¸KÈÔQÜ% d§h¡h´×0AÑ0AÀ1ÓEˆŒØ�<‰<Ð#ðØ—‘×!Ñ!Ü—H‘H×4Ñ4°T·\±\À4Ç8Á8ÓLôð 	�‰×Ñ˜TŸZ™ZÔ(Ü4:×4EÑ4EÓ4GÑ1ˆÔ	˜DÔ0Ø×Ñ×(Ñ(¨Ô/Ø�‰× Ñ  Ô'Ü#,§?¡?Ó#4ˆÔ Ø"ˆÔÜ—^‘^Ó%ˆ�
øô ò Ø—‘×"Ñ"Ô$Øðús   ÁAE Å%E5c                 ó<  — d}|dk  rz|dz  }	 | j                   j                  t        «      }| j                  5  | j
                  j                  || j                  t        j                  «       «       d d d «       |dk  rŒyy y # t        $ r Y y w xY w# 1 sw Y   Œ xY w)Nr   é
   é   )	r[   Úrecvr   ÚBlockingIOErrorr   r,   Úreceive_datagramrb   Útime)r   Úcountr8   s      r   Ú_readzSyncQuicConnection._readt   s„   € ØˆØ�bŠjØ�Q‰JˆEðØŸ<™<×,Ñ,Ô->Ó?�ð —“Ø× Ñ ×1Ñ1°(¸D¿J¹JÌÏ	É	ËÔT÷ ð �b�jøô #ò Ùðúç�ús   ŽB ¹:BÂ	BÂBÂBc                 ó\   — 	 	 | j                   j                  d«       Œ# t        $ r Y y w xY w)Né    )re   rr   rs   rB   s    r   Ú_drain_wakeupz SyncQuicConnection._drain_wakeup   s7   € ØðØ×$Ñ$×)Ñ)¨"Ô-ð øô #ò Ùðús   ƒ Ÿ	+ª+c                 ó   — 	 t        j                  «       5 }|j                  | j                  t         j                  | j
                  «       |j                  | j                  t         j                  | j                  «       | j                  sê| j                  d«      \  }}|j                  |«      }|D ]  \  }}|j                  «        Œ | j                  5  | j                  |«       d d d «       | j                  «        | j                  5  | j                  j!                  t#        j"                  «       «      }d d d «       D ]!  \  }}	 | j                  j%                  |«       Œ# | j                  sŒêd d d «       | j                  5  d| _        d d d «       | j                  j+                  «        | j,                  j/                  «        y # 1 sw Y   ŒçxY w# 1 sw Y   Œ¡xY w# t&        $ r Y Œ­w xY w# 1 sw Y   Œ�xY w# t(        $ r Y Œ�w xY w# 1 sw Y   Œ€xY w# | j                  5  d| _        d d d «       n# 1 sw Y   nxY w| j                  j+                  «        | j,                  j/                  «        w xY w)NFT)Ú	selectorsÚDefaultSelectorÚregisterr[   Ú
EVENT_READrw   re   rz   Ú_doneÚ_get_timer_valuesÚselectr:   r   Ú_handle_timerÚ_handle_eventsr,   Údatagrams_to_sendru   r;   rs   r`   rC   rh   Úset)	r   Úselr#   ÚintervalÚitemsÚkeyÚ_Ú	datagramsr8   s	            r   Ú_workerzSyncQuicConnection._worker†   sÖ  € ð	+Ü×*Ñ*Ô,°Ø—‘˜TŸ\™\¬9×+?Ñ+?ÀÇÁÔLØ—‘Ø×(Ñ(¬)×*>Ñ*>À×@RÑ@Rôð Ÿ*š*Ø-1×-CÑ-CÀEÓ-JÑ*�Z ØŸJ™J xÓ0�EÛ"'™˜˜QØŸ™�
ð #(àŸ›Ø×*Ñ*¨:Ô6÷ $à×'Ñ'Ô)ØŸ›Ø$(×$4Ñ$4×$FÑ$FÄtÇyÁyÃ{Ó$S˜	÷ $ã'0™˜ !ð!Ø ŸL™L×-Ñ-¨hÕ7ð (1ð Ÿ*›*÷ -ð4 —“Ø!�”
÷ à�L‰L×ÑÔ à×$Ñ$×(Ñ(Õ*÷) $˜ú÷ $˜ûô
  /ò !á ð!ú÷% -Ð,ûô* ò 	ñ ð	ú÷
 �û�—“Ø!�”
÷ —‘úà�L‰L×ÑÔ à×$Ñ$×(Ñ(Õ*ús³   ‚H –CG7ÃGÃ*$G7Ä.GÄ<G7ÅG(Å(G7Å7H ÆHÇG	ÇG7ÇG%	Ç!G7Ç(	G4Ç1G7Ç3G4Ç4G7Ç7H Ç<H È	HÈH ÈHÈH ÈHÈI=È+H<È3	I=È<IÉ<I=c                 óˆ  — 	 | j                   5  | j                  j                  «       }d d d «       €y t        |t        j
                  j                  j                  «      �r| j                  «       �r�| j                  €J ‚| j                  j                  |«      }|D �]\  }t        |t        j                  j                  j                  «      r˜| j                   5  | j                  j                  |j                  «      }d d d «       sŒo|j                   €|j"                  |_        n|j$                  €|j"                  |_        |j&                  sŒ·|j)                  dd«       ŒÊt        |t        j                  j                  j*                  «      sŒù| j                   5  | j                  j                  |j                  «      }d d d «       s�Œ7|j)                  |j,                  |j&                  «       �Œ_ �nu| j                   5  | j                  j                  |j                  «      }d d d «       �r8|j)                  |j,                  |j.                  «       �nt        |t        j
                  j                  j0                  «      r| j2                  j5                  «        nÇt        |t        j
                  j                  j6                  «      r| j                   5  d| _        d d d «       n|t        |t        j
                  j                  j:                  «      rN| j                   5  | j                  j                  |j                  «      }d d d «       r|j)                  dd«       �Œv# 1 sw Y   �ŒQxY w# 1 sw Y   �Œ„xY w# 1 sw Y   �ŒÊxY w# 1 sw Y   �ŒnxY w# 1 sw Y   Œ?xY w# 1 sw Y   Œ_xY w)NTr   )r   r,   Ú
next_eventÚ
isinstanceÚaioquicÚquicÚeventsÚStreamDataReceivedr-   Ú_h3_connÚhandle_eventÚh3ÚHeadersReceivedÚ_streamsr1   r   Ú_headersÚheadersÚ	_trailersÚstream_endedr?   ÚDataReceivedr:   Ú
end_streamÚHandshakeCompletedrh   r†   ÚConnectionTerminatedr€   ÚStreamReset)r   ÚeventÚ	h3_eventsÚh3_eventÚstreams        r   r„   z!SyncQuicConnection._handle_events¨   s‡  € ØØ—“Ø×(Ñ(×3Ñ3Ó5�÷ àˆ}ØÜ˜%¤§¡×!4Ñ!4×!GÑ!GÕHØ—:‘:•<ØŸ=™=Ð4Ð4Ð4Ø $§¡× :Ñ :¸5Ó A�IÜ$-˜Ü% h´·
±
×0AÑ0A×0QÑ0QÔRØ!%§£Ø)-¯©×):Ñ):¸5¿?¹?Ó)K ÷ ",â%Ø#)§?¡?Ð#:Ø6>×6FÑ6F F¥OØ%+×%5Ñ%5Ð%=Ø7?×7GÑ7G FÔ$4Ø#+×#8Ó#8Ø$*×$5Ñ$5°c¸4Õ$@Ü'¨´'·*±*×2CÑ2C×2PÑ2PÕQØ!%§£Ø)-¯©×):Ñ):¸5¿?¹?Ó)K ÷ ",ã%Ø &× 1Ñ 1°(·-±-À×AVÑAVÖ Wò %.ð" Ÿ›Ø!%§¡×!2Ñ!2°5·?±?Ó!C˜÷ $âØ×)Ñ)¨%¯*©*°e×6FÑ6FÖGÜ˜E¤7§<¡<×#6Ñ#6×#IÑ#IÔJØ×(Ñ(×,Ñ,Õ.Ü˜E¤7§<¡<×#6Ñ#6×#KÑ#KÔLØ—Z“ZØ!%�D”J÷  �Zä˜E¤7§<¡<×#6Ñ#6×#BÑ#BÔCØ—Z“ZØ!Ÿ]™]×.Ñ.¨u¯©Ó?�F÷  áØ×%Ñ% c¨4Ô0ñO ß‘ú÷ ",¡ú÷ ",¡ú÷
 $™ú÷  �Zú÷  �ZúsG   ŽM8Ã&NÆ$&NÈ&NË)N,Ì4&N8Í8NÎN	ÎN	ÎN)Î,N5Î8Oc                 ó¶   — | j                   5  | j                  j                  |||«       d d d «       | j                  j	                  d«       y # 1 sw Y   Œ%xY w©Nó   )r   r,   Úsend_stream_datard   r;   )r   r¦   r:   r9   s       r   r6   zSyncQuicConnection.writeÒ   sB   € Ø�Z‹ZØ×Ñ×-Ñ-¨f°d¸FÔC÷ à×Ñ×Ñ˜wÕ'÷ ˆZús   �AÁAc                 ó¦   •— | j                   5  t        ‰| �	  |||«       d d d «       |r| j                  j	                  d«       y y # 1 sw Y   Œ(xY wr¨   )r   r   Úsend_headersrd   r;   )r   r   r›   r9   r   s       €r   r¬   zSyncQuicConnection.send_headers×   sD   ø€ Ø�Z‹ZÜ‰GÑ  ¨G°VÔ<÷ áØ×Ñ×"Ñ" 7Õ+ð ÷ ˆZúó   ŽAÁAc                 ó¦   •— | j                   5  t        ‰| �	  |||«       d d d «       |r| j                  j	                  d«       y y # 1 sw Y   Œ(xY wr¨   )r   r   Ú	send_datard   r;   )r   r   r:   r9   r   s       €r   r¯   zSyncQuicConnection.send_dataÝ   sD   ø€ Ø�Z‹ZÜ‰GÑ˜i¨¨vÔ6÷ áØ×Ñ×"Ñ" 7Õ+ð ÷ ˆZúr­   c                 óœ   — | j                   ry t        j                  | j                  ¬«      | _        | j                  j                  «        y )N)Útarget)Ú_closedr   ÚThreadr�   ri   ÚstartrB   s    r   ÚrunzSyncQuicConnection.runã   s5   € Ø�<Š<ØÜ'×.Ñ.°d·l±lÔCˆÔØ×Ñ×!Ñ!Õ#r   c                 óD  — | j                   j                  |«      st        j                  j                  ‚| j
                  5  | j                  rt        ‚| j                  j                  d«      }t        | |«      }|| j                  |<   d d d «       |S # 1 sw Y   S xY wrI   )rh   r   r   r    r!   r   r€   r   r,   Úget_next_available_stream_idr	   r™   )r   r$   r   r¦   s       r   Úmake_streamzSyncQuicConnection.make_streamé   sƒ   € Ø×'Ñ'×,Ñ,¨WÔ5Ü—-‘-×'Ñ'Ð'Ø�Z‹ZØ�zŠzÜ#Ð#Ø×(Ñ(×EÑEÀeÓLˆIÜ# D¨)Ó4ˆFØ'-ˆD�M‰M˜)Ñ$÷ ð ˆ÷ ð ˆús   ÁA	BÂBc                 óf   •— | j                   5  t        ‰| �	  |«       d d d «       y # 1 sw Y   y xY wr   )r   r   Úclose_stream)r   r   r   s     €r   rº   zSyncQuicConnection.close_streamô   s!   ø€ Ø�Z‹ZÜ‰GÑ  Ô+÷ �Z‰Zús   Ž'§0c                 ó¼  — | j                   5  | j                  r
	 d d d «       y | j                  �6| j                  j                  | j                  d   | j                  d   «       d| _        | j
                  j                  «        | j                  j                  d«       d d d «       | j                  �| j                  j                  «        y y # 1 sw Y   Œ1xY w)Nr   rq   Tr©   )r   r²   Ú_managerÚclosedrb   r,   rC   rd   r;   ri   ÚjoinrB   s    r   rC   zSyncQuicConnection.closeø   s©   € Ø�Z‹ZØ�|Š|Ø÷ ˆZð �}‰}Ð(Ø—‘×$Ñ$ T§Z¡Z°¡]°D·J±J¸q±MÔBØˆDŒLØ×Ñ×"Ñ"Ô$Ø×Ñ×"Ñ" 7Ô+÷ ð ×ÑÐ*Ø×Ñ×$Ñ$Õ&ð +÷ ˆZús   �C¤A>CÃCrN   r   )rO   rP   rQ   r   rw   rz   r�   r„   r6   r¬   r¯   rµ   r¸   rº   rC   rR   rS   s   @r   rU   rU   `   sB   ø„ ô&ò&	Uòò +òD(1óT(õ
,õ,ò$ó	ô,ö
'r   rU   c                   óx   ‡ — e Zd Zdej                  ddfˆ fd„	Z	 	 	 	 	 d
d„Zˆ fd„Zˆ fd„Zˆ fd„Z	d„ Z
d	„ Zˆ xZS )ÚSyncQuicManagerNFc                 óf   •— t         ‰| �  ||t        ||«       t        j                  «       | _        y r   )r   r   rU   r   r   r   )r   ÚconfÚverify_modeÚserver_namer—   r   s        €r   r   zSyncQuicManager.__init__  s)   ø€ ô 	‰Ñ˜˜{Ô,>ÀÈRÔPÜ—^‘^Ó%ˆ�
r   c           	      ó    — | j                   5  | j                  ||||||«      \  }}|r|j                  «        |cd d d «       S # 1 sw Y   y xY wr   )r   Ú_connectrµ   )	r   rj   rk   rl   rm   Úwant_session_ticketÚ
want_tokenr   r´   s	            r   ra   zSyncQuicManager.connect  sH   € ð �Z‹ZØ"&§-¡-Ø˜˜v {Ð4GÈó#ÑˆZ˜ñ Ø—‘Ô Ø÷ �ZŠZús   �-AÁAc                 óh   •— | j                   5  t        ‰| �	  ||«       d d d «       y # 1 sw Y   y xY wr   )r   r   r½   )r   rj   rk   r   s      €r   r½   zSyncQuicManager.closed  s"   ø€ Ø�Z‹ZÜ‰G‰N˜7 DÔ)÷ �Z‰Zús   Ž(¨1c                 ój   •— | j                   5  t        ‰| �	  |||«       d d d «       y # 1 sw Y   y xY wr   )r   r   Úsave_session_ticket)r   rj   rk   Úticketr   s       €r   rË   z#SyncQuicManager.save_session_ticket!  s%   ø€ Ø�Z‹ZÜ‰GÑ'¨°°vÔ>÷ �Z‰Zúó   Ž)©2c                 ój   •— | j                   5  t        ‰| �	  |||«       d d d «       y # 1 sw Y   y xY wr   )r   r   Ú
save_token)r   rj   rk   Útokenr   s       €r   rÏ   zSyncQuicManager.save_token%  s%   ø€ Ø�Z‹ZÜ‰GÑ˜w¨¨eÔ4÷ �Z‰ZúrÍ   c                 ó   — | S r   rE   rB   s    r   rF   zSyncQuicManager.__enter__)  rG   r   c                 óx   — t        | j                  j                  «       «      }|D ]  }|j                  «        Œ yrI   )ÚlistÚ_connectionsÚvaluesrC   )r   rJ   rK   rL   Úconnectionsr   s         r   rM   zSyncQuicManager.__exit__,  s6   € ô ˜4×,Ñ,×3Ñ3Ó5Ó6ˆÛ%ˆJØ×ÑÕð &àr   )iU  Nr   TT)rO   rP   rQ   ÚsslÚCERT_REQUIREDr   ra   r½   rË   rÏ   rF   rM   rR   rS   s   @r   rÀ   rÀ     sF   ø„ à S×%6Ñ%6ÀDÈUõ&ð ØØØ Øóô"*ô?ô5òör   rÀ   )r|   rY   r×   r/   r   ru   Úaioquic.h3.connectionr‘   Úaioquic.h3.eventsÚaioquic.quic.configurationÚaioquic.quic.connectionÚaioquic.quic.eventsÚdns.exceptionr   Údns.inetÚdns.quic._commonr   r   r   r   r   rW   r	   rU   rÀ   rE   r   r   Ú<module>rá      sl   ðó Û Û 
Û Û Û ã Û Û !Û Û ã Û ÷õ ð —‘€ô>�^ô >ôBb'Ð+ô b'ôJ-�oõ -r   