Ë
    _§1h’G  ã                  óò  — U 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Zd dlm	Z	m
Z
mZmZmZ d dlZd dlZd dlmZmZ e	r(d dlZd dlmZ d dlmZmZ d dlmZ d dlmZmZmZ d d	lmZ eej@                  ejB                  f   Z"d
e#d<   d d„Z$d!d„Z%d!d„Z&d"d„Z'd#d„Z(ejR                   G d„ d«      «       Z*ejR                   G d„ d«      «       Z+ejR                   G d„ d«      «       Z,ejR                   G d„ dejZ                  j\                  «      «       Z/ejR                   G d„ dejZ                  j`                  «      «       Z1e G d„ d«      «       Z2e G d„ dej                  jf                  e¬«      «       Z4y)$é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚNoReturnÚUnionÚoverload)ÚNoPublicConstructorÚfinal)ÚIterable)ÚAddressFamilyÚ
SocketKind)ÚTracebackType)ÚBufferÚSelfÚ	TypeAlias)ÚAddressFormatr   Ú	IPAddressc                óè   — t        | t        j                  «      rt        j                  j
                  S t        | t        j                  «      rt        j                  j                  S t        d«      ‚)Nz!Unhandled IPAddress instance type)	Ú
isinstanceÚ	ipaddressÚIPv4AddressÚtrioÚsocketÚAF_INETÚIPv6AddressÚAF_INET6ÚNotImplementedError)Úips    úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/trio/testing/_fake_net.pyÚ_family_forr    +   sN   € Ü�"”i×+Ñ+Ô,Ü�{‰{×"Ñ"Ð"Ü	�Bœ	×-Ñ-Ô	.Ü�{‰{×#Ñ#Ð#Ü
ÐAÓ
BÐBó    c                óà   — | t         j                  j                  k(  rt        j                  d«      S | t         j                  j
                  k(  rt        j                  d«      S t        d«      ‚)Nú0.0.0.0ú::úUnhandled ip address family©r   r   r   r   Ú
ip_addressr   r   ©Úfamilys    r   Ú_wildcard_ip_forr*   3   sT   € Ø”—‘×$Ñ$Ò$Ü×#Ñ# IÓ.Ð.Ø	”4—;‘;×'Ñ'Ò	'Ü×#Ñ# DÓ)Ð)Ü
Ð;Ó
<Ð<r!   c                óà   — | t         j                  j                  k(  rt        j                  d«      S | t         j                  j
                  k(  rt        j                  d«      S t        d«      ‚)Nú	127.0.0.1ú::1r%   r&   r(   s    r   Ú_localhost_ip_forr.   <   sT   € Ø”—‘×$Ñ$Ò$Ü×#Ñ# KÓ0Ð0Ø	”4—;‘;×'Ñ'Ò	'Ü×#Ñ# EÓ*Ð*Ü
Ð;Ó
<Ð<r!   c                ó@   — t        | t        j                  | «      «      ‚©N)ÚOSErrorÚosÚstrerror)Úcodes    r   Ú	_fake_errr5   D   s   € Ü
�$œŸ™ DÓ)Ó
*Ð*r!   c                óè   — d}|D ]^  }| ||t        |«      j                  z    }t        |«      5 }||d t        |«       d d d «       |t        |«      z  }|t        | «      k(  sŒ] |S  |S # 1 sw Y   Œ,xY w)Nr   )Ú
memoryviewÚnbytesÚlen)ÚdataÚbuffersÚwrittenÚbufÚ
next_pieceÚmbufs         r   Ú_scatterr@   H   s‰   € Ø€GØò ˆØ˜' G¬j¸«o×.DÑ.DÑ$DÐEˆ
Ü˜‹_ð 	1 Ø&0ˆDÐ"”3�z“?Ð#÷	1à”3�z“?Ñ"ˆØ”c˜$“iÓØØ€Nðð €N÷	1ð 	1ús   ®A(Á(A1	c                  óD   — e Zd ZU ded<   ded<   dd„Ze	 	 	 	 d	d„«       Zy)
ÚUDPEndpointr   r   ÚintÚportc                óœ   — | j                   j                  | j                  f}t        | j                   t        j
                  «      r|dz  }|S )N©r   r   )r   Ú
