Ë
    ¶�/jO+  ã                   ó  — 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
Zd dlZd dlZd dlZd dlZdZdZedz  Z G d„ de«      Z G d„ d	«      Z G d
„ d«      Z G d„ d«      Z G d„ de«      Z G d„ d«      Z G d„ de«      Zy)é    N)ÚAnyi   é   é   c                   ó   — e Zd Zy)ÚUnexpectedEOFN)Ú__name__Ú
__module__Ú__qualname__© ó    úRC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\dns/quic/_common.pyr   r      s   „ Ør   r   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚBufferc                 ó    — d| _         d| _        y )Nr   F)Ú_bufferÚ	_seen_end©Úselfs    r   Ú__init__zBuffer.__init__   s   € ØˆŒØˆ�r   c                 ó\   — | j                   ry | xj                  |z  c_        |rd| _         y y )NT)r   r   ©r   ÚdataÚis_ends      r   Úputz
Buffer.put#   s)   € Ø�>Š>ØØ�Š˜Ñ�ÙØ!ˆD�Nð r   c                 óZ   — t        | j                  «      |k\  ry| j                  rt        ‚y)NTF)Úlenr   r   r   )r   Úamounts     r   ÚhavezBuffer.have*   s&   € Üˆt�|‰|Ó Ò&ØØ�>Š>ÜÐØr   c                 ó   — | j                   S ©N)r   r   s    r   Úseen_endzBuffer.seen_end1   ó   € Ø�~‰~Ðr   c                 ór   — | j                  |«      sJ ‚| j                  d | }| j                  |d  | _        |S r    )r   r   )r   r   r   s      r   Úgetz
Buffer.get4   s;   € Ø�y‰y˜Ô Ð Ð Ø�|‰|˜G˜VÐ$ˆØ—|‘| F GÐ,ˆŒØˆr   c                 óP   — | j                  «       sJ ‚| j                  }d| _        |S )Nr   )r!   r   )r   r   s     r   Úget_allzBuffer.get_all:   s%   € Ø�}‰}ŒÐˆØ�|‰|ˆØˆŒØˆr   N)	r   r	   r
   r   r   r   r!   r$   r&   r   r   r   r   r      s    „ òò"òòòór   r   c                   óJ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Z	d„ Z
d	„ Zd
„ Zy)ÚBaseQuicStreamc                 óh   — || _         || _        t        «       | _        d| _        d | _        d | _        y ©Nr   )Ú_connectionÚ
_stream_idr   r   Ú
_expectingÚ_headersÚ	_trailers)r   Ú
connectionÚ	stream_ids      r   r   zBaseQuicStream.__init__B   s/   € Ø%ˆÔØ#ˆŒÜ“xˆŒØˆŒØˆŒØˆ�r   c                 ó   — | j                   S r    )r,   r   s    r   ÚidzBaseQuicStream.idJ   s   € Ø�‰Ðr   c                 ó   — | j                   S r    )r.   r   s    r   ÚheaderszBaseQuicStream.headersM   s   € Ø�}‰}Ðr   c                 ó   — | j                   S r    )r/   r   s    r   ÚtrailerszBaseQuicStream.trailersP   r"   r   c                 ó@   — |�t        j                   «       |z   }|S d }|S r    )Útime)r   ÚtimeoutÚ
expirations      r   Ú_expiration_from_timeoutz'BaseQuicStream._expiration_from_timeoutS   s-   € ØÐÜŸ™› wÑ.ˆJð Ðð ˆJØÐr   c                 óT   — |�#t        |t        j                  «       z
  d«      }|S d }|S )Ng        )Úmaxr9   )r   r;   r:   s      r   Ú_timeout_from_expirationz'BaseQuicStream._timeout_from_expirationZ   s2   € ØÐ!Ü˜*¤t§y¡y£{Ñ2°CÓ8ˆGð ˆð ˆGØˆr   c           	      ó²  — | j                   j                  «       st        d«      ‚t        j                  j                  |«      }|j                  j                  «       }|rd}n,d}|dt        j                  |«      j                  d«      z   z  }d|fd|j                  j                  «       fd|j                  j                  «       fd	|fd
