§
    *‚Kgð�  ã                   óø  — d Z d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 ddl	mZ ddl	mZ dd	l	mZ dd
l	mZ ddl	mZ ddl	mZ ddlmZ d„ Z G d„ dej        ej        ¦  «        Z G d„ deej        ¦  «        Z G d„ deej        ¦  «        Z G d„ de¦  «        Z G d„ deej        ¦  «        Z G d„ deeej        ¦  «        Z  G d„ deeej        ¦  «        Z! G d„ de
j"        ¦  «        Z#dS )z¦Event loop using a proactor and related classes.

A proactor is a "notify-on-completion" multiplexer.  Currently a
proactor is only implemented on Windows with IOCP.
)ÚBaseProactorEventLoopé    Né   )Úbase_events)Ú	constants)Úfutures)Ú
exceptions)Ú	protocols)Ússlproto)Ú
transports)Útrsock)Úloggerc                 ó”  — t          j        |¦  «        | j        d<   	 |                     ¦   «         | j        d<   nE# t          j        $ r3 | j                             ¦   «         rt          j	        d|d¬¦  «         Y nw xY wd| j        vr?	 | 
                    ¦   «         | j        d<   d S # t          j        $ r d | j        d<   Y d S w xY wd S )NÚsocketÚsocknamezgetsockname() failed on %rT©Úexc_infoÚpeername)r   ÚTransportSocketÚ_extraÚgetsocknamer   ÚerrorÚ_loopÚ	get_debugr   ÚwarningÚgetpeername)Ú	transportÚsocks     ú./usr/lib/python3.11/asyncio/proactor_events.pyÚ_set_socket_extrar      s	  € Ý!'Ô!7¸Ñ!=Ô!=€IÔ�XÑðCØ'+×'7Ò'7Ñ'9Ô'9ˆ	Ô˜Ñ$Ð$øÝŒ<ð Cð Cð CØŒ?×$Ò$Ñ&Ô&ð 	CÝŒNØ,¨d¸TðCñ Cô Cð CøøðCøøøð
 ˜Ô)Ð)Ð)ð	0Ø+/×+;Ò+;Ñ+=Ô+=ˆIÔ˜ZÑ(Ð(Ð(øÝŒ|ð 	0ð 	0ð 	0à+/ˆIÔ˜ZÑ(Ð(Ð(Ð(ð	0øøøð *Ð)s!   ž; »?A=Á<A=Â
B( Â(CÃCc                   óz   ‡ — e Zd ZdZ	 	 dˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
ej        fd
„Zdd„Zd„ Zd„ Zd„ Zˆ xZS )Ú_ProactorBasePipeTransportz*Base class for pipe and socket transports.Nc                 ó
  •— t          ¦   «                              ||¦  «         |                      |¦  «         || _        |                      |¦  «         || _        d | _        d | _        d | _        d| _	        d| _
        d| _        d| _        d| _        | j        �| j                             ¦   «          | j                             | j        j        | ¦  «         |�(| j                             t&          j        |d ¦  «         d S d S )Nr   F)ÚsuperÚ__init__Ú
_set_extraÚ_sockÚset_protocolÚ_serverÚ_bufferÚ	_read_futÚ
_write_futÚ_pending_writeÚ
_conn_lostÚ_closingÚ_called_connection_lostÚ_eof_writtenÚ_attachr   Ú	call_soonÚ	_protocolÚconnection_mader   Ú_set_result_unless_cancelled©ÚselfÚloopr   ÚprotocolÚwaiterÚextraÚserverÚ	__class__s          €r   r$   z#_ProactorBasePipeTransport.__init__2   s  ø€ å‰Œ×Ò˜ Ñ%Ô%Ð%Ø�Š˜ÑÔÐØˆŒ
Ø×Ò˜(Ñ#Ô#Ð#ØˆŒØˆŒØˆŒØˆŒØˆÔØˆŒØˆŒØ',ˆÔ$Ø!ˆÔØŒ<Ð#ØŒL× Ò Ñ"Ô"Ð"ØŒ
×Ò˜Tœ^Ô;¸TÑBÔBÐBØÐàŒJ× Ò ¥Ô!EØ!'¨ñ/ô /ð /ð /ð /ð Ðó    c                 ót  — | j         j        g}| j        €|                     d¦  «         n| j        r|                     d¦  «         | j        �/|                     d| j                             ¦   «         › �¦  «         | j        �|                     d| j        ›�¦  «         | j        �|                     d| j        ›�¦  «         | j        r*|                     dt          | j        ¦  «        › �¦  «         | j
        r|                     d¦  «         d                     d	                     |¦  «        ¦  «        S )
NÚclosedÚclosingzfd=zread=zwrite=zwrite_bufsize=zEOF writtenz<{}>ú )r=   Ú__name__r&   Úappendr.   Úfilenor*   r+   r)   Úlenr0   ÚformatÚjoin)r7   Úinfos     r   Ú__repr__z#_ProactorBasePipeTransport.__repr__I   s+  € Ø”Ô'Ð(ˆØŒ:ÐØ�KŠK˜Ñ!Ô!Ð!Ð!ØŒ]ð 	#Ø�KŠK˜	Ñ"Ô"Ð"ØŒ:Ð!Ø�KŠKÐ3˜dœj×/Ò/Ñ1Ô1Ð3Ð3Ñ4Ô4Ð4ØŒ>Ð%Ø�KŠKÐ2 ¤Ð2Ð2Ñ3Ô3Ð3ØŒ?Ð&Ø�KŠKÐ4 ¤Ð4Ð4Ñ5Ô5Ð5ØŒ<ð 	>Ø�KŠKÐ<­¨T¬\Ñ):Ô):Ð<Ð<Ñ=Ô=Ð=ØÔð 	'Ø�KŠK˜Ñ&Ô&Ð&Ø�}Š}˜SŸXšX d™^œ^Ñ,Ô,Ð,r>   c                 ó   — || j         d<   d S )NÚpipe)r   ©r7   r   s     r   r%   z%_ProactorBasePipeTransport._set_extra[   s   € Ø"ˆŒ�FÑÐÐr>   c                 ó   — || _         d S ©N©r3   )r7   r9   s     r   r'   z'_ProactorBasePipeTransport.set_protocol^   s   € Ø!ˆŒˆˆr>   c                 ó   — | j         S rO   rP   ©r7   s    r   Úget_protocolz'_ProactorBasePipeTransport.get_protocola   s
   € ØŒ~Ðr>   c                 ó   — | j         S rO   )r.   rR   s    r   Ú
is_closingz%_ProactorBasePipeTransport.is_closingd   s
   € ØŒ}Ðr>   c                 óô   — | j         rd S d| _         | xj        dz  c_        | j        s'| j        € | j                             | j        d ¦  «         | j        �"| j                             ¦   «          d | _        d S d S )NTr   )	r.   r-   r)   r+   r   r2   Ú_call_connection_lostr*   ÚcancelrR   s    r   Úclosez _ProactorBasePipeTransport.closeg   s„   € ØŒ=ð 	ØˆFØˆŒØˆŒ˜1ÑˆŒØŒ|ð 	C ¤Ð 7ØŒJ× Ò  Ô!;¸TÑBÔBÐBØŒ>Ð%ØŒN×!Ò!Ñ#Ô#Ð#Ø!ˆDŒNˆNˆNð &Ð%r>   c                 óv   — | j         �1 |d| ›�t          | ¬¦  «         | j                              ¦   «          d S d S )Nzunclosed transport )Úsource)r&   ÚResourceWarningrY   )r7   Ú_warns     r   Ú__del__z"_ProactorBasePipeTransport.__del__r   sL   € ØŒ:Ð!ØˆEÐ0¨Ð0Ð0µ/È$ÐOÑOÔOÐOØŒJ×ÒÑÔÐÐÐð "Ð!r>   úFatal error on pipe transportc                 ó<  — 	 t          |t          ¦  «        r2| j                             ¦   «         rt	          j        d| |d¬¦  «         n$| j                             ||| | j        dœ¦  «         |                      |¦  «         d S # |                      |¦  «         w xY w)Nz%r: %sTr   )ÚmessageÚ	exceptionr   r9   )	Ú
isinstanceÚOSErrorr   r   r   ÚdebugÚcall_exception_handlerr3   Ú_force_close)r7   Úexcra   s      r   Ú_fatal_errorz'_ProactorBasePipeTransport._fatal_errorw   s²   € ð	#Ý˜#�wÑ'Ô'ð 	Ø”:×'Ò'Ñ)Ô)ð IÝ”L ¨4°À4ÐHÑHÔHÐHøà”
×1Ò1Ø&Ø!$Ø!%Ø $¤ð	3ð 3ñ ô ð ð ×Ò˜cÑ"Ô"Ð"Ð"Ð"øˆD×Ò˜cÑ"Ô"Ð"Ð"øøøs   ‚A+B ÂBc                 óú  — | j         �P| j                              ¦   «         s7|€| j                              d ¦  «         n| j                              |¦  «         | j        r	| j        rd S d| _        | xj        dz  c_        | j        r | j                             ¦   «          d | _        | j	        r | j	                             ¦   «          d | _	        d| _
        d | _        | j                             | j        |¦  «         d S )NTr   r   )Ú_empty_waiterÚdoneÚ