compressedrD   r   r   r   )ÚselfÚsockaddrs     r   Úas_python_sockaddrzUDPEndpoint.as_python_sockaddrY   sC   € à�G‰G×ÑØ�I‰IðA
ˆô �d—g‘gœy×4Ñ4Ô5Ø˜ÑˆHØˆr!   c                óL   — |d d \  }} | t        j                  |«      |¬«      S )Né   )r   rD   )r   r'   )ÚclsrI   r   rD   s       r   Úfrom_python_sockaddrz UDPEndpoint.from_python_sockaddrb   s+   € ð
 ˜B˜Q�<‰ˆˆDÙ”i×*Ñ*¨2Ó.°TÔ:Ð:r!   N©Úreturnú+tuple[str, int] | tuple[str, int, int, int])rI   rQ   rP   rB   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__rJ   ÚclassmethodrN   © r!   r   rB   rB   T   s7   … àƒMØ
ƒIóð ð;à=ð;ð 
ò;ó ñ;r!   rB   c                  ó   — e Zd ZU ded<   y)Ú
UDPBindingrB   ÚlocalN)rR   rS   rT   rU   rW   r!   r   rY   rY   k   s   … àÔr!   rY   c                  ó\   — e Zd ZU ded<   ded<    ej
                  d„ ¬«      Zded<   d
d„Zy	)Ú	UDPPacketrB   ÚsourceÚdestinationc                ó"   — | j                  «       S r0   )Úhex)Úps    r   ú<lambda>zUDPPacket.<lambda>u   s   € °·±³€ r!   )ÚreprÚbytesÚpayloadc                óF   — t        | j                  | j                  |¬«      S )N©r]   r^   re   )r\   r^   r]   )rH   re   s     r   ÚreplyzUDPPacket.replyx   s"   € ÜØ×#Ñ#ØŸ™Øô
ð 	
r!   N)re   rd   rP   r\   )rR   rS   rT   rU   ÚattrsÚfieldre   rh   rW   r!   r   r\   r\   q   s)   … àÓØÓØ �U—[‘[Ñ&7Ô8€GˆUÓ8ô
r!   r\   c                  ó    — e Zd ZU ded<   dd„Zy)ÚFakeSocketFactoryÚFakeNetÚfake_netc                óF   — t         j                  | j                  |||«      S r0   )Ú
FakeSocketÚ_creatern   )rH   r)   Útype_Úprotos       r   r   zFakeSocketFactory.socket„   s   € Ü×!Ñ! $§-¡-°¸ÀÓFÐFr!   N)r)   rC   rr   rC   rs   rC   rP   rp   )rR   rS   rT   rU   r   rW   r!   r   rl   rl   €   s   … àÓôGr!   rl   c                  óX   — e Zd ZU ded<   	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zy)	ÚFakeHostnameResolverrm   rn   c              ƒ  ó    K  — t        d«      ‚­w©NzFakeNet doesn't do fake DNS yet©r   )rH   ÚhostrD   r)   Útypers   Úflagss          r   Úgetaddrinfoz FakeHostnameResolver.getaddrinfoŒ   s   è ø€ ô" "Ð"CÓDÐDùó   ‚c              ƒ  ó    K  — t        d«      ‚­wrw   rx   )rH   rI   r{   s      r   Úgetnameinfoz FakeHostnameResolver.getnameinfoŸ   s   è ø€ ô
 "Ð"CÓDÐDùr}   N)r   r   r   r   )ry   zbytes | NonerD   zbytes | str | int | Noner)   rC   rz   rC   rs   rC   r{   rC   rP   zqlist[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]])rI   rQ   r{   rC   rP   ztuple[str, str])rR   rS   rT   rU   r|   r   rW   r!   r   ru   ru   ˆ   sŒ   … àÓð ØØØðEàðEð 'ðEð ð	Eð
 ðEð ðEð ðEð