g}|r5|j                  ddt        t        |«      «      j                  «       fg«       | j                   j!                  | j"                  || «       |r(| j                   j%                  | j"                  |d«       y y )Nz%cannot send H3 to a non-H3 connections   POSTs   GETs   ?dns=ó   =s   :methods   :schemes
   :authoritys   :path)s   acceptó   application/dns-message)s   content-typerB   s   content-lengthT)r+   Úis_h3ÚSyntaxErrorÚurllibÚparseÚurlparseÚpathÚencodeÚbase64Úurlsafe_b64encodeÚrstripÚschemeÚnetlocÚextendÚstrr   Úsend_headersr,   Ú	send_data)r   ÚurlÚdatagramÚpostÚ	url_partsrH   Úmethodr5   s           r   Úsend_h3zBaseQuicStream.send_h3g   s7  € Ø×Ñ×%Ñ%Ô'ÜÐEÓFÐFÜ—L‘L×)Ñ)¨#Ó.ˆ	Ø�~‰~×$Ñ$Ó&ˆÙØ‰FàˆFØ�Hœv×7Ñ7¸ÓA×HÑHÈÓNÑNÑNˆDà˜Ð Ø˜×)Ñ)×0Ñ0Ó2Ð3Ø˜I×,Ñ,×3Ñ3Ó5Ð6Ø�tÐØ3ð
ˆñ Ø�N‰NàAØ&¬¬C°«MÓ(:×(AÑ(AÓ(CÐDðôð 	×Ñ×%Ñ% d§o¡o°wÀDÀÔIÙØ×Ñ×&Ñ& t§¡¸À$ÕGð r   c                 ó‚   — | j                   j                  «       r|S t        |«      }t        j                  d|«      |z   S )Nz!H)r+   rC   r   ÚstructÚpack)r   rT   Úls      r   Ú_encapsulatezBaseQuicStream._encapsulateƒ   s8   € Ø×Ñ×!Ñ!Ô#ØˆOÜ�‹MˆÜ�{‰{˜4 Ó# hÑ.Ð.r   c                 óö   — | j                   j                  ||«       	 | j                  dkD  xr% | j                   j                  | j                  «      xs | j                   j                  S # t
        $ r Y yw xY w)Nr   T)r   r   r-   r   r!   r   r   s      r   Ú_common_add_inputz BaseQuicStream._common_add_input‰   sj   € Ø�‰×Ñ˜˜vÔ&ð	à—‘ !Ñ#ÒJ¨¯©×(9Ñ(9¸$¿/¹/Ó(Jò'à—‘×&Ñ&ð'øô ò 	Ùð	ús   žAA, Á,	A8Á7A8c                 ó†   — | j                   j                  | j                  «       | j                  j	                  dd«       y )Nr   T)r+   Úclose_streamr,   r   r   r   s    r   Ú_closezBaseQuicStream._close’   s.   € Ø×Ñ×%Ñ% d§o¡oÔ6Ø�‰×Ñ˜˜dÕ#r   N©T)r   r	   r
   r   r3   r5   r7   r<   r?   rX   r]   r_   rb   r   r   r   r(   r(   A   s5   „ òòòòòòóHò8/òó$r   r(   c                   óD   — e Zd Z	 	 	 d	d„Zd„ Zd„ Zd
d„Zd
d„Zdd„Zd„ Z	y)ÚBaseQuicConnectionNc                 óL  — d| _         || _        || _        || _        d| _        || _        i | _        |�@|j                  «       r0t        j                  j                  j                  |d«      | _        nd | _        t        j                  j                  |«      | _        t        j                  j#                  ||f«      | _        |€K|dk7  rF| j                   t&        j(                  k(  rd}n&| j                   t&        j*                  k(  rd}nt,        ‚|r
||f| _        y d | _        y )NFr   z0.0.0.0z::)Ú_doner+   Ú_addressÚ_portÚ_closedÚ_managerÚ_streamsrC   ÚaioquicÚh3r0   ÚH3ConnectionÚ_h3_connÚdnsÚinetÚaf_for_addressÚ_afÚlow_level_address_tupleÚ_peerÚsocketÚAF_INETÚAF_INET6ÚNotImplementedErrorÚ_source)r   r0   ÚaddressÚportÚsourceÚsource_portÚmanagers          r   r   zBaseQuicConnection.__init__˜   së   € ð ˆŒ
Ø%ˆÔØˆŒØˆŒ
ØˆŒØˆŒØˆŒØÐ 7§=¡=¤?Ü#ŸJ™J×1Ñ1×>Ñ>¸zÈ5ÓQˆD�Mà ˆDŒMÜ—8‘8×*Ñ*¨7Ó3ˆŒÜ—X‘X×5Ñ5°wÀ°oÓFˆŒ
Øˆ>˜k¨QÒ.Ø�x‰xœ6Ÿ>™>Ò)Ø"‘Ø—‘œVŸ_™_Ò,Ø‘ä)Ð)ÙØ" KÐ0ˆD�LàˆD�Lr   c                 ó   — | j                   d uS r    )rp   r   s    r   rC   zBaseQuicConnection.is_h3º   s   € Ø�}‰} DÐ(Ð(r   c                 ó   — | j                   |= y r    )rl   )r   r1   s     r   ra   zBaseQuicConnection.close_stream½   s   € Ø�M‰M˜)Ñ$r   c                 óZ   — | j                   €J ‚| j                   j                  |||«       y r    )rp   rQ   )r   r1   r5   r   s       r   rQ   zBaseQuicConnection.send_headersÀ   s(   € Ø�}‰}Ð(Ð(Ð(Ø�‰×"Ñ" 9¨g°vÕ>r   c                 óZ   — | j                   €J ‚| j                   j                  |||«       y r    )rp   rR   )r   r1   r   r   s       r   rR   zBaseQuicConnection.send_dataÄ   s(   € Ø�}‰}Ð(Ð(Ð(Ø�‰×Ñ 	¨4°Õ8r   c                 óÆ   — t        j                   «       }| j                  j                  «       }|€|dz   }t        ||z
  d«      }| j                  r|rt        |d«      }||fS )Ni  r   gš™™™™™©?)r9   r+   Ú	get_timerr>   rj   Úmin)r   Úclosed_is_specialÚnowr;   Úintervals        r   Ú_get_timer_valuesz$BaseQuicConnection._get_timer_valuesÈ   sd   € Ü�i‰i‹kˆØ×%Ñ%×/Ñ/Ó1ˆ