set_resultÚset_exceptionr.   r/   r-   r+   rX   r*   r,   r)   r   r2   rW   )r7   rh   s     r   rg   z'_ProactorBasePipeTransport._force_close†   sÿ   € ØÔÐ)°$Ô2D×2IÒ2IÑ2KÔ2KÐ)Øˆ{ØÔ"×-Ò-¨dÑ3Ô3Ð3Ð3àÔ"×0Ò0°Ñ5Ô5Ð5ØŒ=ð 	˜TÔ9ð 	ØˆFØˆŒØˆŒ˜1ÑˆŒØŒ?ð 	#ØŒO×"Ò"Ñ$Ô$Ð$Ø"ˆDŒOØŒ>ð 	"ØŒN×!Ò!Ñ#Ô#Ð#Ø!ˆDŒNØˆÔØˆŒØŒ
×Ò˜TÔ7¸Ñ=Ô=Ð=Ð=Ð=r>   c                 óÜ  — | j         rd S 	 | j                             |¦  «         t          | j        d¦  «        rA| j                             ¦   «         dk    r$| j                             t          j        ¦  «         | j         	                    ¦   «          d | _        | j
        }|�|                     ¦   «          d | _
        d| _         d S # t          | j        d¦  «        rA| j                             ¦   «         dk    r$| j                             t          j        ¦  «         | j         	                    ¦   «          d | _        | j
        }|�|                     ¦   «          d | _
        d| _         w xY w)NÚshutdownéÿÿÿÿT)r/   r3   Úconnection_lostÚhasattrr&   rE   rp   r   Ú	SHUT_RDWRrY   r(   Ú_detach)r7   rh   r<   s      r   rW   z0_ProactorBasePipeTransport._call_connection_lostš   s\  € ØÔ'ð 	ØˆFð	0ØŒN×*Ò*¨3Ñ/Ô/Ð/õ �t”z :Ñ.Ô.ð 6°4´:×3DÒ3DÑ3FÔ3FÈ"Ò3LÐ3LØ”
×#Ò#¥FÔ$4Ñ5Ô5Ð5ØŒJ×ÒÑÔÐØˆDŒJØ”\ˆFØÐ!Ø—’Ñ Ô Ð Ø#�”Ø+/ˆDÔ(Ð(Ð(øõ �t”z :Ñ.Ô.ð 6°4´:×3DÒ3DÑ3FÔ3FÈ"Ò3LÐ3LØ”
×#Ò#¥FÔ$4Ñ5Ô5Ð5ØŒJ×ÒÑÔÐØˆDŒJØ”\ˆFØÐ!Ø—’Ñ Ô Ð Ø#�”Ø+/ˆDÔ(Ð/Ð/Ð/Ð/s   ‹C ÃB#E+c                 óP   — | j         }| j        �|t          | j        ¦  «        z  }|S rO   )r,   r)   rF   )r7   Úsizes     r   Úget_write_buffer_sizez0_ProactorBasePipeTransport.get_write_buffer_size®   s+   € ØÔ"ˆØŒ<Ð#Ø•C˜œÑ%Ô%Ñ%ˆDØˆr>   ©NNN)r_   )rC   Ú
__module__Ú__qualname__Ú__doc__r$   rJ   r%   r'   rS   rU   rY   ÚwarningsÚwarnr^   ri   rg   rW   rx   Ú__classcell__©r=   s   @r   r!   r!   .   sÿ   ø€ € € € € à4Ð4à48Ø$(ð/ð /ð /ð /ð /ð /ð.-ð -ð -ð$#ð #ð #ð"ð "ð "ðð ð ðð ð ð	"ð 	"ð 	"ð %œMð ð ð ð ð
#ð #ð #ð #ð>ð >ð >ð(0ð 0ð 0ð(ð ð ð ð ð ð r>   r!   c                   óN   ‡ — e Zd ZdZ	 	 dˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd	„ Z	dd
„Z
ˆ xZS )Ú_ProactorReadPipeTransportzTransport for read pipes.Né   c                 óä   •— d| _         d| _        t          ¦   «                              ||||||¦  «         t	          |¦  «        | _        | j                             | j        ¦  «         d| _        d S )Nrq   TF)	Ú_pending_data_lengthÚ_pausedr#   r$   Ú	bytearrayÚ_datar   r2   Ú_loop_reading)	r7   r8   r   r9   r:   r;   r<   Úbuffer_sizer=   s	           €r   r$   z#_ProactorReadPipeTransport.__init__¹   sg   ø€ à$&ˆÔ!ØˆŒÝ‰Œ×Ò˜˜t X¨v°u¸fÑEÔEÐEå˜{Ñ+Ô+ˆŒ
ØŒ
×Ò˜TÔ/Ñ0Ô0Ð0ØˆŒˆˆr>   c                 ó"   — | j          o| j         S rO   )r†   r.   rR   s    r   Ú
is_readingz%_ProactorReadPipeTransport.is_readingÃ   s   € Ø”<ÐÐ5¨¬Ð$5Ð5r>   c                 ó”   — | j         s| j        rd S d| _        | j                             ¦   «         rt	          j        d| ¦  «         d S d S )NTz%r pauses reading)r.   r†   r   r   r   re   rR   s    r   Úpause_readingz(_ProactorReadPipeTransport.pause_readingÆ   s\   € ØŒ=ð 	˜DœLð 	ØˆFØˆŒð Œ:×ÒÑ!Ô!ð 	4ÝŒLÐ,¨dÑ3Ô3Ð3Ð3Ð3ð	4ð 	4r>   c                 óf  — | j         s| j        sd S d| _        | j        € | j                             | j        d ¦  «         | j        }d| _        |dk    r.| j                             | j        | j        d |…         |¦  «         | j         	                    ¦   «         rt          j        d| ¦  «         d S d S )NFrq   z%r resumes reading)r.   r†   r*   r   r2   r‰   r…   Ú_data_receivedrˆ   r   r   re   )r7   Úlengths     r   Úresume_readingz)_ProactorReadPipeTransport.resume_readingÙ   sÀ   € ØŒ=ð 	 ¤ð 	ØˆFàˆŒØŒ>Ð!ØŒJ× Ò  Ô!3°TÑ:Ô:Ð:àÔ*ˆØ$&ˆÔ!Ø�BŠ;ˆ;ð ŒJ× Ò  Ô!4°d´jÀÀ&ÀÔ6IÈ6ÑRÔRÐRàŒ:×ÒÑ!Ô!ð 	5ÝŒLÐ-¨tÑ4Ô4Ð4Ð4Ð4ð	5ð 	5r>   c                 óF  — | j                              ¦   «         rt          j        d| ¦  «         	 | j                             ¦   «         }n?# t          t          f$ r ‚ t          $ r!}|  	                    |d¦  «         Y d }~d S d }~ww xY w|s|  
                    ¦   «          d S d S )Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.)r   r   r   re   r3   Úeof_receivedÚ