óEð&Eà=ðEð ðEð 
ô	Er!   ru   c                  ó4   — e Zd Zdd„Zdd„Zdd„Zd	d„Zd	d„Zy)
rm   c                óô   — t        j                  d«      j                  «       | _        t        j                  d«      j                  «       | _        t        t        dd«      «      | _        i | _	        d | _
        y )Nz	1.0.0.0/8z1::/16iPÃ  iÿÿ  )r   ÚIPv4NetworkÚhostsÚ_auto_ipv4_iterÚIPv6NetworkÚ_auto_ipv6_iterÚiterÚrangeÚ_auto_port_iterÚ_boundÚroute_packet©rH   s    r   Ú__init__zFakeNet.__init__©   s]   € ä(×4Ñ4°[ÓA×GÑGÓIˆÔÜ(×4Ñ4°XÓ>×DÑDÓFˆÔÜ#¤E¨%°Ó$7Ó8ˆÔà46ˆŒà ˆÕr!   c                óp   — || j                   v rt        t        j                  «       || j                   |<   y r0   )rŠ   r5   ÚerrnoÚ
EADDRINUSE)rH   Úbindingr   s      r   Ú_bindzFakeNet._bind³   s*   € Ø�d—k‘kÑ!Ü”e×&Ñ&Ô'Ø%ˆ�‰�GÒr!   c                ó¤   — t         j                  j                  t        | «      «       t         j                  j	                  t        | «      «       y r0   )r   r   Úset_custom_socket_factoryrl   Úset_custom_hostname_resolverru   rŒ   s    r   ÚenablezFakeNet.enable¸   s2   € Ü�‰×-Ñ-Ô.?ÀÓ.EÔFÜ�‰×0Ñ0Ô1EÀdÓ1KÕLr!   c                ób   — | j                   €| j                  |«       y | j                  |«       y r0   )r‹   Údeliver_packet©rH   Úpackets     r   Úsend_packetzFakeNet.send_packet¼   s*   € Ø×ÑÐ$Ø×Ñ Õ'à×Ñ˜fÕ%r!   c                óŠ   — t        |j                  ¬«      }|| j                  v r| j                  |   j                  |«       y y )N©rZ   )rY   r^   rŠ   Ú_deliver_packet)rH   rš   r‘   s      r   r˜   zFakeNet.deliver_packetÂ   s:   € Ü 6×#5Ñ#5Ô6ˆØ�d—k‘kÑ!Ø�K‰K˜Ñ ×0Ñ0°Õ8ð r!   N©rP   ÚNone)r‘   rY   r   rp   rP   r    ©rš   r\   rP   r    )rR   rS   rT   r�   r’   r–   r›   r˜   rW   r!   r   rm   rm   §   s   „ ó!ó&ó
Mó&ôr!   rm   c                  ó°  — e Zd Z	 	 	 	 	 	 	 	 	 	 d)d„Zed*d„«       Zed+d„«       Zed,d„«       Zd-d„Zd-d„Z		 	 	 	 	 	 d.d„Z
d/d„Zd0d	„Zd1d
„Z	 	 	 d2	 	 	 	 	 	 	 	 	 d3d„Zej                   dk7  ses eej&                  d«      reZ	 	 d4	 	 	 	 	 	 	 d5d„Zej                   dk7  ses eej&                  d«      reZd6d„Zd6d„Zed7d„«       Zed8d„«       Z	 d9	 	 	 	 	 	 	 d:d„Zed;d„«       Ze	 	 	 	 	 	 	 	 	 	 d<d„«       Z	 d9	 	 	 	 	 	 	 	 	 d=d„Zd>d„Z	 	 	 	 	 	 	 	 d?d„Zd@dAd„Ze	 	 	 	 	 	 dBd„«       Ze	 	 	 	 	 	 	 	 dCd„«       Z	 	 	 	 dDd„Zd@dEd„Z d4dFd„Z!	 d@	 	 	 	 	 dGd „Z"	 	 d4	 	 	 	 	 	 	 dHd!„Z#	 	 d4	 	 	 	 	 	 	 dId"„Z$ej                   dk7  ses eej&                  d«      re$Z%d,d#„Z&d,d$„Z'dJd%„Z(dKd&„Z)ej                   dk(  ses eej&                  d'«      rdLd(„Z*yyy)Mrp   c                ó
  — || _         |st        j                  j                  }|st        j                  j                  }|t        j                  j                  t        j                  j
                  fvrt        d|› �«      ‚|t        j                  j                  k7  rt        d|› �«      ‚|| _        || _	        || _
        d| _        t        j                  t           t        d«      «      \  | _        | _        d | _        y )Nz%FakeNet doesn't (yet) support family=z#FakeNet doesn't (yet) support type=FÚinf)Ú	_fake_netr   r   r   ÚSOCK_STREAMr   r   Ú
