Ë
    #)fÔD  ã                  óö  — 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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mZ d dlmZ d dlmZmZmZ eej<                  ej>                  f   Z de!d	<   d d
„Z"d!d„Z#d!d„Z$d"d„Z%d#d„Z& edd¬«      Z'ejP                   G d„ d«      «       Z)ejP                   G d„ d«      «       Z*ejP                   G d„ d«      «       Z+ejP                   G d„ dejX                  jZ                  «      «       Z.ejP                   G d„ dejX                  j^                  «      «       Z0e G d„ d«      «       Z1e G d„ dej                  jd                  e¬«      «       Z3y)$é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚIterableÚNoReturnÚTypeVarÚUnionÚoverload)ÚNoPublicConstructorÚfinal)ÚAddressFamilyÚ
SocketKind)ÚTracebackType)ÚBufferÚSelfÚ	TypeAliasr   Ú	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    úS/var/www/html/flask-app/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*   2   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   C   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@   G   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	ÚT_UDPEndpointÚUDPEndpoint)Úboundc                  óH   — e Zd ZU ded<   ded<   dd„Ze	 	 	 	 	 	 d	d„«       Zy)
rB   r   r   ÚintÚportc                óœ   — | j                   j                  | j                  f}t        | j                   t        j
                  «      r|dz  }|S )N©r   r   )r   Ú
compressedrF   r   r   r   )ÚselfÚsockaddrs     r   Úas_python_sockaddrzUDPEndpoint.as_python_sockaddr[   sC   € à�G‰G×ÑØ�I‰IðA
ˆô �d—g‘gœy×4Ñ4Ô5Ø˜ÑˆHØˆr!   c                óL   — |d d \  }} | t        j                  |«      |¬«      S )Né   )r   rF   )r   r'   )ÚclsrK   r   rF   s       r   Úfrom_python_sockaddrz UDPEndpoint.from_python_sockaddrd   s+   € ð ˜B˜Q�<‰ˆˆDÙ”i×*Ñ*¨2Ó.°TÔ:Ð:r!   N©Úreturnú+tuple[str, int] | tuple[str, int, int, int])rO   ztype[T_UDPEndpoint]rK   rS   rR   rA   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__rL   ÚclassmethodrP   © r!   r   rB   rB   V   s=   … àƒMØ
ƒIóð ð;Ø ð;Ø,Wð;à	ò;ó ñ;r!   c                  ó   — e Zd ZU ded<   y)Ú
UDPBindingrB   ÚlocalN)rT   rU   rV   rW   rY   r!   r   r[   r[   l   s   … àÔr!   r[   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>v   s   € °·±³€ r!   )ÚreprÚbytesÚpayloadc                óF   — t        | j                  | j                  |¬«      S )N©r_   r`   rg   )r^   r`   r_   )rJ   rg   s     r   ÚreplyzUDPPacket.replyy   s    € ÜØ×#Ñ#°·±Àgô
ð 	
r!   N)rg   rf   rR   r^   )rT   rU   rV   rW   ÚattrsÚfieldrg   rj   rY   r!   r   r^   r^   r   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Ú_createrp   )rJ   r)   Útype_Úprotos       r   r   zFakeSocketFactory.socketƒ   s   € Ü×!Ñ! $§-¡-°¸ÀÓFÐFr!   N)r)   rE   rt   rE   ru   rE   rR   rr   )rT   rU   rV   rW   r   rY   r!   r   rn   rn      s   … àÓôGr!   rn   c                  óX   — e Zd ZU ded<   	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zy)	ÚFakeHostnameResolverro   rp   c              ƒ  ó    K  — t        d«      ‚­w©NzFakeNet doesn't do fake DNS yet©r   )rJ   ÚhostrF   r)   Útyperu   Úflagss          r   Úgetaddrinfoz FakeHostnameResolver.getaddrinfo‹   s   è ø€ ô" "Ð"CÓDÐDùó   ‚c              ƒ  ó    K  — t        d«      ‚­wry   rz   )rJ   rK   r}   s      r   Úgetnameinfoz FakeHostnameResolver.getnameinfož   s   è ø€ ô "Ð"CÓDÐDùr   N)r   r   r   r   )r{   zbytes | NonerF   zbytes | str | int | Noner)   rE   r|   rE   ru   rE   r}   rE   rR   z]list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]])rK   rS   r}   rE   rR   ztuple[str, str])rT   rU   rV   rW   r~   r�   rY   r!   r   rw   rw   ‡   sˆ   … àÓð ØØØðEàðEð 'ðEð ð	Eð
 ðEð ðEð ðEð