SystemExitÚKeyboardInterruptÚBaseExceptionri   rY   )r7   Ú	keep_openrh   s      r   Ú_eof_receivedz(_ProactorReadPipeTransport._eof_receivedë   sÒ   € ØŒ:×ÒÑ!Ô!ð 	2ÝŒLÐ*¨DÑ1Ô1Ð1ð	Øœ×3Ò3Ñ5Ô5ˆIˆIøÝÕ-Ð.ð 	ð 	ð 	ØÝð 	ð 	ð 	Ø×ÒØÐHñJô Jð JàˆFˆFˆFˆFˆFøøøøð	øøøð
 ð 	Ø�JŠJ‰LŒLˆLˆLˆLð	ð 	s   °A
 Á
BÁ%BÂBc                 ó¢  — | j         r| j        dk    sJ ‚|| _        d S |dk    r|                      ¦   «          d S t          | j        t
          j        ¦  «        r\	 t          j        | j        |¦  «         d S # t          t          f$ r ‚ t          $ r!}|                      |d¦  «         Y d }~d S d }~ww xY w| j                             |¦  «         d S )Nrq   r   z3Fatal error: protocol.buffer_updated() call failed.)r†   r…   r™   rc   r3   r	   ÚBufferedProtocolÚ_feed_data_to_buffered_protor•   r–   r—   ri   Údata_received)r7   Údatar‘   rh   s       r   r�   z)_ProactorReadPipeTransport._data_receivedû   s  € ØŒ<ð 	ð Ô,°Ò2Ð2Ð2Ð2Ø(.ˆDÔ%ØˆFà�QŠ;ˆ;Ø×ÒÑ Ô Ð ØˆFå�d”n¥iÔ&@ÑAÔAð 	/ðÝÔ6°t´~ÀtÑLÔLÐLÐLÐLøÝÕ 1Ð2ð ð ð ØÝ ð ð ð Ø×!Ò! #ð#1ñ2ô 2ð 2ð �����øøøøð	øøøð ŒN×(Ò(¨Ñ.Ô.Ð.Ð.Ð.s   ÁA6 Á6B2ÂB-Â-B2c                 óZ  — d}d }	 |�“| j         |u s| j         €| j        sJ ‚d | _         |                     ¦   «         rK|                     ¦   «         }|dk    r!	 |dk    r|                      ||¦  «         d S d S | j        d |…         }n|                     ¦   «          | j        r!	 |dk    r|                      ||¦  «         d S d S | j        s/| j        j	         
                    | j        | j        ¦  «        | _         | j        s| j                              | j        ¦  «         nË# t          $ rW}| j        s|                      |d¦  «         n/| j                             ¦   «         rt#          j        dd¬¦  «         Y d }~nod }~wt&          $ r}|                      |¦  «         Y d }~nHd }~wt*          $ r }|                      |d¦  «         Y d }~n d }~wt,          j        $ r | j        s‚ Y nw xY w|dk    r|                      ||¦  «         d S d S # |dk    r|                      ||¦  «         w w xY w)Nrq   r   z"Fatal read error on pipe transportz*Read error on pipe transport while closingTr   )r*   r.   rl   Úresultr�   rˆ   rX   r†   r   Ú	_proactorÚ	recv_intor&   Úadd_done_callbackr‰   ÚConnectionAbortedErrorri   r   r   re   ÚConnectionResetErrorrg   rd   r   ÚCancelledError)r7   Úfutr‘   rž   rh   s        r   r‰   z(_ProactorReadPipeTransport._loop_reading  sÈ  € ØˆØˆð-	2ØˆØ”~¨Ð,Ð,°´Ð1GØ15´ð 2HÐ1GÐ1Gà!%�”Ø—8’8‘:”:ð 
!à ŸZšZ™\œ\�FØ ’{�{àðD ˜Š{ˆ{Ø×#Ò# D¨&Ñ1Ô1Ð1Ð1Ð1ð ˆ{ðA  œ: g v gÔ.�D�Dð —J’J‘L”L�LàŒ}ð àð2 ˜Š{ˆ{Ø×#Ò# D¨&Ñ1Ô1Ð1Ð1Ð1ð ˆ{ð) ”<ð Xà!%¤Ô!5×!?Ò!?ÀÄ
ÈDÌJÑ!WÔ!W�”ð ”<ð EØ”×0Ò0°Ô1CÑDÔDÐDøøõ &ð 	,ð 	,ð 	,Ø”=ð ,Ø×!Ò! #Ð'KÑLÔLÐLÐLØ”×%Ò%Ñ'Ô'ð ,Ý”ÐIØ&*ð,ñ ,ô ,ð ,øøøøøøøøøå#ð 	#ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"øøøøÝð 	Ið 	Ið 	IØ×Ò˜cÐ#GÑHÔHÐHÐHÐHÐHÐHÐHøøøøÝÔ(ð 	ð 	ð 	Ø”=ð Øðð ð	øøøð ˜Š{ˆ{Ø×#Ò# D¨&Ñ1Ô1Ð1Ð1Ð1ð ˆ{øˆv˜Š{ˆ{Ø×#Ò# D¨&Ñ1Ô1Ð1Ð1ð øøøsm   †AD  Á7+D  Ã6D  Ã9'H Ä 
G(Ä*AE<Å7H Å<G(Æ	F#ÆH Æ#G(Æ0GÇH ÇG(Ç%H Ç'G(Ç(H ÈH*)NNNrƒ   rO   )rC   rz   r{   r|   r$   rŒ   rŽ   r’   r™   r�   r‰   r   r€   s   @r   r‚   r‚   µ   s¨   ø€ € € € € à#Ð#à48Ø6;ðð ð ð ð ð ð6ð 6ð 6ð4ð 4ð 4ð&5ð 5ð 5ð$ð ð ð /ð /ð /ð202ð 02ð 02ð 02ð 02ð 02ð 02ð 02r>   r‚   c                   óR   ‡ — e Zd ZdZdZˆ fd„Zd„ Zdd„Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zˆ xZS )Ú_ProactorBaseWritePipeTransportzTransport for write pipes.Tc                 óH   •—  t          ¦   «         j        |i |¤Ž d | _        d S rO   )r#   r$   rk   ©r7   ÚargsÚkwr=   s      €r   r$   z(_ProactorBaseWritePipeTransport.__init__M  s-   ø€ Ø�‰ŒÔ˜$Ð% "Ð%Ð%Ð%Ø!ˆÔÐÐr>   c                 óž  — t          |t          t          t          f¦  «        s$t	          dt          |¦  «        j        › �¦  «        ‚| j        rt          d¦  «        ‚| j	        �t          d¦  «        ‚|sd S | j
        r;| j
        t          j        k    rt          j        d¦  «         | xj
        dz  c_
        d S | j        €.| j        �J ‚|                      t          |¦  «        ¬¦  «         d S | j        s*t          |¦  «        | _        |                      ¦   «          d S | j                             |¦  «         |                      ¦   «          d S )Nz/data argument must be a bytes-like object, not zwrite_eof() already calledz(unable to write; sendfile is in progresszsocket.send() raised exception.r   )rž   )rc   Úbytesr‡   Ú
memoryviewÚ	TypeErrorÚtyperC   r0   ÚRuntimeErrorrk   r-   r   Ú!LOG_THRESHOLD_FOR_CONNLOST_WRITESr   r   r+   r)   Ú_loop_writingÚ_maybe_pause_protocolÚextend)r7   rž   s     r   Úwritez%_ProactorBaseWritePipeTransport.writeQ  sc  € Ý˜$¥­	µ:Ð >Ñ?Ô?ð 	.Ýð-Ý˜D‘z”zÔ*ð-ð -ñ.ô .ð .ð Ôð 	=ÝÐ;Ñ<Ô<Ð<ØÔÐ)ÝÐIÑJÔJÐJàð 	ØˆFàŒ?ð 	ØŒ¥)Ô"MÒMÐMÝ”Ð@ÑAÔAÐAØˆOŒO˜qÑ ˆOŒOØˆFð Œ?Ð"Ø”<Ð'Ð'Ð'à×Ò¥E¨$¡K¤KÐÑ0Ô0Ð0Ð0Ð0Ø”ð 	)å$ T™?œ?ˆDŒLØ×&Ò&Ñ(Ô(Ð(Ð(Ð(ð ŒL×Ò Ñ%Ô%Ð%Ø×&Ò&Ñ(Ô(Ð(Ð(Ð(r>   Nc                 óî  — 	 |�| j         €	| j        rd S || j         u sJ ‚d | _         d| _        |r|                     ¦   «          |€| j        }d | _        |sg| j        r | j                             | j        d ¦  «         | j        r$| j	         
                    t          j        ¦  «         |                      ¦   «          n·| j        j                             | j	        |¦  «        | _         | j                              ¦   «         sU| j        dk    sJ ‚t#          |¦  «        | _        | j                              | j        ¦  «         |                      ¦   «          n| j                              | j        ¦  «         | j        �#| j         €| j                             d ¦  «         d S d S d S # t.          $ r }|                      |¦  «         Y d }~d S d }~wt2          $ r!}|                      |d¦  «         Y d }~d S d }~ww xY w)Nr   z#Fatal write error on pipe transport)r+   r.   r,   r    r)   r   r2   rW   r0   r&   rp   r   ÚSHUT_WRÚ_maybe_resume_protocolr¡   Úsendrl   rF   r£   rµ   r¶   rk   rm   r¥   rg   rd   ri   )r7   Úfrž   rh   s       r   rµ   z-_ProactorBaseWritePipeTransport._loop_writingw  s6  € ð&	JØˆ} ¤Ð!8¸T¼]Ð!8ð �Ø˜œÐ'Ð'Ð'Ð'Ø"ˆDŒOØ"#ˆDÔØð Ø—’‘
”
�
Øˆ|Ø”|�Ø#�”Øð JØ”=ð KØ”J×(Ò(¨Ô)CÀTÑJÔJÐJØÔ$ð 8Ø”J×'Ò'­¬Ñ7Ô7Ð7ð ×+Ò+Ñ-Ô-Ð-Ð-à"&¤*Ô"6×";Ò";¸D¼JÈÑ"MÔ"M�”Ø”×+Ò+Ñ-Ô-ð JØÔ.°!Ò3Ð3Ð3Ð3Ý*-¨d©)¬)�DÔ'Ø”O×5Ò5°dÔ6HÑIÔIÐIØ×.Ò.Ñ0Ô0Ð0Ð0à”O×5Ò5°dÔ6HÑIÔIÐIØÔ!Ð-°$´/Ð2IØÔ"×-Ò-¨dÑ3Ô3Ð3Ð3Ð3ð .Ð-Ð2IÐ2Iøå#ð 	#ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"øøøøÝð 	Jð 	Jð 	JØ×Ò˜cÐ#HÑIÔIÐIÐIÐIÐIÐIÐIÐIøøøøð	Jøøøs)   ‚F! ”FF! Æ!
G4Æ+GÇG4ÇG/Ç/G4c                 ó   — dS ©NT© rR   s    r   Úcan_write_eofz-_ProactorBaseWritePipeTransport.can_write_eof   ó   € Øˆtr>   c                 ó.   — |                       ¦   «          d S rO   )rY   rR   s    r   Ú	write_eofz)_ProactorBaseWritePipeTransport.write_eof£  s   € Ø�
Š
‰Œˆˆˆr>   c                 ó0   — |                       d ¦  «         d S rO   ©rg   rR   s    r   Úabortz%_ProactorBaseWritePipeTransport.abort¦  ó   € Ø×Ò˜$ÑÔÐÐÐr>   c                 óº   — | j         �t          d¦  «        ‚| j                             ¦   «         | _         | j        €| j                              d ¦  «         | j         S )NzEmpty waiter is already set)rk   r³   r   Úcreate_futurer+   rm   rR   s    r   Ú_make_empty_waiterz2_ProactorBaseWritePipeTransport._make_empty_waiter©  sX   € ØÔÐ)ÝÐ<Ñ=Ô=Ð=Ø!œZ×5Ò5Ñ7Ô7ˆÔØŒ?Ð"ØÔ×)Ò)¨$Ñ/Ô/Ð/ØÔ!Ð!r>   c                 ó   — d | _         d S rO   )rk   rR   s    r   Ú_reset_empty_waiterz3_ProactorBaseWritePipeTransport._reset_empty_waiter±  s   € Ø!ˆÔÐÐr>   ©NN)rC   rz   r{   r|   Ú_start_tls_compatibler$   r¸   rµ   rÁ   rÄ   rÇ   rË   rÍ   r   r€   s   @r   r©   r©   G  s¸   ø€ € € € € à$Ð$à Ðð"ð "ð "ð "ð "ð$)ð $)ð $)ðL'Jð 'Jð 'Jð 'JðRð ð ðð ð ð ð  ð  ð"ð "ð "ð"ð "ð "ð "ð "ð "ð "r>   r©   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú_ProactorWritePipeTransportc                 óÌ   •—  t          ¦   «         j        |i |¤Ž | j        j                             | j        d¦  «        | _        | j                             | j        ¦  «         d S )Né   )	r#   r$   r   r¡   Úrecvr&   r*   r£   Ú_pipe_closedr«   s      €r   r$   z$_ProactorWritePipeTransport.__init__¶  s\   ø€ Ø�‰ŒÔ˜$Ð% "Ð%Ð%Ð%ØœÔ-×2Ò2°4´:¸rÑBÔBˆŒØŒ×(Ò(¨Ô):Ñ;Ô;Ð;Ð;Ð;r>   c                 óH  — |                      ¦   «         rd S |                     ¦   «         dk    sJ ‚| j        r| j        �J ‚d S || j        u sJ || j        f¦   «         ‚d | _        | j        �#|                      t          ¦   «         ¦  «         d S |                      ¦   «          d S )Nr>   )Ú	cancelledr    r.   r*   r+   rg   ÚBrokenPipeErrorrY   )r7   r§   s     r   rÕ   z(_ProactorWritePipeTransport._pipe_closed»  s¯   € Ø�=Š=‰?Œ?ð 	àˆFØ�zŠz‰|Œ|˜sÒ"Ð"Ð"Ð"ØŒ=ð 	Ø”>Ð)Ð)Ð)ØˆFØ�d”nÐ$Ð$Ð$ s¨D¬NÐ&;Ñ$Ô$Ð$ØˆŒØŒ?Ð&Ø×Ò�oÑ/Ô/Ñ0Ô0Ð0Ð0Ð0à�JŠJ‰LŒLˆLˆLˆLr>   )rC   rz   r{   r$   rÕ   r   r€   s   @r   rÑ   rÑ   µ  sG   ø€ € € € € ð<ð <ð <ð <ð <ð
ð ð ð ð ð ð r>   rÑ   c                   óR   ‡ — e Zd ZdZ	 	 d
ˆ fd„	Zd„ Zd„ Zd„ Zdd„Zdd„Z	dd	„Z
ˆ xZS )Ú_ProactorDatagramTransporti   Nc                 óì   •— || _         d | _        d| _        t          ¦   «                              |||||¬¦  «         t          j        ¦   «         | _        | j         	                    | j
        ¦  «         d S )Nr   )r:   r;   )Ú_addressrk   Ú_buffer_sizer#   r$   ÚcollectionsÚdequer)   r   r2   r‰   )r7   r8   r   r9   Úaddressr:   r;   r=   s          €r   r$   z#_ProactorDatagramTransport.__init__Î  sp   ø€ àˆŒØ!ˆÔØˆÔõ 	‰Œ×Ò˜˜t X°fÀEÐÑJÔJÐJõ #Ô(Ñ*Ô*ˆŒØŒ