SOCK_DGRAMÚ_familyÚ_typeÚ_protoÚ_closedÚopen_memory_channelr\   ÚfloatÚ_packet_senderÚ_packet_receiverÚ_binding)rH   rn   r)   rz   rs   s        r   r�   zFakeSocket.__init__Í   s×   € ð "ˆŒáÜ—[‘[×(Ñ(ˆFÙÜ—;‘;×*Ñ*ˆDàœ$Ÿ+™+×-Ñ-¬t¯{©{×/CÑ/CÐDÑDÜ%Ð(MÈfÈXÐ&VÓWÐWØ”4—;‘;×)Ñ)Ò)Ü%Ð(KÈDÈ6Ð&RÓSÐSàˆŒØˆŒ
ØˆŒàˆŒä59×5MÑ5MÜñ6
ä
�‹,ó6Ñ2ˆÔ˜TÔ2ð
 ,0ˆ�r!   c                ó   — | j                   S r0   )r©   rŒ   s    r   rz   zFakeSocket.typeí   s   € à�z‰zÐr!   c                ó   — | j                   S r0   )r¨   rŒ   s    r   r)   zFakeSocket.familyñ   s   € à�|‰|Ðr!   c                ó   — | j                   S r0   )rª   rŒ   s    r   rs   zFakeSocket.protoõ   s   € à�{‰{Ðr!   c                óP   — | j                   rt        t        j                  «       y y r0   )r«   r5   r�   ÚEBADFrŒ   s    r   Ú_check_closedzFakeSocket._check_closedù   s   € Ø�<Š<Ü”e—k‘kÕ"ð r!   c                óº   — | j                   ry d| _         | j                  �!| j                  j                  | j                  = | j                  j                  «        y )NT)r«   r°   r¥   rŠ   r¯   ÚcloserŒ   s    r   r¸   zFakeSocket.closeý   sE   € Ø�<Š<ØØˆŒØ�=‰=Ð$Ø—‘×%Ñ% d§m¡mÐ4Ø×Ñ×#Ñ#Õ%r!   c             ƒ  ó¤   K  — t         j                  j                  | j                  | j                  | j
                  |d|¬«      ƒ d {  –—† S 7 Œ­w)NF)ÚaddressÚipv6_v6onlyrZ   )r   Ú_socketÚ_resolve_address_nocprz   r)   rs   )rH   rº   rZ   s      r   r½   z FakeSocket._resolve_address_nocp  sL   è ø€ ô —\‘\×7Ñ7Ø�I‰IØ�K‰KØ�J‰JØØØð 8ó 