óEð&EØCðEØLOðEà	ôEr!   rw   c                  ó4   — e Zd Zdd„Zdd„Zdd„Zd	d„Zd	d„Zy)
ro   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©rJ   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)rJ   Ú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_factoryrn   Úset_custom_hostname_resolverrw   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©rJ   Úpackets     r   Úsend_packetzFakeNet.send_packet¹   s*   € Ø×ÑÐ$Ø×Ñ Õ'à×Ñ˜fÕ%r!   c                óŠ   — t        |j                  ¬«      }|| j                  v r| j                  |   j                  |«       y y )N©r\   )r[   r`   rŒ   Ú_deliver_packet)rJ   rœ   r“   s      r   rš   zFakeNet.deliver_packet¿   s:   € Ü 6×#5Ñ#5Ô6ˆØ�d—k‘kÑ!Ø�K‰K˜Ñ ×0Ñ0°Õ8ð r!   N©rR   ÚNone)r“   r[   r   rr   rR   r¢   ©rœ   r^   rR   r¢   )rT   rU   rV   r�   r”   r˜   r�   rš   rY   r!   r   ro   ro   ¤   s   „ ó!ó&ó
Mó&ôr!   ro   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)Mrr   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)rJ   rp   r)   r|   ru   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   r|   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   ru   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_v6onlyr\   )r   Ú_socketÚ_resolve_address_nocpr|   r)   ru   )rJ   r¼   r\   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‹   r[   rB   r”   )rJ   ÚaddrÚip_strrF   Ú_r   r“   s          r   ÚbindzFakeSocket.bind  s&  è ø€ Ø×ÑÔØ�=‰=Ð$Ü”e—l‘lÔ#Ü�m‰m×&Ñ&Ó(×(Ð(Ø!%×!;Ñ!;¸DÈÐ!;Ó!M×MÐˆ��qØ�BŠwÐ4Ð4Ô4ä×!Ñ! &Ó)ˆÜ˜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 socketsrz   )rJ   Úpeers     r   ÚconnectzFakeSocket.connect,  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!   ri   )r¸   r   rÇ   rÈ   r¿   r   r5   r‘   ÚENOTCONNrB   rP   r²   rÍ   r*   r)   rI   Újoinr^   r\   r§   r�   r9   )rJ   r;   Úancdatar}   r¼   r`   rg   rœ   s           r   Ú_sendmsgzFakeSocket._sendmsg/  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_   rL   r@   rg   r9   r   r   Ú	MSG_TRUNC)	rJ   r;   Ú
ancbufsizer}   rÕ   Ú	msg_flagsrœ   r¼   r<   s	            r   Ú_recvmsg_intozFakeSocket._recvmsg_into[  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²   r\   rL   r)   r   r   r   r   rŽ   s    r   ÚgetsocknamezFakeSocket.getsocknameƒ  sf   € Ø×ÑÔØ�=‰=Ð$Ø—=‘=×&Ñ&×9Ñ9Ó;Ð;Ø�[‰[œDŸK™K×/Ñ/Ò/Ø!à—;‘;¤$§+¡+×"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   rL   r5   r‘   rÓ   rŽ   s    r   ÚgetpeernamezFakeSocket.getpeernameŽ  s—   € Ø×ÑÔØ�=‰=Ð$ÜØ—‘˜xôð YàXôYð �}‰}×#Ñ#Ð/Ü!Ø—M‘M×(Ñ(¬+ôð BàAôBð —}‘}×+Ñ+×>Ñ>Ó@Ð@Ü”%—.‘.Õ!r!   c                ó   — y r0   rY   )rJ   ÚlevelÚoptnames      r   Ú
getsockoptzFakeSocket.getsockopt›  s   € Ø>Ar!   c                ó   — y r0   rY   ©rJ   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   rY   )rJ   ræ   rç   Úvalues       r   Ú
setsockoptzFakeSocket.setsockopt§  s   € ØTWr!   c                ó   — y r0   rY   ©rJ   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   rY   rŽ   s    r   Ú	__enter__zFakeSocket.__enter__Å  s   € Øˆr!   c                ó$   — | j                  «        y r0   )rº   )rJ   Úexc_typeÚ	exc_valueÚ	tracebacks       r   Ú__exit__zFakeSocket.__exit__È  s   € ð 	�
‰
�r!   c              ƒ  óD   K  — | j                  ||d «      ƒ d {  –—† S 7 Œ­wr0   )Úsendto)rJ   r:   r}   s      r   ÚsendzFakeSocket.sendÐ  s   è ø€ Ø—[‘[  u¨dÓ3×3Ð3Ð3ús   ‚ ™š c              ƒ  ó   K  — y ­wr0   rY   )rJ   Ú_FakeSocket__dataÚ_FakeSocket__addresss      r   r   zFakeSocket.sendtoÓ  s   è ø€ ð ùó   ‚c              ƒ  ó   K  — y ­wr0   rY   )rJ   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)NrN   r   é   zwrong number of arguments)r9   Ú	TypeErrorrÖ   )rJ   Ú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)rJ   Úbufsizer}   r:   r¼   s        r   ÚrecvzFakeSocket.recví  s'   è ø€ Ø"Ÿm™m¨G°UÓ;×;‰ˆˆgØˆð <ús   ‚$˜"™
$c              ƒ  óN   K  — | j                  |||«      ƒ d {  –—† \  }}|S 7 Œ	­wr0   )Úrecvfrom_into)rJ   r=   r8   r}   Ú	got_bytesr¼   s         r   Ú	recv_intozFakeSocket.recv_intoñ  s.   è ø€ Ø#'×#5Ñ#5°c¸6À5Ó#I×IÑˆ	�7ØÐð Jús   ‚%™#š
%c              ƒ  óT   K  — | j                  ||«      ƒ d {  –—† \  }}}}||fS 7 Œ­wr0   )Ú_recvmsg)rJ   r  r}   r:   rÕ   rÝ   r¼   s          r   r  zFakeSocket.recvfromõ  s2   è ø€ Ø26·-±-ÀÈÓ2O×,OÑ)ˆˆg�y 'Ø�Wˆ}Ðð -Pú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Þ   )rJ   r=   r8   r}   Ú
got_nbytesrÕ   rÝ   r¼   s           r   r  zFakeSocket.recvfrom_intoù  se   è ø€ ð �QŠ;˜6¤Z°£_×%;Ñ%;Ò;Ü%Ð&=Ó>Ð>Ø8<×8JÑ8JØˆE�1�eó9
÷ 3
Ñ/ˆ
�G˜Y¨ð ˜7Ð"Ð"ð3
ús   ‚A AÁAÁAc              ƒ  óŠ   K  — t        |«      }| j                  |g||«      ƒ d {  –—† \  }}}}t        |d | «      |||fS 7 Œ­wr0   )Ú	bytearrayrÞ   rf   )	rJ   r  rÜ   r}   r=   r  rÕ   rÝ   r¼   s	            r   r  zFakeSocket._recvmsg  s[   è ø€ ô ˜Ó ˆØ8<×8JÑ8JØˆE�:˜uó9
÷ 3
Ñ/ˆ
�G˜Y¨ô �c˜+˜:Ð&Ó'¨°)¸WÐEÐEð3
ús   ‚#A¥A¦Ac                ó   — t        d«      ‚)Nz&can't get fileno() for FakeNet socketsrz   rŽ   s    r   ÚfilenozFakeSocket.fileno  s   € Ü!Ð"JÓKÐKr!   c                ó   — t        d«      ‚)Nzcan't detach() a FakeNet socketrz   rŽ   s    r   ÚdetachzFakeSocket.detach  s   € Ü!Ð"CÓDÐDr!   c                 ó   — y)NFrY   rŽ   s    r   Úget_inheritablezFakeSocket.get_inheritable  s   € Ør!   c                ó   — |rt        d«      ‚y )Nz&FakeNet can't make inheritable socketsrz   )rJ   Úinheritables     r   Úset_inheritablezFakeSocket.set_inheritable  s   € ÙÜ%Ð&NÓOÐOð r!   Úsharec                ó   — t        d«      ‚)NzFakeNet can't share socketsrz   )rJ   Ú
process_ids     r   r#  zFakeSocket.share"  s   € Ü%Ð&CÓDÐDr!   )rp   ro   r)   r   r|   r   ru   rE   )rR   r   )rR   r   )rR   rE   r¡   )r¼   Úobjectr\   ÚboolrR   ztuple[str, int]r£   )rÊ   r&  rR   r¢   )rÏ   r&  rR   r   )rY   r   N)
r;   úIterable[Buffer]rÕ   z!Iterable[tuple[int, int, Buffer]]r}   rE   r¼   z
Any | NonerR   rE   rH   )r;   r(  rÜ   rE   r}   rE   rR   z2tuple[int, list[tuple[int, int, bytes]], int, Any]rQ   )ræ   rE   rç   rE   rR   rE   )ræ   rE   rç   rE   rë   rE   rR   rf   r0   )ræ   rE   rç   rE   rë   ú
int | NonerR   zint | bytes)ræ   rE   rç   rE   rð   zint | BufferrR   r¢   )
ræ   rE   rç   rE   rð   r¢   rô   rE   rR   r¢   )
ræ   rE   rç   rE   rð   zint | Buffer | Nonerô   r)  rR   r¢   )rR   r   )rû   z#builtins.type[BaseException] | Nonerü   zBaseException | Nonerý   zTracebackType | NonerR   r¢   )r   )r:   r   r}   rE   rR   rE   )r  r   r  z!tuple[object, ...] | str | BufferrR   rE   )r  r   r  rE   r  z(tuple[object, ...] | str | None | BufferrR   rE   )r  r   rR   rE   )r  rE   r}   rE   rR   rf   )r=   r   r8   rE   r}   rE   rR   rE   )r  rE   r}   rE   rR   ztuple[bytes, Any])r=   r   r8   rE   r}   rE   rR   ztuple[int, Any])r  rE   rÜ   rE   r}   rE   rR   z4tuple[bytes, list[tuple[int, int, bytes]], int, Any])rR   r'  )r!  r'  rR   r¢   )r%  rE   rR   rf   )+rT   rU   rV   r�   Úpropertyr|   r)   ru   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#  rY   r!   r   rr   rr   È   s®  „ ð0àð0ð ð0ð ð	0ð
 ó0ð@ òó ðð òó ðð òó ðó#ó&ð