×Ò˜TÔ/Ñ0Ô0Ð0Ð0Ð0r>   c                 ó&   — t          | |¦  «         d S rO   ©r   rM   s     r   r%   z%_ProactorDatagramTransport._set_extraÛ  ó   € Ý˜$ Ñ%Ô%Ð%Ð%Ð%r>   c                 ó   — | j         S rO   )rÝ   rR   s    r   rx   z0_ProactorDatagramTransport.get_write_buffer_sizeÞ  s   € ØÔ Ð r>   c                 ó0   — |                       d ¦  «         d S rO   rÆ   rR   s    r   rÇ   z _ProactorDatagramTransport.abortá  rÈ   r>   c                 óZ  — t          |t          t          t          f¦  «        st	          dt          |¦  «        ¦  «        ‚|sd S | j        �"|d | j        fvrt          d| j        › �¦  «        ‚| j        rB| j        r;| j        t          j
        k    rt          j        d¦  «         | xj        dz  c_        d S | j                             t          |¦  «        |f¦  «         | xj        t!          |¦  «        z  c_        | j        €|                      ¦   «          |                      ¦   «          d S )Nz,data argument must be bytes-like object (%r)z!Invalid address: must be None or z!socket.sendto() raised exception.r   )rc   r¯   r‡   r°   r±   r²   rÜ   Ú