÷ 
ð 	
ð 
ús   ‚AAÁ	AÁ
Ac                óª   — t        j                  t        j                  «      5  | j                  j                  |«       d d d «       y # 1 sw Y   y xY wr0   )Ú
contextlibÚsuppressr   ÚBrokenResourceErrorr®   Úsend_nowaitr™   s     r   rž   zFakeSocket._deliver_packet  s?   € ä× Ñ ¤×!9Ñ!9Ó:ñ 	4Ø×Ñ×+Ñ+¨FÔ3÷	4÷ 	4ñ 	4ús   ¤A	Á	Ac              ƒ  óî  K  — | j                  «        | j                  �t        t        j                  «       t
        j                  j                  «       ƒ d {  –—†  | j                  |d¬«      ƒ d {  –—† ^}}}|g k(  sJ d«       ‚t        j                  |«      }t        |«      | j                  k(  sJ ‚|t        j                  d«      k(  rt        j                  d«      }n-|t        j                  d«      k(  rt        j                  d«      }|dk(  rt        | j                  j                  «      }t!        t#        ||«      ¬«      }| j                  j%                  || «       || _        y 7 �Œ7 Œþ­w)	NTr�   zTODO: handle other values?r#   r,   r$   r-   r   )r¶   r°   r5   r�   ÚEINVALr   ÚlowlevelÚ
checkpointr½   r   r'   r    r)   Únextr¥   r‰   rY   rB   r’   )rH   ÚaddrÚip_strrD   Ú_r   r‘   s          r   ÚbindzFakeSocket.bind  s+  è ø€ Ø×ÑÔØ�=‰=Ð$Ü”e—l‘lÔ#Ü�m‰m×&Ñ&Ó(×(Ð(Ø!%×!;Ñ!;¸DÈÐ!;Ó!M×MÐˆ��qØ�BŠwÐ4Ð4Ó4ˆwä×!Ñ! &Ó)ˆÜ˜2‹ $§+¡+Ò-Ð-Ð-à”×%Ñ% iÓ0Ò0Ü×%Ñ% kÓ2‰BØ”9×'Ñ'¨Ó-Ò-Ü×%Ñ% eÓ,ˆBØ�1Š9Ü˜Ÿ™×6Ñ6Ó7ˆDÜ¤;¨r°4Ó#8Ô9ˆØ�‰×Ñ˜W dÔ+Øˆ�ð 	)ùØMús%   ‚AE5ÁE0ÁE5Á4E3Á5C<E5Å3E5c              ƒ  ó    K  — t        d«      ‚­w)Nz0FakeNet does not (yet) support connected socketsrx   )rH   Úpeers     r   ÚconnectzFakeSocket.connect2  s   è ø€ Ü!Ð"TÓUÐUùr}   Nc              ƒ  ó®  K  — | j                  «        t        j                  j                  «       ƒ d {  –—†  |�| j	                  |d¬«      ƒ d {  –—† }|rt        d«      ‚|rt        d|› �«      ‚|€t        t        j                  «       t        j                  |«      }| j                  €8| j                  t        | j                  «      j                  df«      ƒ d {  –—†  dj!                  |«      }| j                  €J ‚t#        | j                  j$                  ||¬«      }| j&                  j)                  |«       t+        |«      S 7 �Œ7 Œÿ7 Œp­w)NFr�   ú&FakeNet doesn't support ancillary dataz"FakeNet send flags must be 0, not r   r!   rg   )r¶   r   rÅ   rÆ   r½   r   r5   r�   ÚENOTCONNrB   rN   r°   rË   r*   r)   rG   Újoinr\   rZ   r¥   r›   r9   )rH   r;   Úancdatar{   rº   r^   re   rš   s           r   Ú_sendmsgzFakeSocket._sendmsg5  s+  è ø€ ð 	×ÑÔä�m‰m×&Ñ&Ó(×(Ð(àÐØ ×6Ñ6°wÀeÐ6ÓL×LˆGÙÜ%Ð&NÓOÐOÙÜ%Ð(JÈ5È'Ð&RÓSÐSàˆ?Ü”e—n‘nÔ%ä!×6Ñ6°wÓ?ˆà�=‰=Ð Ø—)‘)Ô-¨d¯k©kÓ:×EÑEÀqÐIÓJ×JÐJà—(‘(˜7Ó#ˆà�}‰}Ð(Ð(Ð(ÜØ—=‘=×&Ñ&Ø#Øô
ˆð 	�‰×"Ñ" 6Ô*ä�7‹|Ðð9 	)ùð Møð Kús5   ‚2E´EµEÁEÁBEÃ"EÃ#A,EÅEÅEÚwin32Úsendmsgc              ƒ  ó¾  K  — |dk7  rt        d«      ‚|dk7  rt        d«      ‚| j                  €t        d«      ‚| j                  «        g }d}| j                  j	                  «       ƒ d {  –—† }|j
                  j                  «       }t        |j                  |«      }|t        |j                  «      k  r|t        j                  j                  z  }||||fS 7 Œo­w)Nr   rÐ   z&FakeNet doesn't support any recv flagszªThe code will most likely hang if you try to receive on a fakesocket without a binding. If that is not the case, or you explicitly want to test that, remove this warning.)r   r°   r¶   r¯   Úreceiver]   rJ   r@   re   r9   r   r   Ú	MSG_TRUNC)	rH   r;   Ú
ancbufsizer{   rÓ   Ú	msg_flagsrš   rº   r<   s	            r   Ú_recvmsg_intozFakeSocket._recvmsg_intoa  sÖ   è ø€ ð ˜Š?Ü%Ð&NÓOÐOØ�AŠ:Ü%Ð&NÓOÐOØ�=‰=Ð ô &ð2óð ð 	×ÑÔà02ˆØˆ	à×,Ñ,×4Ñ4Ó6×6ˆØ—-‘-×2Ñ2Ó4ˆÜ˜6Ÿ>™>¨7Ó3ˆØ”S˜Ÿ™Ó(Ò(ØœŸ™×.Ñ.Ñ.ˆIØ˜ ¨GÐ3Ð3ð 7ús   ‚A)CÁ+CÁ,A0Cc                ó&  — | j                  «        | j                  �$| j                  j                  j                  «       S | j                  t
        j                  j                  k(  ry| j                  t
        j                  j                  k(  sJ ‚y)N)r#   r   )r$   r   )	r¶   r°   rZ   rJ   r)   r   r   r   r   rŒ   s    r   ÚgetsocknamezFakeSocket.getsocknameŽ  si   € Ø×ÑÔØ�=‰=Ð$Ø—=‘=×&Ñ&×9Ñ9Ó;Ð;Ø�[‰[œDŸK™K×/Ñ/Ò/Ø!à—;‘;¤$§+¡+×"6Ñ"6Ò6Ð6Ð6Ør!   c                ór  — | j                  «        | j                  �‚t        | j                  d«      sJ d«       ‚| j                  j                  �Ot	        | j                  j                  t
        «      sJ d«       ‚| j                  j                  j                  «       S t        t        j                  «       y )NÚremotezGThis method seems to assume that self._binding has a remote UDPEndpointz,Self._binding.remote should be a UDPEndpoint)