ØÐØ˜t™ˆJÜ�z CÑ'¨Ó+ˆØ�<Š<Ñ-ô ˜8 TÓ*ˆHØ˜HÐ%Ð%r   c                 ón   — t        j                   «       }||k  r| j                  j                  |«       y y r    )r9   r+   Úhandle_timer)r   r;   r‰   s      r   Ú_handle_timerz BaseQuicConnection._handle_timerÕ   s.   € Ü�i‰i‹kˆØ˜ÒØ×Ñ×)Ñ)¨#Õ.ð r   )Nr   N)Frc   )
r   r	   r
   r   rC   ra   rQ   rR   r‹   rŽ   r   r   r   re   re   —   s1   „ ð ØØó  òD)ò%ó?ó9ó&ó/r   re   c                   ó$   — e Zd Zddedz  defd„Zy)ÚAsyncQuicConnectionNr:   Úreturnc              ƒ   ó   K  — y ­wr    r   )r   r:   s     r   Úmake_streamzAsyncQuicConnection.make_streamÜ   s	   è ø€ Øùs   ‚r    )r   r	   r
   Úfloatr   r“   r   r   r   r�   r�   Û   s   „ ñ¨°©ð Àô r   r�   c                   ó@   — e Zd Z	 dd„Z	 	 	 	 	 d	d„Zd„ Zd„ Zd„ Zd„ Zy)
ÚBaseQuicManagerNc                 ób  — i | _         || _        i | _        i | _        || _        |€ƒd }t        |t        «      r|}d}|rdg}nddg}t        j                  j                  j                  |||¬«      }|�5t        j                  j                  |«      \  }}	|j                  ||	¬«       || _        y )NTrn   Údoqzdoq-i03)Úalpn_protocolsÚverify_modeÚserver_name)ÚcafileÚcapath)Ú_connectionsÚ_connection_factoryÚ_session_ticketsÚ_tokensÚ_h3Ú
isinstancerP   rm   ÚquicÚconfigurationÚQuicConfigurationrq   Ú	_tls_utilÚ#convert_verify_to_cafile_and_capathÚload_verify_locationsÚ_conf)
r   Úconfrš   Úconnection_factoryr›   rn   Úverify_pathr™   rœ   r�   s
             r   r   zBaseQuicManager.__init__á   sÄ   € ð ˆÔØ#5ˆÔ Ø "ˆÔØˆŒØˆŒØˆ<ØˆKÜ˜+¤sÔ+Ø)�Ø"�ÙØ"& ‘à"'¨Ð!3�Ü—<‘<×-Ñ-×?Ñ?Ø-Ø'Ø'ð @ó ˆDð
 Ð&Ü!$§¡×!RÑ!RØó"‘�˜ð ×*Ñ*°&ÀÐ*ÔHØˆ�
r   c                 óV  — | j                   j                  ||f«      }|�|dfS | j                  }|r\	 | j                  j	                  ||f«      }	t        j
                  |«      }|	|_        t        j                  | j                  ||«      }
nd }
|r\	 | j                  j	                  ||f«      }t        j
                  |«      }||_        t        j                  | j                  ||«      }nd }t        j                  j                   j#                  ||