ValueErrorr-   r   r´   r   r   r)   rD   rÝ   rF   r+   rµ   r¶   )r7   rž   Úaddrs      r   Úsendtoz!_ProactorDatagramTransport.sendtoä  s?  € Ý˜$¥­	µ:Ð >Ñ?Ô?ð 	(ÝÐJÝ  ™JœJñ(ô (ð (ð ð 	ØˆFàŒ=Ð$¨°d¸D¼MÐ5JÐ)JÐ)JÝØC°D´MÐCÐCñEô Eð Eð Œ?ð 	˜tœ}ð 	ØŒ¥)Ô"MÒMÐMÝ”ÐBÑCÔCÐCØˆOŒO˜qÑ ˆOŒOØˆFð 	Œ×Ò�U 4™[œ[¨$Ð/Ñ0Ô0Ð0ØÐÔ�S ™YœYÑ&ÐÔàŒ?Ð"à×ÒÑ Ô Ð ð 	×"Ò"Ñ$Ô$Ð$Ð$Ð$r>   c                 ó0  — 	 | j         rd S || j        u sJ ‚d | _        |r|                     ¦   «          | j        r| j         r0| j        r)| j        r | j                             | j        d ¦  «         d S | j         	                    ¦   «         \  }}| xj
        t          |¦  «        z  c_
        | j        �+| j        j                             | j        |¦  «        | _        n,| j        j                             | j        ||¬¦  «        | _        | j                             | j        ¦  «         |                      ¦   «          d S # t&          $ r%}| j                             |¦  «         Y d }~d S d }~wt,          $ r!}|                      |d¦  «         Y d }~d S d }~ww xY w)N)rè   z'Fatal write error on datagram transport)r-   r+   r    r)   rÜ   r.   r   r2   rW   ÚpopleftrÝ   rF   r¡   r¼   r&   ré   r£   rµ   r»   rd   r3   Úerror_receivedÚ	Exceptionri   )r7   r§   rž   rè   rh   s        r   rµ   z(_ProactorDatagramTransport._loop_writing  sÚ  € ð	*ØŒð Ø�à˜$œ/Ð)Ð)Ð)Ð)Ø"ˆDŒOØð à—
’
‘”�à”<ð  D¤Oð ¸¼ð à”=ð KØ”J×(Ò(¨Ô)CÀTÑJÔJÐJØ�àœ×-Ò-Ñ/Ô/‰JˆD�$ØÐÔ¥ T¡¤Ñ*ÐÔØŒ}Ð(Ø"&¤*Ô"6×";Ò";¸D¼JØ<@ñ#Bô #B�”�ð #'¤*Ô"6×"=Ò"=¸d¼jØ>BØCGð #>ñ #Iô #I�”ð ŒO×-Ò-¨dÔ.@ÑAÔAÐAØ×'Ò'Ñ)Ô)Ð)Ð)Ð)øõ ð 	/ð 	/ð 	/ØŒN×)Ò)¨#Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.øøøøÝð 	Nð 	Nð 	NØ×Ò˜cÐ#LÑMÔMÐMÐMÐMÐMÐMÐMÐMøøøøð	Nøøøs0   ‚D= ‹A$D= Á1BD= Ä=
FÅE'Å'FÅ4FÆFc                 óÎ  — d }	 | j         r"	 |r| j                             ||¦  «         d S d S | j        |u s| j        €| j        sJ ‚d | _        |�U|                     ¦   «         }| j        r$d }	 |r| j                             ||¦  «         d S d S | j        �
|| j        }}n|\  }}| j         r"	 |r| j                             ||¦  «         d S d S | j        �0| j        j         	                    | j
        | j        ¦  «        | _        n/| j        j                             | j
        | j        ¦  «        | _        | j        �| j                             | j        ¦  «         nI# t          $ r$}| j                             |¦  «         Y d }~n d }~wt"          j        $ r | j        s‚ Y nw xY w|r| j                             ||¦  «         d S d S # |r| j                             ||¦  «         w w xY wrO   )r-   r3   Údatagram_receivedr*   r.   r    rÜ   r   r¡   rÔ   r&   Úmax_sizeÚrecvfromr£   r‰   rd   rì   r   r¦   )r7   r§   rž   rè   Úresrh   s         r   r‰   z(_ProactorDatagramTransport._loop_reading#  s�  € Øˆð'	=ØŒð ØðH ð =Ø”×0Ò0°°tÑ<Ô<Ð<Ð<Ð<ð=ð =ðE ”> SÐ(Ð(¨T¬^Ð-CØ-1¬]ð .DÐ-CÐ-Cð "ˆDŒNØˆØ—j’j‘l”l�à”=ð à�DØð0 ð =Ø”×0Ò0°°tÑ<Ô<Ð<Ð<Ð<ð=ð =ð- ”=Ð,Ø!$ d¤m˜$�D�Dà!$‘J�D˜$àŒð Øð  ð =Ø”×0Ò0°°tÑ<Ô<Ð<Ð<Ð<ð=ð =ð Œ}Ð(Ø!%¤Ô!5×!:Ò!:¸4¼:Ø;?¼=ñ"Jô "J�”�ð "&¤Ô!5×!>Ò!>¸t¼zØ?C¼}ñ"Nô "N�”ð Œ~Ð)Ø”×0Ò0°Ô1CÑDÔDÐDøøõ ð 	/ð 	/ð 	/ØŒN×)Ò)¨#Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.øøøøÝÔ(ð 	ð 	ð 	Ø”=ð Øðð ð	øøøð ð =Ø”×0Ò0°°tÑ<Ô<Ð<Ð<Ð<ð=ð =øˆtð =Ø”×0Ò0°°tÑ<Ô<Ð<Ð<ð=øøøsM   „E ­?E ÂE ÃA&E Ä3'G Å