r¶   r°   Úhasattrrà   r   rB   rJ   r5   r�   rÑ   rŒ   s    r   ÚgetpeernamezFakeSocket.getpeername™  s©   € Ø×ÑÔØ�=‰=Ð$ÜØ—‘Øôð Yð YóYð ð �}‰}×#Ñ#Ð/Ü!Ø—M‘M×(Ñ(Üôð Bð BóBð ð —}‘}×+Ñ+×>Ñ>Ó@Ð@Ü”%—.‘.Õ!r!   c                ó   — y r0   rW   )rH   ÚlevelÚoptnames      r   Ú
getsockoptzFakeSocket.getsockopt¨  s   € Ø>Ar!   c                ó   — y r0   rW   ©rH   rä   rå   Úbuflens       r   ræ   zFakeSocket.getsockopt«  s   € ØMPr!   c               óF   — | j                  «        t        d|› d|› d�«      ‚)Nz%FakeNet doesn't implement getsockopt(ú, ú))r¶   r1   rè   s       r   ræ   zFakeSocket.getsockopt®  s+   € ð 	×ÑÔÜÐ=¸e¸WÀBÀwÀiÈqÐQÓRÐRr!   c                ó   — y r0   rW   )rH   rä   rå   Úvalues       r   Ú
setsockoptzFakeSocket.setsockopt¸  s   € ØTWr!   c                ó   — y r0   rW   ©rH   rä   rå   rî   Úoptlens        r   rï   zFakeSocket.setsockopt»  s   € ð r!   c               óÒ   — | j                  «        ||ft        j                  j                  t        j                  j                  fk(  r|st        d«      ‚t        d|› d|› d�«      ‚)Nz#FakeNet always has IPV6_V6ONLY=Truez%FakeNet doesn't implement setsockopt(rë   z, ...))r¶   r   r   ÚIPPROTO_IPV6ÚIPV6_V6ONLYr   r1   rñ   s        r   rï   zFakeSocket.setsockoptÅ  sh   € ð 	×ÑÔà�7ÐÜ�K‰K×$Ñ$Ü�K‰K×#Ñ#ð 
ò 
ñ Ü%Ð&KÓLÐLäÐ=¸e¸WÀBÀwÀiÈvÐVÓWÐWr!   c                ó   — | S r0   rW   rŒ   s    r   Ú	__enter__zFakeSocket.__enter__Û  s   € Øˆr!   c                ó$   — | j                  «        y r0   )r¸   )rH   Úexc_typeÚ	exc_valueÚ	tracebacks       r   Ú__exit__zFakeSocket.__exit__Þ  s   € ð 	�
‰
�r!   c              ƒ  óD   K  — | j                  ||d «      ƒ d {  –—† S 7 Œ­wr0   )Úsendto)rH   r:   r{   s      r   ÚsendzFakeSocket.sendæ  s   è ø€ Ø—[‘[  u¨dÓ3×3Ð3Ð3ús   ‚ ™š c              ƒ  ó   K  — y ­wr0   rW   )rH   Ú_FakeSocket__dataÚ_FakeSocket__addresss      r   rþ   zFakeSocket.sendtoê  s   è ø€ ð
 ùó   ‚c              ƒ  ó   K  — y ­wr0   rW   )rH   r  Ú_FakeSocket__flagsr  s       r   rþ   zFakeSocket.sendtoò  s   è ø€ ð ùr  c              ‡  ó´   K  — t        |«      dk(  r|\  }}d}n t        |«      dk(  r|\  }}}nt        d«      ‚| j                  |gg ||«      ƒ d {  –—† S 7 Œ­w)NrL   r   é   zwrong number of arguments)r9   Ú	TypeErrorrÔ   )rH   Úargsr:   rº   r{   s        r   rþ   zFakeSocket.sendtoú  sa   è ø€ ô ˆt‹9˜Š>Ø ‰MˆD�'Ø‰EÜ�‹Y˜!Š^Ø#'Ñ ˆD�%™äÐ7Ó8Ð8Ø—]‘] D 6¨2¨u°gÓ>×>Ð>Ð>ús   ‚AAÁAÁAc              ƒ  óL   K  — | j                  ||«      ƒ d {  –—† \  }}|S 7 Œ	­wr0   )Úrecvfrom)rH   Úbufsizer{   r:   Ú_addresss        r   ÚrecvzFakeSocket.recv
  s'   è ø€ Ø#Ÿ}™}¨W°eÓ<×<‰ˆˆhØˆð =ús   ‚$˜"™
$c              ƒ  óN   K  — | j                  |||«      ƒ d {  –—† \  }}|S 7 Œ	­wr0   )Úrecvfrom_into)rH   r=   r8   r{   Ú	got_bytesr  s         r   Ú	recv_intozFakeSocket.recv_into  s.   è ø€ Ø$(×$6Ñ$6°s¸FÀEÓ$J×JÑˆ	�8ØÐð Kús   ‚%™#š
%c              ƒ  óT   K  — | j                  ||«      ƒ d {  –—† \  }}}}||fS 7 Œ­wr0   )Ú_recvmsg)rH   r  r{   r:   Ú_ancdataÚ
_msg_flagsrº   s          r   r  zFakeSocket.recvfrom  s4   è ø€ ð
 59·M±MÀ'È5Ó4Q×.QÑ+ˆˆh˜
 GØ�Wˆ}Ðð /Rús   ‚(˜&™(c              ƒ  ó¨   K  — |dk7  r#|t        |«      j                  k7  rt        d«      ‚| j                  |gd|«      ƒ d {  –—† \  }}}}||fS 7 Œ­w)Nr   zpartial recvfrom_into)r7   r8   r   rÜ   )rH   r=   r8   r{   Ú
got_nbytesr  r  rº   s           r   r  zFakeSocket.recvfrom_into  sg   è ø€ ð �QŠ;˜6¤Z°£_×%;Ñ%;Ò;Ü%Ð&=Ó>Ð>Ø:>×:LÑ:LØˆEØØó;
÷ 5
Ñ1ˆ
�H˜j¨'ð
 ˜7Ð"Ð"ð5
ús   ‚A AÁAÁAc              ƒ  óŠ   K  — t        |«      }| j                  |g||«      ƒ d {  –—† \  }}}}t        |d | «      |||fS 7 Œ­wr0   )Ú	bytearrayrÜ   rd   )	rH   r  rÚ   r{   r=   r  rÓ   rÛ   rº   s	            r   r  zFakeSocket._recvmsg)  s]   è ø€ ô ˜Ó ˆØ8<×8JÑ8JØˆEØØó9
÷ 3
Ñ/ˆ
�G˜Y¨ô
 �c˜+˜:Ð&Ó'¨°)¸WÐEÐEð3