Øð

Ø)-ð

à	ó

ó4ó ó*Vð 68ØØ"ð%à!ð%ð 3ð%ð ð	%ð
 ð%ð 
ó%ðN ‡|�|�wÒÙ™g f§m¡m°YÔ?àˆð
 Øð	4à!ð4ð ð4ð ð	4ð
 
<ó4ð> ‡|�|�wÒÙ™g f§m¡m°YÔ?à$ˆóó"ð ÚAó ØAàÚPó ØPð AEðSØðSØ&)ðSØ3=ðSà	óSð ÚWó ØWàðØðØ&)ðØ26ðØ@Cðà	òó ðð "ðXð ðXð ð	Xð
 #ðXð ðXð 
óXó,ðà5ðð (ðð (ð	ð
 
óô4ð ðØðØ)Jðà	òó ðð ðàðð ðð <ð	ð
 
òó ðó?ôôôð
 :;ð#Øð#Ø#&ð#Ø36ð#à	ó#ð ?@ðFØðFØ(+ðFØ8;ðFà	=óFð ‡|�|�wÒÙ™g f§m¡m°YÔ?àˆóLóEóóPð ‡|�|�wÒÙ™g f§m¡m°WÔ=ô	Eð >ˆMr!   rr   )Ú	metaclass)r   r   rR   rE   )r)   rE   rR   r   )r4   rE   rR   r   )r:   rf   r;   r(  rR   rE   )4Ú
__future__r   rÁ   r‘   r   r2   r   r+  Útypingr   r   r   r   r   r	   r
   rk   r   Ú
trio._utilr   r   Úbuiltinsr   r   Útypesr   Útyping_extensionsr   r   r   r   r   r   rW   r    r*   r.   r5   r@   rA   ÚfrozenrB   r[   r^   ÚabcÚSocketFactoryrn   ÚHostnameResolverrw   ro   Ú
SocketTyperr   rY   r!   r   ú<module>r;     s‡  ðö #ã Û Û Û 	Û Û 
÷÷ ñ ó ã ß 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ð8 ÷ ð  ó ð ðF ôZE�—‘×'Ñ'Ð3Fô ZEó ñZEr!   