F Å$FÅ>G ÆF ÆG ÆF Æ G Ç G$ry   rO   )rC   rz   r{   rð   r$   r%   rx   rÇ   ré   rµ   r‰   r   r€   s   @r   rÚ   rÚ   Ë  s²   ø€ € € € € à€HØ59Ø$(ð1ð 1ð 1ð 1ð 1ð 1ð&ð &ð &ð!ð !ð !ð ð  ð  ð%ð %ð %ð %ð: *ð  *ð  *ð  *ðD)=ð )=ð )=ð )=ð )=ð )=ð )=ð )=r>   rÚ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú_ProactorDuplexPipeTransportzTransport for duplex pipes.c                 ó   — dS )NFrÀ   rR   s    r   rÁ   z*_ProactorDuplexPipeTransport.can_write_eofT  s   € Øˆur>   c                 ó   — t           ‚rO   )ÚNotImplementedErrorrR   s    r   rÄ   z&_ProactorDuplexPipeTransport.write_eofW  s   € Ý!Ð!r>   N)rC   rz   r{   r|   rÁ   rÄ   rÀ   r>   r   rô   rô   O  s:   € € € € € ð &Ð%ðð ð ð"ð "ð "ð "ð "r>   rô   c                   óR   ‡ — e Zd ZdZej        j        Z	 	 dˆ fd„	Zd„ Z	d„ Z
d„ Zˆ xZS )Ú_ProactorSocketTransportz Transport for connected sockets.Nc                 ó|   •— t          ¦   «                              ||||||¦  «         t          j        |¦  «         d S rO   )r#   r$   r   Ú_set_nodelayr6   s          €r   r$   z!_ProactorSocketTransport.__init__b  s<   ø€ å‰Œ×Ò˜˜t X¨v°u¸fÑEÔEÐEÝÔ  Ñ&Ô&Ð&Ð&Ð&r>   c                 ó&   — t          | |¦  «         d S rO   râ   rM   s     r   r%   z#_ProactorSocketTransport._set_extrag  rã   r>   c                 ó   — dS r¿   rÀ   rR   s    r   rÁ   z&_ProactorSocketTransport.can_write_eofj  rÂ   r>   c                 óŽ   — | j         s| j        rd S d| _        | j        €&| j                             t
          j        ¦  «         d S d S r¿   )r.   r0   r+   r&   rp   r   rº   rR   s    r   rÄ   z"_ProactorSocketTransport.write_eofm  sQ   € ØŒ=ð 	˜DÔ-ð 	ØˆFØ ˆÔØŒ?Ð"ØŒJ×Ò¥¤Ñ/Ô/Ð/Ð/Ð/ð #Ð"r>   ry   )rC   rz   r{   r|   r   Ú_SendfileModeÚ
TRY_NATIVEÚ_sendfile_compatibler$   r%   rÁ   rÄ   r   r€   s   @r   rù   rù   [  s„   ø€ € € € € ð +Ð*à$Ô2Ô=Ðà48Ø$(ð'ð 'ð 'ð 'ð 'ð 'ð
&ð &ð &ðð ð ð0ð 0ð 0ð 0ð 0ð 0ð 0r>   rù   c                   óô   ‡ — e Zd Zˆ fd„Z	 	 d d„Z	 d!dddddddœd„Z	 d d„Z	 	 d"d„Z	 	 d"d	„Z	 	 d"d
„Z	ˆ fd„Z
d„ Zd„ Zd„ Zd#d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd!d„Zd„ Z	 	 	 d$d„Zd„ Zd„ Zd„ Zˆ xZS )%r   c                 ó¶  •— t          ¦   «                              ¦   «          t          j        d|j        j        ¦  «         || _        || _        d | _        i | _	        | 
                    | ¦  «         |                      ¦   «          t          j        ¦   «         t          j        ¦   «         u r-t          j        | j                             ¦   «         ¦  «         d S d S )NzUsing proactor: %s)r#   r$   r   re   r=   rC   r¡   Ú	_selectorÚ_self_reading_futureÚ_accept_futuresÚset_loopÚ_make_self_pipeÚ	threadingÚcurrent_threadÚmain_threadÚsignalÚset_wakeup_fdÚ_csockrE   )r7   Úproactorr=   s     €r   r$   zBaseProactorEventLoop.__init__w  sÁ   ø€ Ý‰Œ×ÒÑÔÐÝŒÐ)¨8Ô+=Ô+FÑGÔGÐGØ!ˆŒØ!ˆŒØ$(ˆÔ!Ø!ˆÔØ×Ò˜$ÑÔÐØ×ÒÑÔÐÝÔ#Ñ%Ô%­Ô)>Ñ)@Ô)@Ð@Ð@åÔ  ¤×!3Ò!3Ñ!5Ô!5Ñ6Ô6Ð6Ð6Ð6ð AÐ@r>   Nc                 ó*   — t          | |||||¦  «        S rO   )rù   )r7   r   r9   r:   r;   r<   s         r   Ú_make_socket_transportz,BaseProactorEventLoop._make_socket_transport„  s!   € å'¨¨d°H¸fØ(-¨vñ7ô 7ð 	7r>   F)Úserver_sideÚserver_hostnamer;   r<   Ússl_handshake_timeoutÚssl_shutdown_timeoutc          
      óp   — t          j        | ||||||	|
¬¦  «        }t          | ||||¬¦  «         |j        S )N)r  r  ©r;   r<   )r
   ÚSSLProtocolrù   Ú_app_transport)r7   Úrawsockr9   Ú
sslcontextr:   r  r  r;   r<   r  r  Ússl_protocols               r   Ú_make_ssl_transportz)BaseProactorEventLoop._make_ssl_transport‰  s\   € õ  Ô+Ø�h 
¨FØ˜_Ø&;Ø%9ð	;ñ ;ô ;ˆõ
 	!  w°Ø',°Vð	=ñ 	=ô 	=ð 	=àÔ*Ð*r>   c                 ó*   — t          | |||||¦  «        S rO   )rÚ   )r7   r   r9   rà   r:   r;   s         r   Ú_make_datagram_transportz.BaseProactorEventLoop._make_datagram_transport˜  s!   € å)¨$°°hÀØ*0°%ñ9ô 9ð 	9r>   c                 ó(   — t          | ||||¦  «        S rO   )rô   ©r7   r   r9   r:   r;   s        r   Ú_make_duplex_pipe_transportz1BaseProactorEventLoop._make_duplex_pipe_transport�  s"   € å+¨DØ,0°(¸FÀEñKô Kð 	Kr>   c                 ó(   — t          | ||||¦  «        S rO   )r‚   r!  s        r   Ú_make_read_pipe_transportz/BaseProactorEventLoop._make_read_pipe_transport¢  s   € å)¨$°°hÀÈÑNÔNÐNr>   c                 ó(   — t          | ||||¦  «        S rO   )rÑ   r!  s        r   Ú_make_write_pipe_transportz0BaseProactorEventLoop._make_write_pipe_transport¦  s$   € õ +¨4Ø+/°¸6À5ñJô Jð 	Jr>   c                 óÌ  •— |                       ¦   «         rt          d¦  «        ‚|                      ¦   «         rd S t          j        ¦   «         t          j        ¦   «         u rt          j        d¦  «         |                      ¦   «          |  	                    ¦   «          | j
                             ¦   «          d | _
        d | _        t          ¦   «                              ¦   «          d S )Nz!Cannot close a running event looprq   )Ú