ús   ‚#A¥A¦Ac                ó   — t        d«      ‚)Nz&can't get fileno() for FakeNet socketsrx   rŒ   s    r   ÚfilenozFakeSocket.fileno<  s   € Ü!Ð"JÓKÐKr!   c                ó   — t        d«      ‚)Nzcan't detach() a FakeNet socketrx   rŒ   s    r   ÚdetachzFakeSocket.detach?  s   € Ü!Ð"CÓDÐDr!   c                 ó   — y)NFrW   rŒ   s    r   Úget_inheritablezFakeSocket.get_inheritableB  s   € Ør!   c                ó   — |rt        d«      ‚y )Nz&FakeNet can't make inheritable socketsrx   )rH   Úinheritables     r   Úset_inheritablezFakeSocket.set_inheritableE  s   € ÙÜ%Ð&NÓOÐOð r!   Úsharec                ó   — t        d«      ‚)NzFakeNet can't share socketsrx   )rH   Ú
process_ids     r   r$  zFakeSocket.shareM  s   € Ü%Ð&CÓDÐDr!   )
rn   rm   r)   r   rz   r   rs   rC   rP   r    )rP   r   )rP   r   )rP   rC   rŸ   )rº   ÚobjectrZ   ÚboolrP   ztuple[str, int]r¡   )rÈ   r'  rP   r    )rÍ   r'  rP   r   )rW   r   N)
r;   úIterable[Buffer]rÓ   z!Iterable[tuple[int, int, Buffer]]r{   rC   rº   zAddressFormat | NonerP   rC   rF   )r;   r)  rÚ   rC   r{   rC   rP   zZtuple[int, list[tuple[int, int, bytes]], int, tuple[str, int] | tuple[str, int, int, int]]rO   )rä   rC   rå   rC   rP   rC   )rä   rC   rå   rC   ré   rC   rP   rd   r0   )rä   rC   rå   rC   ré   ú
int | NonerP   zint | bytes)rä   rC   rå   rC   rî   zint | BufferrP   r    )
rä   rC   rå   rC   rî   r    rò   rC   rP   r    )
rä   rC   rå   rC   rî   zint | Buffer | Nonerò   r*  rP   r    )rP   r   )rù   z#builtins.type[BaseException] | Nonerú   zBaseException | Nonerû   zTracebackType | NonerP   r    )r   )r:   r   r{   rC   rP   rC   )r  r   r  z!tuple[object, ...] | str | BufferrP   rC   )r  r   r  rC   r  z(tuple[object, ...] | str | Buffer | NonerP   rC   )r	  r   rP   rC   )r  rC   r{   rC   rP   rd   )r=   r   r8   rC   r{   rC   rP   rC   )r  rC   r{   rC   rP   ztuple[bytes, AddressFormat])r=   r   r8   rC   r{   rC   rP   ztuple[int, AddressFormat])r  rC   rÚ   rC   r{   rC   rP   z>tuple[bytes, list[tuple[int, int, bytes]], int, AddressFormat])rP   r(  )r"  r(  rP   r    )r&  rC   rP   rd   )+rR   rS   rT   r�   Úpropertyrz   r)   rs   r¶   r¸   r½   rž   rË   rÎ   rÔ   ÚsysÚplatformr   rá   r   rÖ   rÜ   Úrecvmsg_intorÞ   râ   r   ræ   rï   r÷   rü   rÿ   rþ   r  r  r  r  r  Úrecvmsgr  r  r   r#  r$  rW   r!   r   rp   rp   Ë   s  „ ð0àð0ð ð0ð ð	0ð
 ð0ð 