|¬«      }t$        j&                  j)                  ||f«      }|j+                  |t-        j,                  «       «       | j/                  |||||| «      }|| j                   ||f<   |dfS # t        $ r Y �Œ,w xY w# t        $ r Y ŒÛw xY w)NF)r¥   Úsession_ticket_handlerÚtoken_handlerT)rž   r$   rª   r    ÚpopÚcopyÚsession_ticketÚKeyErrorÚ	functoolsÚpartialÚsave_session_ticketr¡   ÚtokenÚ
save_tokenrm   r¤   r0   ÚQuicConnectionrq   rr   ru   Úconnectr9   rŸ   )r   r|   r}   r~   r   Úwant_session_ticketÚ
want_tokenr0   r«   r³   r¯   r¸   r°   ÚqconnÚ	lladdresss                  r   Ú_connectzBaseQuicManager._connectþ   s¦  € ð ×&Ñ&×*Ñ*¨G°T¨?Ó;ˆ
ØÐ!Ø Ð&Ð&Ø�z‰zˆÙðØ!%×!6Ñ!6×!:Ñ!:¸GÀT¸?Ó!K�ä—y‘y “�Ø&4�Ô#ô &/×%6Ñ%6Ø×(Ñ(¨'°4ó&Ñ"ð &*Ð"ÙðØŸ™×(Ñ(¨'°4¨Ó9�ä—y‘y “�Ø"�”
ô
 &×-Ñ-¨d¯o©o¸wÈÓM‰Mà ˆMä—‘×'Ñ'×6Ñ6ØØ#9Ø'ð 7ó 
ˆô
 —H‘H×4Ñ4°g¸t°_ÓEˆ	Ø�‰�i¤§¡£Ô-Ø×-Ñ-Ø�7˜D &¨+°tó
ˆ
ð .8ˆ×Ñ˜7 D˜/Ñ*Ø˜DÐ!Ð!øôG ò âðûô  ò áðús#   ³9F Â9F Æ	FÆFÆ	F(Æ'F(c                 óB   — 	 | j                   ||f= y # t        $ r Y y w xY wr    )rž   r´   )r   r|   r}   s      r   ÚclosedzBaseQuicManager.closed6  s+   € ð	Ø×!Ñ! 7¨D /Ñ2øÜò 	Ùð	ús   ‚ ’	�c                 ó   — | j                   S r    )r¢   r   s    r   rC   zBaseQuicManager.is_h3<  s   € Ø�x‰xˆr   c                 óÞ   — t        | j                  «      }|t        k\  r>t        | j                  j	                  «       «      dt
         }|D ]  }| j                  |= Œ || j                  ||f<   y r*   )r   r    ÚMAX_SESSION_TICKETSÚlistÚkeysÚSESSIONS_TO_DELETE)r   r|   r}   Úticketr\   Úkeys_to_deleteÚkeys          r   r·   z#BaseQuicManager.save_session_ticket?  sj   € ô �×%Ñ%Ó&ˆØÔ#Ò#Ü! $×"7Ñ"7×"<Ñ"<Ó">Ó?ÀÔBTÐUˆNÛ%�Ø×)Ñ)¨#Ñ.ð &à17ˆ×Ñ˜w¨˜oÒ.r   c                 óÞ   — t        | j                  «      }|t        k\  r>t        | j                  j	                  «       «      dt
         }|D ]  }| j                  |= Œ || j                  ||f<   y r*   )r   r¡   rÅ   rÆ   rÇ   rÈ   )r   r|   r}   r¸   r\   rÊ   rË   s          r   r¹   zBaseQuicManager.save_tokenJ  sb   € ô �—‘ÓˆØÔ#Ò#Ü! $§,¡,×"3Ñ"3Ó"5Ó6°qÔ9KÐLˆNÛ%�Ø—L‘L Ñ%ð &à(-ˆ�‰�g˜t�_Ò%r   )NF)éU  Nr   TT)	r   r	   r
   r   rÀ   rÂ   rC   r·   r¹   r   r   r   r–   r–   à   s6   „ àJOóð@ ØØØ Øó6"òpòò	8ó	.r   r–   c                   ó   — e Zd Zdd„Zy)ÚAsyncQuicManagerNc                 ó   — t         ‚r    )rz   )r   r|   r}   r~   r   s        r   r»   zAsyncQuicManager.connectW  s   € Ü!Ð!r   )rÍ   Nr   )r   r	   r
   r»   r   r   r   rÏ   rÏ   V  s   „ ô"r   rÏ   )rJ   r²   rµ   rw   rZ   r9   Úurllib.parserE   Útypingr   Úaioquic.h3.connectionrm   Úaioquic.quic.configurationÚaioquic.quic.connectionÚdns._tls_utilrq   Údns.inetÚQUIC_MAX_DATAGRAMrÅ   rÈ   Ú	Exceptionr   r   r(   re   r�   r–   rÏ   r   r   r   Ú<module>rÚ      sž   ðó Û Û Û Û Û Û Ý ã Û !Û ã Û àÐ ØÐ ð )¨AÑ-Ð ô	�Iô 	÷ ñ  ÷FS$ñ S$÷lA/ñ A/ôHÐ,ô ÷
s.ñ s.ôl"�õ "r   