is_runningr³   Ú	is_closedr	  r
  r  r  r  Ú_stop_accept_futuresÚ_close_self_piper¡   rY   r  r#   )r7   r=   s    €r   rY   zBaseProactorEventLoop.close¬  sÉ   ø€ Ø�?Š?ÑÔð 	DÝÐBÑCÔCÐCØ�>Š>ÑÔð 	ØˆFåÔ#Ñ%Ô%­Ô)>Ñ)@Ô)@Ð@Ð@ÝÔ  Ñ$Ô$Ð$ð 	×!Ò!Ñ#Ô#Ð#Ø×ÒÑÔÐØŒ×ÒÑÔÐØˆŒØˆŒõ 	‰Œ�Š‰Œˆˆˆr>   c              ƒ   óH   K  — | j                              ||¦  «        ƒ d {V —†S rO   )r¡   rÔ   )r7   r   Úns      r   Ú	sock_recvzBaseProactorEventLoop.sock_recvÀ  s0   è è € Ø”^×(Ò(¨¨qÑ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1r>   c              ƒ   óH   K  — | j                              ||¦  «        ƒ d {V —†S rO   )r¡   r¢   )r7   r   Úbufs      r   Úsock_recv_intoz$BaseProactorEventLoop.sock_recv_intoÃ  s0   è è € Ø”^×-Ò-¨d°CÑ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8r>   c              ƒ   óH   K  — | j                              ||¦  «        ƒ d {V —†S rO   )r¡   rñ   )r7   r   Úbufsizes      r   Úsock_recvfromz#BaseProactorEventLoop.sock_recvfromÆ  s0   è è € Ø”^×,Ò,¨T°7Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;r>   r   c              ƒ   ól   K  — |st          |¦  «        }| j                             |||¦  «        ƒ d {V —†S rO   )rF   r¡   Úrecvfrom_into)r7   r   r0  Únbytess       r   Úsock_recvfrom_intoz(BaseProactorEventLoop.sock_recvfrom_intoÉ  sE   è è € Øð 	Ý˜‘X”XˆFà”^×1Ò1°$¸¸VÑDÔDÐDÐDÐDÐDÐDÐDÐDr>   c              ƒ   óH   K  — | j                              ||¦  «        ƒ d {V —†S rO   )r¡   r¼   )r7   r   rž   s      r   Úsock_sendallz"BaseProactorEventLoop.sock_sendallÏ  s0   è è € Ø”^×(Ò(¨¨tÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4r>   c              ƒ   óL   K  — | j                              ||d|¦  «        ƒ d {V —†S )Nr   )r¡   ré   )r7   r   rž   rà   s       r   Úsock_sendtoz!BaseProactorEventLoop.sock_sendtoÒ  s4   è è € Ø”^×*Ò*¨4°°q¸'ÑBÔBÐBÐBÐBÐBÐBÐBÐBr>   c              ƒ   óH   K  — | j                              ||¦  «        ƒ d {V —†S rO   )r¡   Úconnect)r7   r   rà   s      r   Úsock_connectz"BaseProactorEventLoop.sock_connectÕ  s0   è è € Ø”^×+Ò+¨D°'Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r>   c              ƒ   óF   K  — | j                              |¦  «        ƒ d {V —†S rO   )r¡   ÚacceptrM   s     r   Úsock_acceptz!BaseProactorEventLoop.sock_acceptØ  s.   è è € Ø”^×*Ò*¨4Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r>   c              ƒ   ó¦  K  — 	 |                      ¦   «         }n2# t          t          j        f$ r}t	          j        d¦  «        ‚d }~ww xY w	 t          j        |¦  «        j        }n"# t          $ r t	          j        d¦  «        ‚w xY w|r|n|}|sdS t          |d¦  «        }|rt          ||z   |¦  «        n|}	t          ||¦  «        }d}
	 	 t          |	|z
  |¦  «        }|dk    r|
|
dk    r|                     |¦  «         S S | j                             ||||¦  «        ƒ d {V —† ||z  }|
|z  }
Œe# |
dk    r|                     |¦  «         w w xY w)Nznot a regular filer   l   ÿÿ )rE   ÚAttributeErrorÚioÚUnsupportedOperationr   ÚSendfileNotAvailableErrorÚosÚfstatÚst_sizerd   ÚminÚseekr¡   Úsendfile)r7   r   ÚfileÚoffsetÚcountrE   ÚerrÚfsizeÚ	blocksizeÚend_posÚ
total_sents              r   Ú_sock_sendfile_nativez+BaseProactorEventLoop._sock_sendfile_nativeÛ  s¿  è è € ð	MØ—[’[‘]”]ˆFˆFøÝ¥Ô 7Ð8ð 	Mð 	Mð 	MÝÔ6Ð7KÑLÔLÐLøøøøð	Møøøð	MÝ”H˜VÑ$Ô$Ô,ˆEˆEøÝð 	Mð 	Mð 	MÝÔ6Ð7KÑLÔLÐLð	Møøøà"Ð-�E�E¨ˆ	Øð 	Ø�1å˜	 ;Ñ/Ô/ˆ	Ø05Ð@•#�f˜u‘n eÑ,Ô,Ð,¸5ˆÝ�V˜UÑ#Ô#ˆØˆ
ð
	"ð(Ý ¨&Ñ 0°)Ñ<Ô<�	Ø ’>�>Ø%ð
 ˜AŠ~ˆ~Ø—	’	˜&Ñ!Ô!Ð!Ð!ð ð	 ”n×-Ò-¨d°D¸&À)ÑLÔLÐLÐLÐLÐLÐLÐLÐLØ˜)Ñ#�Ø˜iÑ'�
ð(øð ˜AŠ~ˆ~Ø—	’	˜&Ñ!Ô!Ð!Ð!ð øøøs2   „ ™A¯AÁAÁA& Á&BÃD2 Ä.D2 Ä2Ec              ƒ   óŽ  K  — |                      ¦   «         }|                     ¦   «          |                     ¦   «         ƒ d {V —† 	 |                      |j        |||d¬¦  «        ƒ d {V —†	 |                     ¦   «          |r|                     ¦   «          S S # |                     ¦   «          |r|                     ¦   «          w w xY w)NF)Úfallback)rŒ   rŽ   rË   Úsock_sendfiler&   rÍ   r’   )r7   ÚtransprN  rO  rP  r’   s         r   Ú_sendfile_nativez&BaseProactorEventLoop._sendfile_nativeø  s
  è è € Ø×*Ò*Ñ,Ô,ˆØ×ÒÑÔÐØ×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð	(Ø×+Ò+¨F¬L¸$ÀÈØ5:ð ,ñ <ô <ð <ð <ð <ð <ð <ð <ð <ð ×&Ò&Ñ(Ô(Ð(Øð (Ø×%Ò%Ñ'Ô'Ð'Ð'ð(øð ×&Ò&Ñ(Ô(Ð(Øð (Ø×%Ò%Ñ'Ô'Ð'Ð'ð(øøøs   Á$B Â-Cc                 óô   — | j         � | j                              ¦   «          d | _         | j                             ¦   «          d | _        | j                             ¦   «          d | _        | xj        dz  c_        d S )Nr   )r  rX   Ú_ssockrY   r  Ú_internal_fdsrR   s    r   r+  z&BaseProactorEventLoop._close_self_pipe  sx   € ØÔ$Ð0ØÔ%×,Ò,Ñ.Ô.Ð.Ø(,ˆDÔ%ØŒ×ÒÑÔÐØˆŒØŒ×ÒÑÔÐØˆŒØÐÔ˜aÑÐÔÐÐr>   c                 óÎ   — t          j        ¦   «         \  | _        | _        | j                             d¦  «         | j                             d¦  «         | xj        dz  c_        d S )NFr   )r   Ú
socketpairr]  r  Úsetblockingr^  rR   s    r   r  z%BaseProactorEventLoop._make_self_pipe  s_   € å#)Ô#4Ñ#6Ô#6Ñ ˆŒ�T”[ØŒ×Ò Ñ&Ô&Ð&ØŒ×Ò Ñ&Ô&Ð&ØÐÔ˜aÑÐÔÐÐr>   c                 ór  — 	 |�|                      ¦   «          | j        |urd S | j                             | j        d¦  «        }|| _        |                     | j        ¦  «         d S # t          j        $ r Y d S t          t          f$ r ‚ t          $ r$}|                      d|| dœ¦  «         Y d }~d S d }~ww xY w)Ni   z.Error on reading from the event loop self pipe)ra   rb   r8   )r    r  r¡   rÔ   r]  r£   Ú_loop_self_readingr   r¦   r•   r–   r—   rf   )r7   r½   rh   s      r   rc  z(BaseProactorEventLoop._loop_self_reading  s  € ð	9Øˆ}Ø—’‘
”
�
ØÔ(°Ð1Ð1ð �Ø”×#Ò# D¤K°Ñ6Ô6ˆAð )*ˆDÔ%Ø×Ò Ô 7Ñ8Ô8Ð8Ð8Ð8øõ Ô(ð 	ð 	ð 	àˆFˆFÝÕ-Ð.ð 	ð 	ð 	ØÝð 	ð 	ð 	Ø×'Ò'ØKØ Øð)ð )ñ ô ð ð ð ð ð ð ð øøøøð	øøøs"   ‚A& £ A& Á&B6Á8B6ÂB1Â1B6c                 óª   — | j         }|€d S 	 |                     d¦  «         d S # t          $ r$ | j        rt	          j        dd¬¦  «         Y d S Y d S w xY w)Nó    z3Fail to write a null byte into the self-pipe socketTr   )r  r¼   rd   Ú_debugr   re   )r7   Úcsocks     r   Ú_write_to_selfz$BaseProactorEventLoop._write_to_self1  s–   € ð ”ˆØˆ=ØˆFð	,Ø�JŠJ�uÑÔÐÐÐøÝð 	,ð 	,ð 	,ØŒ{ð ,Ý”ð 0à&*ð,ñ ,ô ,ð ,ð ,ð ,ð ,ð,ð ,ð ,ð	,øøøs   �$ ¤'AÁAéd   c           	      óZ   ‡ ‡‡‡‡‡‡‡— dˆˆˆ ˆˆˆˆˆfd„	Š‰                       ‰¦  «         d S )Nc           
      óF  •— 	 | �||                       ¦   «         \  }}‰j        rt          j        d‰||¦  «          ‰¦   «         }‰� ‰                     ||‰dd|i‰‰
‰¬¦  «         n‰                     ||d|i‰¬¦  «         ‰                     ¦   «         rd S ‰j                             ‰	¦  «        } | ‰j	        ‰	 
                    ¦   «         <   |                      ‰¦  «         d S # t          $ r�}‰	 
                    ¦   «         dk    r@‰                     d|t          j        ‰	¦  «        dœ¦  «         ‰	                     ¦   «          n*‰j        rt          j        d	‰	d¬
¦  «         Y d }~d S Y d }~d S Y d }~d S d }~wt"          j        $ r ‰	                     ¦   «          Y d S w xY w)Nz#%r got a new connection from %r: %rTr   )r  r;   r<   r  r  r  rq   zAccept failed on a socket)ra   rb   r   zAccept failed on socket %rr   )r    rf  r   re   r  r  r)  r¡   rA  r  rE   r£   rd   rf   r   r   rY   r   r¦   )r½   Úconnrè   r9   rh   r8   Úprotocol_factoryr7   r<   r   r  r  r  s        €€€€€€€€r   r8   z2BaseProactorEventLoop._start_serving.<locals>.loopH  sD  ø€ ð#*Ø�=Ø!"§¢¡¤‘J�D˜$Ø”{ð 9ÝœÐ%JØ%+¨T°4ñ9ô 9ð 9à/Ð/Ñ1Ô1�HØ!Ð-Ø×0Ò0Ø  (¨JÀDØ#-¨tÐ"4¸VØ2GØ1Eð	 1ñ Gô Gð Gð Gð ×3Ò3Ø  (Ø#-¨tÐ"4¸Vð 4ñ Eô Eð Eð —>’>Ñ#Ô#ð Ø�FØ”N×)Ò)¨$Ñ/Ô/�ð 78�Ô$ T§[¢[¡]¤]Ñ3Ø×#Ò# DÑ)Ô)Ð)Ð)Ð)øõ ð 
6ð 
6ð 
6Ø—;’;‘=”= BÒ&Ð&Ø×/Ò/Ø#>Ø%(Ý"(Ô"8¸Ñ">Ô">ð1ð 1ñ ô ð ð
 —J’J‘L”L�L�LØ”[ð 6Ý”LÐ!=Ø!%°ð6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð6ð 6ð 6ð 6ð 6ð 6ð !�L�L�L�L�Løøøøõ Ô,ð ð ð Ø—
’
‘”����ðøøøs%   ƒBC$ ÂC$ Ã$
F Ã.A6E6Å6&F ÆF rO   )r2   )	r7   rm  r   r  r<   Úbacklogr  r  r8   s	   ````` ``@r   Ú_start_servingz$BaseProactorEventLoop._start_servingC  sf   øøøøøøøø€ ð
$	*ð $	*ð $	*ð $	*ð $	*ð $	*ð $	*ð $	*ð $	*ð $	*ð $	*ð $	*ð $	*ðL 	�Š�tÑÔÐÐÐr>   c                 ó   — d S rO   rÀ   )r7   Ú
event_lists     r   Ú_process_eventsz%BaseProactorEventLoop._process_eventsp  s   € àˆr>   c                 ó˜   — | j                              ¦   «         D ]}|                     ¦   «          Œ| j                              ¦   «          d S rO   )r  ÚvaluesrX   Úclear)r7   Úfutures     r   r*  z*BaseProactorEventLoop._stop_accept_futurest  sJ   € ØÔ*×1Ò1Ñ3Ô3ð 	ð 	ˆFØ�MŠM‰OŒOˆOˆOØÔ×"Ò"Ñ$Ô$Ð$Ð$Ð$r>   c                 óè   — | j                              |                     ¦   «         d ¦  «        }|r|                     ¦   «          | j                             |¦  «         |                     ¦   «          d S rO   )r  ÚpoprE   rX   r¡   Ú_stop_servingrY   )r7   r   rv  s      r   ry  z#BaseProactorEventLoop._stop_servingy  s^   € ØÔ%×)Ò)¨$¯+ª+©-¬-¸Ñ>Ô>ˆØð 	Ø�MŠM‰OŒOˆOØŒ×$Ò$ TÑ*Ô*Ð*Ø�
Š
‰Œˆˆˆr>   ry   rO   rÎ   )r   )NNri  NN)rC   rz   r{   r$   r  r  r  r"  r$  r&  rY   r.  r1  r4  r8  r:  r<  r?  rB  rV  r[  r+  r  rc  rh  ro  rr  r*  ry  r   r€   s   @r   r   r   u  sS  ø€ € € € € ð7ð 7ð 7ð 7ð 7ð =AØ26ð7ð 7ð 7ð 7ð 9=ð+à °$Ø˜tØ"&Ø!%ð+ð +ð +ð +ð +ð  CGð9ð 9ð 9ð 9ð
 BFØ*.ðKð Kð Kð Kð
 @DØ(,ðOð Oð Oð Oð AEØ)-ðJð Jð Jð Jðð ð ð ð ð(2ð 2ð 2ð9ð 9ð 9ð<ð <ð <ðEð Eð Eð Eð5ð 5ð 5ðCð Cð Cð;ð ;ð ;ð1ð 1ð 1ð"ð "ð "ð:
(ð 
(ð 
(ð ð  ð  ð ð  ð  ð9ð 9ð 9ð 9ð8,ð ,ð ,ð& >AØ-1Ø,0ð+ð +ð +ð +ðZð ð ð%ð %ð %ð
ð ð ð ð ð ð r>   r   )$r|   Ú__all__rE  rH  r   r}   r  r	  rÞ   Ú r   r   r   r   r	   r
   r   r   Úlogr   r   Ú_FlowControlMixinÚBaseTransportr!   ÚReadTransportr‚   ÚWriteTransportr©   rÑ   ÚDatagramTransportrÚ   Ú	Transportrô   rù   ÚBaseEventLoopr   rÀ   r>   r   ú<module>r„     sÊ  ððð ð #€à 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð0ð 0ð 0ð$Dð Dð Dð Dð D Ô!=Ø!+Ô!9ñDô Dð DðNO2ð O2ð O2ð O2ð O2Ð!;Ø!+Ô!9ñO2ô O2ð O2ðdk"ð k"ð k"ð k"ð k"Ð&@Ø&0Ô&?ñk"ô k"ð k"ð\ð ð ð ð Ð"Añ ô ð ð,A=ð A=ð A=ð A=ð A=Ð!;Ø!+Ô!=ñA=ô A=ð A=ðH	"ð 	"ð 	"ð 	"ð 	"Ð#=Ø#BØ#-Ô#7ñ	"ô 	"ð 	"ð0ð 0ð 0ð 0ð 0Ð9Ø>Ø)Ô3ñ0ô 0ð 0ð4Ið Ið Ið Ið I˜KÔ5ñ Iô Ið Ið Ið Ir>   