ó0ð@ òó ðð òó ðð òó ðó#ó&ð
àð
ð ð	
ð
 
ó
ó4ó ó*Vð 68ØØ(,ð%à!ð%ð 3ð%ð ð	%ð
 &ð%ð 
ó%ðN ‡|�|�wÒÙ™g f§m¡m°YÔ?àˆð
 Øð	"4à!ð"4ð ð"4ð ð	"4ð

ó"4ðH ‡|�|�wÒÙ™g f§m¡m°YÔ?à$ˆóó"ð ÚAó ØAàÚPó ØPð "ðSð ðSð ð	Sð
 ðSð 
óSð ÚWó ØWàðð ðð ð	ð
 ðð ðð 
òó ðð "ðXð ðXð ð	Xð
 #ðXð ðXð 
óXó,ðà5ðð (ðð (ð	ð
 
óô4ð ðàðð 5ðð 
ò	ó ðð ðàðð ðð <ð	ð
 
òó ðð?àð?ð 
ó?ô ôð ðàðð ðð 
%ó	ð Øð	#àð#ð ð#ð ð	#ð
 
#ó#ð$ Øð	FàðFð ðFð ð	Fð
 
HóFð ‡|�|�wÒÙ™g f§m¡m°YÔ?àˆóLóEóóPð ‡|�|�wÒÙ™g f§m¡m°WÔ=ô	Eð >ˆMr!   rp   )Ú	metaclass)r   r   rP   rC   )r)   rC   rP   r   )r4   rC   rP   r   )r:   rd   r;   r)  rP   rC   )5Ú
__future__r   r¿   r�   r   r2   r   r,  Útypingr   r   r   r   r   ri   r   Ú
trio._utilr	   r
   ÚbuiltinsÚcollections.abcr   r   r   Útypesr   Útyping_extensionsr   r   r   Útrio._socketr   r   r   r   rU   r    r*   r.   r5   r@   ÚfrozenrB   rY   r\   ÚabcÚSocketFactoryrl   ÚHostnameResolverru   rm   Ú
SocketTyperp   rW   r!   r   ú<module>r>     sz  ðö #ã Û Û Û 	Û Û 
÷õ ó ã ß 1áÛÝ(ß0Ý#ç9Ñ9å*à˜Y×2Ñ2°I×4IÑ4IÐIÑJ€	ˆ9Ó JóCó=ó=ó+ó	ð ‡�÷;ð ;ó ð;ð, ‡�÷ð ó ðð
 ‡�÷
ð 
ó ð
ð ‡�ôG˜Ÿ™×.Ñ.ó Gó ðGð ‡�ôE˜4Ÿ8™8×4Ñ4ó Eó ðEð< ÷ ð  ó ð ðF ôBE�—‘×'Ñ'Ð3Fô BEó ñBEr!   