§
    (¶Õi;°  ã                   ón  — 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	Z	n# e
$ r dZ	Y nw xY w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        ¦  «        Z G d„ dej        ej        ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )zÄEvent loop using a selector and related classes.

A selector is a "notify-when-ready" multiplexer.  For a subclass which
also includes support for signal handling, see the unix_events sub-module.
)ÚBaseSelectorEventLoopé    Né   )Úbase_events)Ú	constants)Úevents)Úfutures)Ú	protocols)Ússlproto)Ú
transports)Útrsock)Úloggerc                 ó~   — 	 |                       |¦  «        }t          |j        |z  ¦  «        S # t          $ r Y dS w xY w©NF)Úget_keyÚboolr   ÚKeyError)ÚselectorÚfdÚeventÚkeys       ú./usr/lib/python3.11/asyncio/selector_events.pyÚ_test_selector_eventr       sU   € ð(Ø×Ò˜rÑ"Ô"ˆõ �C”J Ñ&Ñ'Ô'Ð'øõ ð ð ð Øˆuˆuðøøøs   ‚. ®
<»<c                   óÄ  ‡ — e Zd ZdZd4ˆ fd„	Zd4dddœd„Z	 d4ddddej        ej        dœd„Z		 d5d	„Z
ˆ fd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zdddej        ej        fd„Zdddej        ej        fd„Zddej        ej        fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd4d„Zd„ Zd „ Z d!„ Z!d"„ Z"d#„ Z#d6d%„Z$d&„ Z%d'„ Z&d(„ Z'd)„ Z(d*„ Z)d+„ Z*d,„ Z+d4d-„Z,d.„ Z-d/„ Z.d0„ Z/d1„ Z0d2„ Z1d3„ Z2ˆ xZ3S )7r   zJSelector event loop.

    See events.EventLoop for API specification.
    Nc                 ó  •— t          ¦   «                              ¦   «          |€t          j        ¦   «         }t	          j        d|j        j        ¦  «         || _        |  	                    ¦   «          t          j        ¦   «         | _        d S )NzUsing selector: %s)ÚsuperÚ__init__Ú	selectorsÚDefaultSelectorr   ÚdebugÚ	__class__Ú__name__Ú	_selectorÚ_make_self_pipeÚweakrefÚWeakValueDictionaryÚ_transports)Úselfr   r    s     €r   r   zBaseSelectorEventLoop.__init__1   sv   ø€ Ý‰Œ×ÒÑÔÐàÐÝ Ô0Ñ2Ô2ˆHÝŒÐ)¨8Ô+=Ô+FÑGÔGÐGØ!ˆŒØ×ÒÑÔÐÝ"Ô6Ñ8Ô8ˆÔÐÐó    ©ÚextraÚserverc                ó*   — t          | |||||¦  «        S ©N)Ú_SelectorSocketTransport)r'   ÚsockÚprotocolÚwaiterr*   r+   s         r   Ú_make_socket_transportz,BaseSelectorEventLoop._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)r5   r6   r)   )r
   ÚSSLProtocolr.   Ú_app_transport)r'   Úrawsockr0   Ú
sslcontextr1   r3   r4   r*   r+   r5   r6   Ússl_protocols               r   Ú_make_ssl_transportz)BaseSelectorEventLoop._make_ssl_transport@   s\   € õ  Ô+Ø�(˜J¨Ø˜Ø"7Ø!5ð	
ñ 
ô 
ˆõ 	!  w°Ø',°Vð	=ñ 	=ô 	=ð 	=àÔ*Ð*r(   c                 ó*   — t          | |||||¦  «        S r-   )Ú_SelectorDatagramTransport)r'   r/   r0   Úaddressr1   r*   s         r   Ú_make_datagram_transportz.BaseSelectorEventLoop._make_datagram_transportQ   s$   € å)¨$°°hØ*1°6¸5ñBô Bð 	Br(   c                 ó4  •— |                       ¦   «         rt          d¦  «        ‚|                      ¦   «         rd S |                      ¦   «          t	          ¦   «                              ¦   «          | j        �"| j                             ¦   «          d | _        d S d S )Nz!Cannot close a running event loop)Ú
is_runningÚRuntimeErrorÚ	is_closedÚ_close_self_piper   Úcloser"   )r'   r    s    €r   rG   zBaseSelectorEventLoop.closeV   sŽ   ø€ Ø�?Š?ÑÔð 	DÝÐBÑCÔCÐCØ�>Š>ÑÔð 	ØˆFØ×ÒÑÔÐÝ‰Œ�Š‰ŒˆØŒ>Ð%ØŒN× Ò Ñ"Ô"Ð"Ø!ˆDŒNˆNˆNð &Ð%r(   c                 óþ   — |                       | j                             ¦   «         ¦  «         | j                             ¦   «          d | _        | j                             ¦   «          d | _        | xj        dz  c_        d S )Nr   )Ú_remove_readerÚ_ssockÚfilenorG   Ú_csockÚ_internal_fds©r'   s    r   rF   z&BaseSelectorEventLoop._close_self_pipea   st   € Ø×Ò˜DœK×.Ò.Ñ0Ô0Ñ1Ô1Ð1ØŒ×ÒÑÔÐØˆŒØŒ×ÒÑÔÐØˆŒØÐÔ˜aÑÐÔÐÐr(   c                 ó2  — t          j        ¦   «         \  | _        | _        | j                             d¦  «         | j                             d¦  «         | xj        dz  c_        |                      | j                             ¦   «         | j        ¦  «         d S )NFr   )	ÚsocketÚ
socketpairrJ   rL   ÚsetblockingrM   Ú_add_readerrK   Ú_read_from_selfrN   s    r   r#   z%BaseSelectorEventLoop._make_self_pipei   s†   € å#)Ô#4Ñ#6Ô#6Ñ ˆŒ�T”[ØŒ×Ò Ñ&Ô&Ð&ØŒ×Ò Ñ&Ô&Ð&ØÐÔ˜aÑÐÔØ×Ò˜œ×+Ò+Ñ-Ô-¨tÔ/CÑDÔDÐDÐDÐDr(   c                 ó   — d S r-   © ©r'   Údatas     r   Ú_process_self_dataz(BaseSelectorEventLoop._process_self_dataq   s   € Øˆr(   c                 ó¨   — 	 	 | j                              d¦  «        }|sd S |                      |¦  «         n# t          $ r Y ŒBt          $ r Y d S w xY wŒR)NTi   )rJ   ÚrecvrY   ÚInterruptedErrorÚBlockingIOErrorrW   s     r   rT   z%BaseSelectorEventLoop._read_from_selft   sƒ   € ð		ðØ”{×'Ò'¨Ñ-Ô-�Øð Ø�EØ×'Ò'¨Ñ-Ô-Ð-Ð-øÝ#ð ð ð Ø�Ý"ð ð ð Ø��ðøøøð		s   ƒ7 ¡7 ·
AÁ	AÁA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 socketT©Úexc_info)rL   ÚsendÚOSErrorÚ_debugr   r   )r'   Úcsocks     r   Ú_write_to_selfz$BaseSelectorEventLoop._write_to_self€   s–   € ð ”ˆØˆ=ØˆFð	,Ø�JŠJ�uÑÔÐÐÐøÝð 	,ð 	,ð 	,ØŒ{ð ,Ý”ð 0à&*ð,ñ ,ô ,ð ,ð ,ð ,ð ,ð,ð ,ð ,ð	,øøøs   �$ ¤'AÁAéd   c                 ón   — |                       |                     ¦   «         | j        |||||||¦	  «	         d S r-   )rS   rK   Ú_accept_connection)r'   Úprotocol_factoryr/   r;   r+   Úbacklogr5   r6   s           r   Ú_start_servingz$BaseSelectorEventLoop._start_serving’   sK   € ð 	×Ò˜Ÿš™œ¨Ô(?Ø)¨4°¸VÀWØ.Ð0Dñ	Fô 	Fð 	Fð 	Fð 	Fr(   c                 óø  — t          |¦  «        D �]h}	 |                     ¦   «         \  }	}
| j        rt          j        d||
|	¦  «         |	                     d¦  «         d|
i}|                      ||	|||||¦  «        }|                      |¦  «         Œƒ# t          t          t          f$ r Y  d S t          $ rÀ}|j        t          j        t          j        t          j        t          j        fv r|                      d|t%          j        |¦  «        dœ¦  «         |                      |                     ¦   «         ¦  «         |                      t.          j        | j        |||||||¦	  «	         n‚ Y d }~�Œbd }~ww xY wd S )Nz#%r got a new connection from %r: %rFÚpeernamez&socket.accept() out of system resource)ÚmessageÚ	exceptionrP   )ÚrangeÚacceptrd   r   r   rR   Ú_accept_connection2Úcreate_taskr]   r\   ÚConnectionAbortedErrorrc   ÚerrnoÚEMFILEÚENFILEÚENOBUFSÚENOMEMÚcall_exception_handlerr   ÚTransportSocketrI   rK   Ú
call_laterr   ÚACCEPT_RETRY_DELAYrl   )r'   rj   r/   r;   r+   rk   r5   r6   Ú_ÚconnÚaddrr*   rr   Úexcs                 r   ri   z(BaseSelectorEventLoop._accept_connectionš   sØ  € õ �w‘”ð #	)ñ #	)ˆAð")Ø!Ÿ[š[™]œ]‘
��dØ”;ð 5Ý”LÐ!FØ!'¨¨tñ5ô 5ð 5à× Ò  Ñ'Ô'Ð'ð2 $ TÐ*�Ø×1Ò1Ø$ d¨E°:¸vØ)Ð+?ñAô A�ð × Ò  Ñ(Ô(Ð(Ð(øõ9 $Õ%5Õ7MÐNð ð ð à�t�t�tÝð ð ð à”9¥¤­u¬|Ý!&¤µ´ð!>ð >ð >ð
 ×/Ò/Ø#KØ%(Ý"(Ô"8¸Ñ">Ô">ð1ð 1ñ ô ð ð
 ×'Ò'¨¯ª©¬Ñ6Ô6Ð6Ø—O’O¥IÔ$@Ø$(Ô$7Ø$4°d¸JÈØ$+Ð-BØ$8ñ	:ô :ð :ð :ð ð:ð :ð :ð :ñ :øøøøðøøøð#	)ð #	)s   ”A
BÂE7Â.	E7Â7B5E2Å2E7c              ƒ   óÚ  K  — d }d }		  |¦   «         }|                       ¦   «         }
|r|                      ||||
d||||¬¦	  «	        }	n|                      |||
||¬¦  «        }		 |
ƒ d {V —† d S # t          $ r |	                     ¦   «          ‚ w xY w# t
          t          f$ r ‚ t          $ r@}| j        r.d|dœ}|�||d<   |	�|	|d<   |                      |¦  «         Y d }~d S Y d }~d S d }~ww xY w)NT)r1   r3   r*   r+   r5   r6   )r1   r*   r+   z3Error on transport creation for incoming connection)ro   rp   r0   Ú	transport)	Úcreate_futurer=   r2   ÚBaseExceptionrG   Ú
SystemExitÚKeyboardInterruptrd   r{   )r'   rj   r€   r*   r;   r+   r5   r6   r0   r„   r1   r‚   Úcontexts                r   rs   z)BaseSelectorEventLoop._accept_connection2È   s¡  è è € ð
 ˆØˆ	ð"	5Ø'Ð'Ñ)Ô)ˆHØ×'Ò'Ñ)Ô)ˆFØð 	#Ø ×4Ò4Ø˜( J°vØ $¨E¸&Ø*?Ø)=ð	 5ñ ?ô ?�	�	ð !×7Ò7Ø˜(¨6¸Ø!ð 8ñ #ô #�	ðØ���������øÝ ð ð ð Ø—’Ñ!Ô!Ð!Øðøøøøõ
 Õ-Ð.ð 	ð 	ð 	ØÝð 	5ð 	5ð 	5ØŒ{ð 
5ð NØ!$ðð �ð
 Ð'Ø*2�G˜JÑ'ØÐ(Ø+4�G˜KÑ(Ø×+Ò+¨GÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð
5ð 
5ð 
5ð 
5ð 
5ð 
5øøøøð	5øøøs*   ˆAB Á"A, Á, BÂB ÂC*Â*/C%Ã%C*c                 óf  — |}t          |t          ¦  «        sQ	 t          |                     ¦   «         ¦  «        }n.# t          t          t
          f$ r t          d|›�¦  «        d ‚w xY w	 | j        |         }|                     ¦   «         st          d|›d|›�¦  «        ‚d S # t          $ r Y d S w xY w)NzInvalid file object: zFile descriptor z is used by transport )
Ú
isinstanceÚintrK   ÚAttributeErrorÚ	TypeErrorÚ
ValueErrorr&   Ú
is_closingrD   r   )r'   r   rK   r„   s       r   Ú_ensure_fd_no_transportz-BaseSelectorEventLoop._ensure_fd_no_transportó   sü   € ØˆÝ˜&¥#Ñ&Ô&ð 	KðKÝ˜VŸ]š]™_œ_Ñ-Ô-��øÝ"¥I­zÐ:ð Kð Kð Kå Ð!?¸Ð!?Ð!?Ñ@Ô@ÀdÐJðKøøøð	&ØÔ(¨Ô0ˆIð ×'Ò'Ñ)Ô)ð &Ý"ð% rð %ð %Ø ð%ð %ñ&ô &ð &ð&ð &øõ ð 	ð 	ð 	ØˆDˆDð	øøøs   ™!; »+A&Á*B" Â"
B0Â/B0c                 óª  — |                       ¦   «          t          j        ||| d ¦  «        }	 | j                             |¦  «        }|j        |j        c}\  }}| j                             ||t          j        z  ||f¦  «         |�| 	                    ¦   «          n8# t          $ r+ | j                             |t          j        |d f¦  «         Y nw xY w|S r-   )Ú_check_closedr   ÚHandler"   r   rX   Úmodifyr   Ú
EVENT_READÚcancelr   Úregister©	r'   r   ÚcallbackÚargsÚhandler   ÚmaskÚreaderÚwriters	            r   rS   z!BaseSelectorEventLoop._add_reader  sò   € Ø×ÒÑÔÐÝ”˜x¨¨t°TÑ:Ô:ˆð
	 Ø”.×(Ò(¨Ñ,Ô,ˆCð
 &)¤Z°´Ð"ˆDÑ"�6˜6ØŒN×!Ò! " d­YÔ-AÑ&AØ#)¨6Ð"2ñ4ô 4ð 4àÐ!Ø—’‘”�øøõ ð 	4ð 	4ð 	4ØŒN×#Ò# B­	Ô(<Ø%+¨T Nñ4ô 4ð 4ð 4ð 4ð	4øøøð ˆó   ­B Â2CÃCc                 ót  — |                       ¦   «         rdS 	 | j                             |¦  «        }|j        |j        c}\  }}|t
          j         z  }|s| j                             |¦  «         n| j                             ||d |f¦  «         |�| 	                    ¦   «          dS dS # t          $ r Y dS w xY w)NFT)rE   r"   r   r   rX   r   r–   Ú
unregisterr•   r—   r   ©r'   r   r   r�   rž   rŸ   s         r   rI   z$BaseSelectorEventLoop._remove_reader  sÛ   € Ø�>Š>ÑÔð 	Ø�5ð	Ø”.×(Ò(¨Ñ,Ô,ˆCð &)¤Z°´Ð"ˆDÑ"�6˜6Ø•YÔ)Ð)Ñ)ˆDØð @Ø”×)Ò)¨"Ñ-Ô-Ð-Ð-à”×%Ò% b¨$°°v°Ñ?Ô?Ð?àÐ!Ø—’‘”�Ø�tà�uøõ ð 	ð 	ð 	Ø�5�5ð	øøøó   ˜B) Â)
B7Â6B7c                 óª  — |                       ¦   «          t          j        ||| d ¦  «        }	 | j                             |¦  «        }|j        |j        c}\  }}| j                             ||t          j        z  ||f¦  «         |�| 	                    ¦   «          n8# t          $ r+ | j                             |t          j        d |f¦  «         Y nw xY w|S r-   )r“   r   r”   r"   r   rX   r•   r   ÚEVENT_WRITEr—   r   r˜   r™   s	            r   Ú_add_writerz!BaseSelectorEventLoop._add_writer*  sò   € Ø×ÒÑÔÐÝ”˜x¨¨t°TÑ:Ô:ˆð
	 Ø”.×(Ò(¨Ñ,Ô,ˆCð
 &)¤Z°´Ð"ˆDÑ"�6˜6ØŒN×!Ò! " d­YÔ-BÑ&BØ#)¨6Ð"2ñ4ô 4ð 4àÐ!Ø—’‘”�øøõ ð 	4ð 	4ð 	4ØŒN×#Ò# B­	Ô(=Ø%)¨6 Nñ4ô 4ð 4ð 4ð 4ð	4øøøð ˆr    c                 ót  — |                       ¦   «         rdS 	 | j                             |¦  «        }|j        |j        c}\  }}|t
          j         z  }|s| j                             |¦  «         n| j                             |||df¦  «         |�| 	                    ¦   «          dS dS # t          $ r Y dS w xY w)úRemove a writer callback.FNT)rE   r"   r   r   rX   r   r¦   r¢   r•   r—   r   r£   s         r   Ú_remove_writerz$BaseSelectorEventLoop._remove_writer:  sÛ   € à�>Š>ÑÔð 	Ø�5ð	Ø”.×(Ò(¨Ñ,Ô,ˆCð &)¤Z°´Ð"ˆDÑ"�6˜6à•YÔ*Ð*Ñ*ˆDØð @Ø”×)Ò)¨"Ñ-Ô-Ð-Ð-à”×%Ò% b¨$°¸°Ñ?Ô?Ð?àÐ!Ø—’‘”�Ø�tà�uøõ ð 	ð 	ð 	Ø�5�5ð	øøør¤   c                 óN   — |                       |¦  «          | j        ||g|¢R Ž  dS )zAdd a reader callback.N)r‘   rS   ©r'   r   rš   r›   s       r   Ú
add_readerz BaseSelectorEventLoop.add_readerQ  ó9   € à×$Ò$ RÑ(Ô(Ð(ØˆÔ˜˜XÐ-¨Ð-Ð-Ð-Ð-Ð-Ð-r(   c                 óV   — |                       |¦  «         |                      |¦  «        S )zRemove a reader callback.)r‘   rI   ©r'   r   s     r   Úremove_readerz#BaseSelectorEventLoop.remove_readerV  ó*   € à×$Ò$ RÑ(Ô(Ð(Ø×"Ò" 2Ñ&Ô&Ð&r(   c                 óN   — |                       |¦  «          | j        ||g|¢R Ž  dS )zAdd a writer callback..N)r‘   r§   r¬   s       r   Ú
add_writerz BaseSelectorEventLoop.add_writer[  r®   r(   c                 óV   — |                       |¦  «         |                      |¦  «        S )r©   )r‘   rª   r°   s     r   Úremove_writerz#BaseSelectorEventLoop.remove_writer`  r²   r(   c              ƒ   ó  K  — t          j        |¦  «         | j        r'|                     ¦   «         dk    rt	          d¦  «        ‚	 |                     |¦  «        S # t          t          f$ r Y nw xY w|                      ¦   «         }| 	                    ¦   «         }|  
                    |¦  «         |                      || j        |||¦  «        }|                     t          j        | j        ||¬¦  «        ¦  «         |ƒ d{V —†S )zÌReceive data from the socket.

        The return value is a bytes object representing the data received.
        The maximum amount of data to be received at once is specified by
        nbytes.
        r   úthe socket must be non-blocking©rœ   N)r   Ú_check_ssl_socketrd   Ú
gettimeoutr�   r[   r]   r\   r…   rK   r‘   rS   Ú
_sock_recvÚadd_done_callbackÚ	functoolsÚpartialÚ_sock_read_done)r'   r/   ÚnÚfutr   rœ   s         r   Ú	sock_recvzBaseSelectorEventLoop.sock_recve  s  è è € õ 	Ô% dÑ+Ô+Ð+ØŒ;ð 	@˜4Ÿ?š?Ñ,Ô,°Ò1Ð1ÝÐ>Ñ?Ô?Ð?ð	Ø—9’9˜Q‘<”<ÐøÝÕ!1Ð2ð 	ð 	ð 	ØˆDð	øøøà× Ò Ñ"Ô"ˆØ�[Š[‰]Œ]ˆØ×$Ò$ RÑ(Ô(Ð(Ø×!Ò! " d¤o°s¸DÀ!ÑDÔDˆØ×ÒÝÔ˜dÔ2°B¸vÐFÑFÔFñ	Hô 	Hð 	HàˆyˆyˆyˆyˆyˆyÐó   ÁA ÁA/Á.A/c                 ó`   — |�|                      ¦   «         s|                      |¦  «         d S d S r-   )Ú	cancelledr±   ©r'   r   rÂ   rœ   s       r   rÀ   z%BaseSelectorEventLoop._sock_read_done{  ó8   € Øˆ> ×!1Ò!1Ñ!3Ô!3ˆ>Ø×Ò˜rÑ"Ô"Ð"Ð"Ð"ð ˆ>r(   c                 ó*  — |                      ¦   «         rd S 	 |                     |¦  «        }|                     |¦  «         d S # t          t          f$ r Y d S t
          t          f$ r ‚ t          $ r }|                     |¦  «         Y d }~d S d }~ww xY wr-   )	Údoner[   Ú
set_resultr]   r\   r‡   rˆ   r†   Úset_exception)r'   rÂ   r/   rÁ   rX   r‚   s         r   r¼   z BaseSelectorEventLoop._sock_recv  sÈ   € ð �8Š8‰:Œ:ð 	ØˆFð		!Ø—9’9˜Q‘<”<ˆDð �NŠN˜4Ñ Ô Ð Ð Ð øõ  Õ!1Ð2ð 	ð 	ð 	ØˆFˆFÝÕ-Ð.ð 	ð 	ð 	ØÝð 	#ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð	#øøøó   ˜A ÁBÁBÁ2BÂBc              ƒ   ó  K  — t          j        |¦  «         | j        r'|                     ¦   «         dk    rt	          d¦  «        ‚	 |                     |¦  «        S # t          t          f$ r Y nw xY w|                      ¦   «         }| 	                    ¦   «         }|  
                    |¦  «         |                      || j        |||¦  «        }|                     t          j        | j        ||¬¦  «        ¦  «         |ƒ d{V —†S )z¥Receive data from the socket.

        The received data is written into *buf* (a writable buffer).
        The return value is the number of bytes written.
        r   r¸   r¹   N)r   rº   rd   r»   r�   Ú	recv_intor]   r\   r…   rK   r‘   rS   Ú_sock_recv_intor½   r¾   r¿   rÀ   )r'   r/   ÚbufrÂ   r   rœ   s         r   Úsock_recv_intoz$BaseSelectorEventLoop.sock_recv_into�  s  è è € õ 	Ô% dÑ+Ô+Ð+ØŒ;ð 	@˜4Ÿ?š?Ñ,Ô,°Ò1Ð1ÝÐ>Ñ?Ô?Ð?ð	Ø—>’> #Ñ&Ô&Ð&øÝÕ!1Ð2ð 	ð 	ð 	ØˆDð	øøøà× Ò Ñ"Ô"ˆØ�[Š[‰]Œ]ˆØ×$Ò$ RÑ(Ô(Ð(Ø×!Ò! " dÔ&:¸CÀÀsÑKÔKˆØ×ÒÝÔ˜dÔ2°B¸vÐFÑFÔFñ	Hô 	Hð 	HàˆyˆyˆyˆyˆyˆyÐrÄ   c                 ó*  — |                      ¦   «         rd S 	 |                     |¦  «        }|                     |¦  «         d S # t          t          f$ r Y d S t
          t          f$ r ‚ t          $ r }|                     |¦  «         Y d }~d S d }~ww xY wr-   )	rÊ   rÏ   rË   r]   r\   r‡   rˆ   r†   rÌ   )r'   rÂ   r/   rÑ   Únbytesr‚   s         r   rÐ   z%BaseSelectorEventLoop._sock_recv_into¤  sÊ   € ð �8Š8‰:Œ:ð 	ØˆFð		#Ø—^’^ CÑ(Ô(ˆFð �NŠN˜6Ñ"Ô"Ð"Ð"Ð"øõ  Õ!1Ð2ð 	ð 	ð 	ØˆFˆFÝÕ-Ð.ð 	ð 	ð 	ØÝð 	#ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð	#øøørÍ   c              ƒ   ó  K  — t          j        |¦  «         | j        r'|                     ¦   «         dk    rt	          d¦  «        ‚	 |                     |¦  «        S # t          t          f$ r Y nw xY w|                      ¦   «         }| 	                    ¦   «         }|  
                    |¦  «         |                      || j        |||¦  «        }|                     t          j        | j        ||¬¦  «        ¦  «         |ƒ d{V —†S )a  Receive a datagram from a datagram socket.

        The return value is a tuple of (bytes, address) representing the
        datagram received and the address it came from.
        The maximum amount of data to be received at once is specified by
        nbytes.
        r   r¸   r¹   N)r   rº   rd   r»   r�   Úrecvfromr]   r\   r…   rK   r‘   rS   Ú_sock_recvfromr½   r¾   r¿   rÀ   )r'   r/   ÚbufsizerÂ   r   rœ   s         r   Úsock_recvfromz#BaseSelectorEventLoop.sock_recvfromµ  s  è è € õ 	Ô% dÑ+Ô+Ð+ØŒ;ð 	@˜4Ÿ?š?Ñ,Ô,°Ò1Ð1ÝÐ>Ñ?Ô?Ð?ð	Ø—=’= Ñ)Ô)Ð)øÝÕ!1Ð2ð 	ð 	ð 	ØˆDð	øøøà× Ò Ñ"Ô"ˆØ�[Š[‰]Œ]ˆØ×$Ò$ RÑ(Ô(Ð(Ø×!Ò! " dÔ&9¸3ÀÀgÑNÔNˆØ×ÒÝÔ˜dÔ2°B¸vÐFÑFÔFñ	Hô 	Hð 	HàˆyˆyˆyˆyˆyˆyÐrÄ   c                 ó*  — |                      ¦   «         rd S 	 |                     |¦  «        }|                     |¦  «         d S # t          t          f$ r Y d S t
          t          f$ r ‚ t          $ r }|                     |¦  «         Y d }~d S d }~ww xY wr-   )	rÊ   rÖ   rË   r]   r\   r‡   rˆ   r†   rÌ   )r'   rÂ   r/   rØ   Úresultr‚   s         r   r×   z$BaseSelectorEventLoop._sock_recvfromÌ  sÊ   € ð �8Š8‰:Œ:ð 	ØˆFð		#Ø—]’] 7Ñ+Ô+ˆFð �NŠN˜6Ñ"Ô"Ð"Ð"Ð"øõ  Õ!1Ð2ð 	ð 	ð 	ØˆFˆFÝÕ-Ð.ð 	ð 	ð 	ØÝð 	#ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð	#øøørÍ   r   c              ƒ   ó.  K  — t          j        |¦  «         | j        r'|                     ¦   «         dk    rt	          d¦  «        ‚|st          |¦  «        }	 |                     ||¦  «        S # t          t          f$ r Y nw xY w|  	                    ¦   «         }| 
                    ¦   «         }|                      |¦  «         |                      || j        ||||¦  «        }|                     t          j        | j        ||¬¦  «        ¦  «         |ƒ d{V —†S )z·Receive data from the socket.

        The received data is written into *buf* (a writable buffer).
        The return value is a tuple of (number of bytes written, address).
        r   r¸   r¹   N)r   rº   rd   r»   r�   ÚlenÚrecvfrom_intor]   r\   r…   rK   r‘   rS   Ú_sock_recvfrom_intor½   r¾   r¿   rÀ   )r'   r/   rÑ   rÔ   rÂ   r   rœ   s          r   Úsock_recvfrom_intoz(BaseSelectorEventLoop.sock_recvfrom_intoÝ  s7  è è € õ 	Ô% dÑ+Ô+Ð+ØŒ;ð 	@˜4Ÿ?š?Ñ,Ô,°Ò1Ð1ÝÐ>Ñ?Ô?Ð?Øð 	Ý˜‘X”XˆFð	Ø×%Ò% c¨6Ñ2Ô2Ð2øÝÕ!1Ð2ð 	ð 	ð 	ØˆDð	øøøà× Ò Ñ"Ô"ˆØ�[Š[‰]Œ]ˆØ×$Ò$ RÑ(Ô(Ð(Ø×!Ò! " dÔ&>ÀÀTÈ3Ø"(ñ*ô *ˆà×ÒÝÔ˜dÔ2°B¸vÐFÑFÔFñ	Hô 	Hð 	HàˆyˆyˆyˆyˆyˆyÐs   ÁA- Á-BÂ Bc                 ó,  — |                      ¦   «         rd S 	 |                     ||¦  «        }|                     |¦  «         d S # t          t          f$ r Y d S t
          t          f$ r ‚ t          $ r }|                     |¦  «         Y d }~d S d }~ww xY wr-   )	rÊ   rÞ   rË   r]   r\   r‡   rˆ   r†   rÌ   )r'   rÂ   r/   rÑ   rØ   rÛ   r‚   s          r   rß   z)BaseSelectorEventLoop._sock_recvfrom_intoö  sÎ   € ð �8Š8‰:Œ:ð 	ØˆFð		#Ø×'Ò'¨¨WÑ5Ô5ˆFð �NŠN˜6Ñ"Ô"Ð"Ð"Ð"øõ  Õ!1Ð2ð 	ð 	ð 	ØˆFˆFÝÕ-Ð.ð 	ð 	ð 	ØÝð 	#ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð	#øøøs   ˜A ÁBÁBÁ3BÂBc           	   ƒ   óV  K  — t          j        |¦  «         | j        r'|                     ¦   «         dk    rt	          d¦  «        ‚	 |                     |¦  «        }n# t          t          f$ r d}Y nw xY w|t          |¦  «        k    rdS |  	                    ¦   «         }| 
                    ¦   «         }|                      |¦  «         |                      || j        ||t          |¦  «        |g¦  «        }|                     t!          j        | j        ||¬¦  «        ¦  «         |ƒ d{V —†S )áš  Send data to the socket.

        The socket must be connected to a remote socket. This method continues
        to send data from data until either all data has been sent or an
        error occurs. None is returned on success. On error, an exception is
        raised, and there is no way to determine how much data, if any, was
        successfully processed by the receiving end of the connection.
        r   r¸   Nr¹   )r   rº   rd   r»   r�   rb   r]   r\   rÝ   r…   rK   r‘   r§   Ú_sock_sendallÚ
memoryviewr½   r¾   r¿   Ú_sock_write_done)r'   r/   rX   rÁ   rÂ   r   rœ   s          r   Úsock_sendallz"BaseSelectorEventLoop.sock_sendall  sC  è è € õ 	Ô% dÑ+Ô+Ð+ØŒ;ð 	@˜4Ÿ?š?Ñ,Ô,°Ò1Ð1ÝÐ>Ñ?Ô?Ð?ð	Ø—	’	˜$‘”ˆAˆAøÝÕ!1Ð2ð 	ð 	ð 	ØˆAˆAˆAð	øøøð •�D‘	”	Š>ˆ>àˆFà× Ò Ñ"Ô"ˆØ�[Š[‰]Œ]ˆØ×$Ò$ RÑ(Ô(Ð(à×!Ò! " dÔ&8¸#¸tÝ",¨TÑ"2Ô"2°Q°Cñ9ô 9ˆà×ÒÝÔ˜dÔ3°RÀÐGÑGÔGñ	Iô 	Ið 	IàˆyˆyˆyˆyˆyˆyÐs   ÁA ÁA2Á1A2c                 óŠ  — |                      ¦   «         rd S |d         }	 |                     ||d …         ¦  «        }nQ# t          t          f$ r Y d S t          t
          f$ r ‚ t          $ r }|                     |¦  «         Y d }~d S d }~ww xY w||z  }|t          |¦  «        k    r| 	                    d ¦  «         d S ||d<   d S ©Nr   )
rÊ   rb   r]   r\   r‡   rˆ   r†   rÌ   rÝ   rË   )r'   rÂ   r/   ÚviewÚposÚstartrÁ   r‚   s           r   rä   z#BaseSelectorEventLoop._sock_sendall&  sû   € Ø�8Š8‰:Œ:ð 	àˆFØ�A”ˆð	Ø—	’	˜$˜u˜v˜vœ,Ñ'Ô'ˆAˆAøÝÕ!1Ð2ð 	ð 	ð 	ØˆFˆFÝÕ-Ð.ð 	ð 	ð 	ØÝð 	ð 	ð 	Ø×Ò˜cÑ"Ô"Ð"ØˆFˆFˆFˆFˆFøøøøð	øøøð 	�‰
ˆà•C˜‘I”IÒÐØ�NŠN˜4Ñ Ô Ð Ð Ð àˆC�‰FˆFˆFs    > ¾BÁBÁ,BÂBc              ƒ   ó  K  — t          j        |¦  «         | j        r'|                     ¦   «         dk    rt	          d¦  «        ‚	 |                     ||¦  «        S # t          t          f$ r Y nw xY w|                      ¦   «         }| 	                    ¦   «         }|  
                    |¦  «         |                      || j        ||||¦  «        }|                     t          j        | j        ||¬¦  «        ¦  «         |ƒ d{V —†S )rã   r   r¸   r¹   N)r   rº   rd   r»   r�   Úsendtor]   r\   r…   rK   r‘   r§   Ú_sock_sendtor½   r¾   r¿   ræ   )r'   r/   rX   r@   rÂ   r   rœ   s          r   Úsock_sendtoz!BaseSelectorEventLoop.sock_sendto<  s$  è è € õ 	Ô% dÑ+Ô+Ð+ØŒ;ð 	@˜4Ÿ?š?Ñ,Ô,°Ò1Ð1ÝÐ>Ñ?Ô?Ð?ð	Ø—;’;˜t WÑ-Ô-Ð-øÝÕ!1Ð2ð 	ð 	ð 	ØˆDð	øøøð × Ò Ñ"Ô"ˆØ�[Š[‰]Œ]ˆØ×$Ò$ RÑ(Ô(Ð(à×!Ò! " dÔ&7¸¸dÀDØ")ñ+ô +ˆà×ÒÝÔ˜dÔ3°RÀÐGÑGÔGñ	Iô 	Ið 	IàˆyˆyˆyˆyˆyˆyÐs   ÁA ÁA0Á/A0c                 ó.  — |                      ¦   «         rd S 	 |                     |d|¦  «        }|                     |¦  «         d S # t          t          f$ r Y d S t
          t          f$ r ‚ t          $ r }|                     |¦  «         Y d }~d S d }~ww xY wré   )	rÊ   rî   rË   r]   r\   r‡   rˆ   r†   rÌ   )r'   rÂ   r/   rX   r@   rÁ   r‚   s          r   rï   z"BaseSelectorEventLoop._sock_sendtoW  sÌ   € Ø�8Š8‰:Œ:ð 	àˆFð		Ø—’˜D ! WÑ-Ô-ˆAð �NŠN˜1ÑÔÐÐÐøõ  Õ!1Ð2ð 	ð 	ð 	ØˆFˆFÝÕ-Ð.ð 	ð 	ð 	ØÝð 	#ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð	#øøøs   ˜A ÁBÁBÁ4BÂBc              ƒ   óì  K  — t          j        |¦  «         | j        r'|                     ¦   «         dk    rt	          d¦  «        ‚|j        t          j        k    s!t           j        rR|j        t          j	        k    r=|  
                    ||j        |j        |j        | ¬¦  «        ƒ d{V —†}|d         \  }}}}}|                      ¦   «         }|                      |||¦  «         	 |ƒ d{V —†	 d}S # d}w xY w)zTConnect to a remote socket at address.

        This method is a coroutine.
        r   r¸   )ÚfamilyÚtypeÚprotoÚloopN)r   rº   rd   r»   r�   ró   rP   ÚAF_INETÚ	_HAS_IPv6ÚAF_INET6Ú_ensure_resolvedrô   rõ   r…   Ú_sock_connect)r'   r/   r@   Úresolvedr   rÂ   s         r   Úsock_connectz"BaseSelectorEventLoop.sock_connectf  s&  è è € õ
 	Ô% dÑ+Ô+Ð+ØŒ;ð 	@˜4Ÿ?š?Ñ,Ô,°Ò1Ð1ÝÐ>Ñ?Ô?Ð?àŒ;�&œ.Ò(Ð(ÝÔ%ð )Ø*.¬+½¼Ò*HÐ*HØ!×2Ò2Ø ¤°$´)À4Ä:Øð 3ñ ô ð ð ð ð ð ð ˆHð #+¨1¤+ÑˆAˆq�!�Q˜à× Ò Ñ"Ô"ˆØ×Ò˜3  gÑ.Ô.Ð.ð	Ø�9�9�9�9�9�9Ðð ˆCˆCø�$ˆCˆJˆJˆJˆJs   Ã$C/ Ã/C3c                 óú  — |                      ¦   «         }	 |                     |¦  «         |                     d ¦  «         n±# t          t          f$ re |                      |¦  «         |                      || j        |||¦  «        }|                     t          j
        | j        ||¬¦  «        ¦  «         Y n<t          t          f$ r ‚ t          $ r}|                     |¦  «         Y d }~nd }~ww xY wd }d S # d }w xY w)Nr¹   )rK   ÚconnectrË   r]   r\   r‘   r§   Ú_sock_connect_cbr½   r¾   r¿   ræ   r‡   rˆ   r†   rÌ   )r'   rÂ   r/   r@   r   rœ   r‚   s          r   rû   z#BaseSelectorEventLoop._sock_connect  sG  € Ø�[Š[‰]Œ]ˆð	Ø�LŠL˜Ñ!Ô!Ð!ð  �NŠN˜4Ñ Ô Ð Ð øõ  Õ!1Ð2ð 		Mð 		Mð 		Mð
 ×(Ò(¨Ñ,Ô,Ð,Ø×%Ò%Ø�DÔ)¨3°°gñ?ô ?ˆFà×!Ò!ÝÔ! $Ô"7¸ÀFÐKÑKÔKñMô Mð Mð Mð MåÕ-Ð.ð 	ð 	ð 	ØÝð 	#ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð	#øøøð
 ˆCˆCˆCø�$ˆCˆJˆJˆJˆJs;   –A «C6 ÁA3C/Â4C6 Â6C/ÃC*Ã%C6 Ã*C/Ã/C6 Ã6C:c                 ó`   — |�|                      ¦   «         s|                      |¦  «         d S d S r-   )rÆ   r¶   rÇ   s       r   ræ   z&BaseSelectorEventLoop._sock_write_done–  rÈ   r(   c                 ó˜  — |                      ¦   «         rd S 	 |                     t          j        t          j        ¦  «        }|dk    rt          |d|› �¦  «        ‚	 |                     d ¦  «         nO# t          t          f$ r Y n<t          t          f$ r ‚ t          $ r}|                     |¦  «         Y d }~nd }~ww xY wd }d S # d }w xY w)Nr   zConnect call failed )rÊ   Ú
getsockoptrP   Ú
SOL_SOCKETÚSO_ERRORrc   rË   r]   r\   r‡   rˆ   r†   rÌ   )r'   rÂ   r/   r@   Úerrr‚   s         r   r   z&BaseSelectorEventLoop._sock_connect_cbš  s  € Ø�8Š8‰:Œ:ð 	ØˆFð	Ø—/’/¥&Ô"3µV´_ÑEÔEˆCØ�aŠxˆxå˜cÐ#C¸'Ð#CÐ#CÑDÔDÐDð ð �NŠN˜4Ñ Ô Ð Ð øõ  Õ!1Ð2ð 	ð 	ð 	àˆDÝÕ-Ð.ð 	ð 	ð 	ØÝð 	#ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð	#øøøð
 ˆCˆCˆCø�$ˆCˆJˆJˆJˆJs<   ˜AA2 ÁC Á2B>ÂC ÂB>ÂB9Â4C Â9B>Â>C ÃC	c              ƒ   óî   K  — t          j        |¦  «         | j        r'|                     ¦   «         dk    rt	          d¦  «        ‚|                      ¦   «         }|                      ||¦  «         |ƒ d{V —†S )aW  Accept a connection.

        The socket must be bound to an address and listening for connections.
        The return value is a pair (conn, address) where conn is a new socket
        object usable to send and receive data on the connection, and address
        is the address bound to the socket on the other end of the connection.
        r   r¸   N)r   rº   rd   r»   r�   r…   Ú_sock_accept)r'   r/   rÂ   s      r   Úsock_acceptz!BaseSelectorEventLoop.sock_accept¯  s€   è è € õ 	Ô% dÑ+Ô+Ð+ØŒ;ð 	@˜4Ÿ?š?Ñ,Ô,°Ò1Ð1ÝÐ>Ñ?Ô?Ð?Ø× Ò Ñ"Ô"ˆØ×Ò˜#˜tÑ$Ô$Ð$ØˆyˆyˆyˆyˆyˆyÐr(   c                 ó  — |                      ¦   «         }	 |                     ¦   «         \  }}|                     d¦  «         |                     ||f¦  «         d S # t          t
          f$ re |                      |¦  «         |                      || j        ||¦  «        }| 	                    t          j        | j        ||¬¦  «        ¦  «         Y d S t          t          f$ r ‚ t          $ r }|                     |¦  «         Y d }~d S d }~ww xY w)NFr¹   )rK   rr   rR   rË   r]   r\   r‘   rS   r  r½   r¾   r¿   rÀ   r‡   rˆ   r†   rÌ   )r'   rÂ   r/   r   r€   r@   rœ   r‚   s           r   r  z"BaseSelectorEventLoop._sock_accept¾  sI  € Ø�[Š[‰]Œ]ˆð	,Ø ŸKšK™MœM‰MˆD�'Ø×Ò˜UÑ#Ô#Ð#ð �NŠN˜D '˜?Ñ+Ô+Ð+Ð+Ð+øõ  Õ!1Ð2ð 	Lð 	Lð 	LØ×(Ò(¨Ñ,Ô,Ð,Ø×%Ò% b¨$Ô*;¸SÀ$ÑGÔGˆFØ×!Ò!ÝÔ! $Ô"6¸À6ÐJÑJÔJñLô Lð Lð Lð Lð LåÕ-Ð.ð 	ð 	ð 	ØÝð 	#ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð	#øøøs   –,A ÁA2D
ÃD
Ã*DÄD
c              ƒ   óà  K  — | j         |j        = |                     ¦   «         }|                     ¦   «          |                     ¦   «         ƒ d {V —† 	 |                      |j        |||d¬¦  «        ƒ d {V —†	 |                     ¦   «          |r|                     ¦   «          || j         |j        <   S # |                     ¦   «          |r|                     ¦   «          || j         |j        <   w xY w)NF)Úfallback)	r&   Ú_sock_fdÚ
is_readingÚpause_readingÚ_make_empty_waiterÚsock_sendfileÚ_sockÚ_reset_empty_waiterÚresume_reading)r'   ÚtranspÚfileÚoffsetÚcountr  s         r   Ú_sendfile_nativez&BaseSelectorEventLoop._sendfile_nativeÏ  s1  è è € ØÔ˜Vœ_Ð-Ø×*Ò*Ñ,Ô,ˆØ×ÒÑÔÐØ×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð	7Ø×+Ò+¨F¬L¸$ÀÈØ5:ð ,ñ <ô <ð <ð <ð <ð <ð <ð <ð <ð ×&Ò&Ñ(Ô(Ð(Øð (Ø×%Ò%Ñ'Ô'Ð'Ø06ˆDÔ˜Vœ_Ñ-Ð-øð ×&Ò&Ñ(Ô(Ð(Øð (Ø×%Ò%Ñ'Ô'Ð'Ø06ˆDÔ˜Vœ_Ñ-Ð6Ð6Ð6Ð6s   Á$B2 Â2;C-c                 óF  — |D ]�\  }}|j         |j        c}\  }}|t          j        z  r4|�2|j        r|                      |¦  «         n|                      |¦  «         |t          j        z  r4|�2|j        r|                      |¦  «         Œˆ|                      |¦  «         Œžd S r-   )	ÚfileobjrX   r   r–   Ú
_cancelledrI   Ú_add_callbackr¦   rª   )r'   Ú
event_listr   r�   r  rž   rŸ   s          r   Ú_process_eventsz%BaseSelectorEventLoop._process_eventsÝ  sË   € Ø#ð 	/ð 	/‰IˆC�Ø(+¬°S´XÐ%ˆGÑ%�f˜fØ•iÔ*Ñ*ð /¨vÐ/AØÔ$ð /Ø×'Ò'¨Ñ0Ô0Ð0Ð0à×&Ò& vÑ.Ô.Ð.Ø•iÔ+Ñ+ð /°Ð0BØÔ$ð /Ø×'Ò'¨Ñ0Ô0Ð0Ð0à×&Ò& vÑ.Ô.Ð.øð	/ð 	/r(   c                 ó|   — |                       |                     ¦   «         ¦  «         |                     ¦   «          d S r-   )rI   rK   rG   )r'   r/   s     r   Ú_stop_servingz#BaseSelectorEventLoop._stop_servingë  s/   € Ø×Ò˜DŸKšK™MœMÑ*Ô*Ð*Ø�
Š
‰Œˆˆˆr(   r-   ©NNN)r   )4r!   Ú
__module__Ú__qualname__Ú__doc__r   r2   r   ÚSSL_HANDSHAKE_TIMEOUTÚSSL_SHUTDOWN_TIMEOUTr=   rA   rG   rF   r#   rY   rT   rf   rl   ri   rs   r‘   rS   rI   r§   rª   r­   r±   r´   r¶   rÃ   rÀ   r¼   rÒ   rÐ   rÙ   r×   rà   rß   rç   rä   rð   rï   rý   rû   ræ   r   r	  r  r  r  r!  Ú__classcell__©r    s   @r   r   r   +   sˆ  ø€ € € € € ðð ð
9ð 9ð 9ð 9ð 9ð 9ð7Ø%)°$ð7ð 7ð 7ð 7ð 7ð 9=ð+à °$Ø˜tØ"+Ô"AØ!*Ô!?ð+ð +ð +ð +ð +ð$ CGðBð Bð Bð Bð
	"ð 	"ð 	"ð 	"ð 	"ð ð  ð  ðEð Eð Eðð ð ð
ð 
ð 
ð,ð ,ð ,ð& #'¨t¸SØ-6Ô-LØ,5Ô,JðFð Fð Fð Fð  D°#Ø"+Ô"AØ!*Ô!?ð	,)ð ,)ð ,)ð ,)ð`  DØ"+Ô"AØ!*Ô!?ð	)5ð )5ð )5ð )5ðV&ð &ð &ð$ð ð ð ð ð ð*ð ð ð ð ð ð..ð .ð .ð
'ð 'ð 'ð
.ð .ð .ð
'ð 'ð 'ð
ð ð ð,#ð #ð #ð #ð!ð !ð !ð ð ð ð*#ð #ð #ð"ð ð ð.#ð #ð #ð"ð ð ð ð2#ð #ð #ð"ð ð ð>ð ð ð,ð ð ð6ð ð ðð ð ð2ð ð ð.#ð #ð #ð #ðð ð ð*ð ð ð,ð ,ð ,ð"7ð 7ð 7ð/ð /ð /ðð ð ð ð ð ð r(   r   c                   ó„   ‡ — e Zd ZdZe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d„ Zˆ xZS )Ú_SelectorTransporti   Nc                 ó²  •— t          ¦   «                              ||¦  «         t          j        |¦  «        | j        d<   	 |                     ¦   «         | j        d<   n# t          $ r d | j        d<   Y nw xY wd| j        vr=	 |                     ¦   «         | j        d<   n# t          j	        $ r d | j        d<   Y nw xY w|| _
        |                     ¦   «         | _        d| _        |                      |¦  «         || _        |                      ¦   «         | _        d| _        d| _        | j        �| j                             ¦   «          | |j        | j        <   d S )NrP   Úsocknamern   Fr   )r   r   r   r|   Ú_extraÚgetsocknamerc   ÚgetpeernamerP   Úerrorr  rK   r  Ú_protocol_connectedÚset_protocolÚ_serverÚ_buffer_factoryÚ_bufferÚ
_conn_lostÚ_closingÚ_attachr&   )r'   rö   r/   r0   r*   r+   r    s         €r   r   z_SelectorTransport.__init__ü  sh  ø€ Ý‰Œ×Ò˜ Ñ%Ô%Ð%Ý &Ô 6°tÑ <Ô <ˆŒ�HÑð	+Ø&*×&6Ò&6Ñ&8Ô&8ˆDŒK˜
Ñ#Ð#øÝð 	+ð 	+ð 	+Ø&*ˆDŒK˜
Ñ#Ð#Ð#ð	+øøøà˜Tœ[Ð(Ð(ð/Ø*.×*:Ò*:Ñ*<Ô*<�”˜JÑ'Ð'øÝ”<ð /ð /ð /Ø*.�”˜JÑ'Ð'Ð'ð/øøøàˆŒ
ØŸš™œˆŒà#(ˆÔ Ø×Ò˜(Ñ#Ô#Ð#àˆŒØ×+Ò+Ñ-Ô-ˆŒØˆŒØˆŒØŒ<Ð#ØŒL× Ò Ñ"Ô"Ð"Ø*.ˆÔ˜œÑ'Ð'Ð's$   ÁA ÁA5Á4A5ÂB ÂB;Â:B;c                 óÈ  — | j         j        g}| j        €|                     d¦  «         n| j        r|                     d¦  «         |                     d| j        › �¦  «         | j        �Ñ| j                             ¦   «         s¸t          | j        j	        | j        t          j        ¦  «        }|r|                     d¦  «         n|                     d¦  «         t          | j        j	        | j        t          j        ¦  «        }|rd}nd}|                      ¦   «         }|                     d|› d	|› d
�¦  «         d                     d                     |¦  «        ¦  «        S )NÚclosedÚclosingzfd=zread=pollingz	read=idleÚpollingÚidlezwrite=<z
, bufsize=ú>z<{}>ú )r    r!   r  Úappendr8  r  Ú_looprE   r   r"   r   r–   r¦   Úget_write_buffer_sizeÚformatÚjoin)r'   Úinfor=  ÚstaterØ   s        r   Ú__repr__z_SelectorTransport.__repr__  s]  € Ø”Ô'Ð(ˆØŒ:ÐØ�KŠK˜Ñ!Ô!Ð!Ð!ØŒ]ð 	#Ø�KŠK˜	Ñ"Ô"Ð"Ø�ŠÐ)˜$œ-Ð)Ð)Ñ*Ô*Ð*àŒ:Ð!¨$¬*×*>Ò*>Ñ*@Ô*@Ð!Ý*¨4¬:Ô+?Ø+/¬=½)Ô:NñPô PˆGàð )Ø—’˜NÑ+Ô+Ð+Ð+à—’˜KÑ(Ô(Ð(å*¨4¬:Ô+?Ø+/¬=Ý+4Ô+@ñBô BˆGð ð Ø!��à�à×0Ò0Ñ2Ô2ˆGØ�KŠKÐ= %Ð=Ð=°7Ð=Ð=Ð=Ñ>Ô>Ð>Ø�}Š}˜SŸXšX d™^œ^Ñ,Ô,Ð,r(   c                 ó0   — |                       d ¦  «         d S r-   )Ú_force_closerN   s    r   Úabortz_SelectorTransport.abort2  s   € Ø×Ò˜$ÑÔÐÐÐr(   c                 ó"   — || _         d| _        d S ©NT)Ú	_protocolr2  )r'   r0   s     r   r3  z_SelectorTransport.set_protocol5  s   € Ø!ˆŒØ#'ˆÔ Ð Ð r(   c                 ó   — | j         S r-   )rN  rN   s    r   Úget_protocolz_SelectorTransport.get_protocol9  s
   € ØŒ~Ðr(   c                 ó   — | j         S r-   )r8  rN   s    r   r�   z_SelectorTransport.is_closing<  s
   € ØŒ}Ðr(   c                 ó  — | j         rd S d| _         | j                             | j        ¦  «         | j        sQ| xj        dz  c_        | j                             | j        ¦  «         | j                             | j        d ¦  «         d S d S ©NTr   )	r8  rB  rI   r  r6  r7  rª   Ú	call_soonÚ_call_connection_lostrN   s    r   rG   z_SelectorTransport.close?  s�   € ØŒ=ð 	ØˆFØˆŒØŒ
×!Ò! $¤-Ñ0Ô0Ð0ØŒ|ð 	CØˆOŒO˜qÑ ˆOŒOØŒJ×%Ò% d¤mÑ4Ô4Ð4ØŒJ× Ò  Ô!;¸TÑBÔBÐBÐBÐBð	Cð 	Cr(   c                 óv   — | j         �1 |d| ›�t          | ¬¦  «         | j                              ¦   «          d S d S )Nzunclosed transport )Úsource)r  ÚResourceWarningrG   )r'   Ú_warns     r   Ú__del__z_SelectorTransport.__del__I  sL   € ØŒ:Ð!ØˆEÐ0¨Ð0Ð0µ/È$ÐOÑOÔOÐOØŒJ×ÒÑÔÐÐÐð "Ð!r(   úFatal error on transportc                 ó  — t          |t          ¦  «        r2| j                             ¦   «         rt	          j        d| |d¬¦  «         n$| j                             ||| | j        dœ¦  «         |                      |¦  «         d S )Nz%r: %sTr`   )ro   rp   r„   r0   )	r‹   rc   rB  Ú	get_debugr   r   r{   rN  rJ  )r'   r‚   ro   s      r   Ú_fatal_errorz_SelectorTransport._fatal_errorN  s“   € å�c�7Ñ#Ô#ð 		ØŒz×#Ò#Ñ%Ô%ð EÝ”˜X t¨W¸tÐDÑDÔDÐDøàŒJ×-Ò-Ø"Ø Ø!Ø œNð	/ð /ñ ô ð ð 	×Ò˜#ÑÔÐÐÐr(   c                 óP  — | j         rd S | j        r8| j                             ¦   «          | j                             | j        ¦  «         | j        s&d| _        | j                             | j        ¦  «         | xj         dz  c_         | j                             | j	        |¦  «         d S rS  )
r7  r6  ÚclearrB  rª   r  r8  rI   rT  rU  )r'   r‚   s     r   rJ  z_SelectorTransport._force_close\  s¡   € ØŒ?ð 	ØˆFØŒ<ð 	5ØŒL×ÒÑ Ô Ð ØŒJ×%Ò% d¤mÑ4Ô4Ð4ØŒ}ð 	5Ø ˆDŒMØŒJ×%Ò% d¤mÑ4Ô4Ð4ØˆŒ˜1ÑˆŒØŒ
×Ò˜TÔ7¸Ñ=Ô=Ð=Ð=Ð=r(   c                 ó   — 	 | j         r| j                             |¦  «         | j                             ¦   «          d | _        d | _        d | _        | j        }|�|                     ¦   «          d | _        d S d S # | j                             ¦   «          d | _        d | _        d | _        | j        }|�|                     ¦   «          d | _        w xY wr-   )r2  rN  Úconnection_lostr  rG   rB  r4  Ú_detach)r'   r‚   r+   s      r   rU  z(_SelectorTransport._call_connection_losth  sÝ   € ð	$ØÔ'ð 4Ø”×.Ò.¨sÑ3Ô3Ð3àŒJ×ÒÑÔÐØˆDŒJØ!ˆDŒNØˆDŒJØ”\ˆFØÐ!Ø—’Ñ Ô Ð Ø#�”��ð "Ð!øð ŒJ×ÒÑÔÐØˆDŒJØ!ˆDŒNØˆDŒJØ”\ˆFØÐ!Ø—’Ñ Ô Ð Ø#�”Ð#Ð#Ð#Ð#s   ‚!A9 Á9ACc                 ó*   — t          | j        ¦  «        S r-   )rÝ   r6  rN   s    r   rC  z(_SelectorTransport.get_write_buffer_sizev  s   € Ý�4”<Ñ Ô Ð r(   c                 ó@   — | j         rd S  | j        j        ||g|¢R Ž  d S r-   )r8  rB  rS   r¬   s       r   rS   z_SelectorTransport._add_readery  s6   € ØŒ=ð 	ØˆFàˆŒ
Ô˜r 8Ð3¨dÐ3Ð3Ð3Ð3Ð3Ð3r(   )NN)r[  )r!   r#  r$  Úmax_sizeÚ	bytearrayr5  r  r   rH  rK  r3  rP  r�   rG   ÚwarningsÚwarnrZ  r^  rJ  rU  rC  rS   r(  r)  s   @r   r+  r+  ð  s  ø€ € € € € ð €Hà€Oð
 €Eð/ð /ð /ð /ð /ð /ð4-ð -ð -ð8 ð  ð  ð(ð (ð (ðð ð ðð ð ðCð Cð Cð %œMð ð ð ð ð
ð ð ð ð
>ð 
>ð 
>ð$ð $ð $ð!ð !ð !ð4ð 4ð 4ð 4ð 4ð 4ð 4r(   r+  c                   ó¢   ‡ — e Zd ZdZej        j        Z	 	 dˆ fd„	Zˆ fd„Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ fd„Zd„ Zd„ Zˆ xZS )r.   TNc                 ó°  •— d | _         t          ¦   «                              |||||¦  «         d| _        d| _        d | _        t          j        | j        ¦  «         | j	         
                    | j        j        | ¦  «         | j	         
                    | j        | j        | j        ¦  «         |�(| j	         
                    t           j        |d ¦  «         d S d S r   )Ú_read_ready_cbr   r   Ú_eofÚ_pausedÚ_empty_waiterr   Ú_set_nodelayr  rB  rT  rN  Úconnection_maderS   r  Ú_read_readyr   Ú_set_result_unless_cancelled)r'   rö   r/   r0   r1   r*   r+   r    s          €r   r   z!_SelectorSocketTransport.__init__…  sÚ   ø€ ð #ˆÔÝ‰Œ×Ò˜˜t X¨u°fÑ=Ô=Ð=ØˆŒ	ØˆŒØ!ˆÔõ
 	Ô  ¤Ñ,Ô,Ð,àŒ
×Ò˜Tœ^Ô;¸TÑBÔBÐBàŒ
×Ò˜TÔ-Ø!œ]¨DÔ,<ñ	>ô 	>ð 	>àÐàŒJ× Ò ¥Ô!EØ!'¨ñ/ô /ð /ð /ð /ð Ðr(   c                 ó°   •— t          |t          j        ¦  «        r| j        | _        n| j        | _        t          ¦   «                              |¦  «         d S r-   )r‹   r	   ÚBufferedProtocolÚ_read_ready__get_bufferrl  Ú_read_ready__data_receivedr   r3  )r'   r0   r    s     €r   r3  z%_SelectorSocketTransport.set_protocolœ  sP   ø€ Ý�h¥	Ô :Ñ;Ô;ð 	BØ"&Ô">ˆDÔÐà"&Ô"AˆDÔå‰Œ×Ò˜XÑ&Ô&Ð&Ð&Ð&r(   c                 ó"   — | j          o| j         S r-   )rn  r8  rN   s    r   r  z#_SelectorSocketTransport.is_reading¤  s   € Ø”<ÐÐ5¨¬Ð$5Ð5r(   c                 óÒ   — | j         s| j        rd S d| _        | j                             | j        ¦  «         | j                             ¦   «         rt          j        d| ¦  «         d S d S )NTz%r pauses reading)r8  rn  rB  rI   r  r]  r   r   rN   s    r   r  z&_SelectorSocketTransport.pause_reading§  sr   € ØŒ=ð 	˜DœLð 	ØˆFØˆŒØŒ
×!Ò! $¤-Ñ0Ô0Ð0ØŒ:×ÒÑ!Ô!ð 	4ÝŒLÐ,¨dÑ3Ô3Ð3Ð3Ð3ð	4ð 	4r(   c                 óÔ   — | j         s| j        sd S d| _        |                      | j        | j        ¦  «         | j                             ¦   «         rt          j        d| ¦  «         d S d S )NFz%r resumes reading)	r8  rn  rS   r  rr  rB  r]  r   r   rN   s    r   r  z'_SelectorSocketTransport.resume_reading¯  su   € ØŒ=ð 	 ¤ð 	ØˆFØˆŒØ×Ò˜œ¨Ô(8Ñ9Ô9Ð9ØŒ:×ÒÑ!Ô!ð 	5ÝŒLÐ-¨tÑ4Ô4Ð4Ð4Ð4ð	5ð 	5r(   c                 ó.   — |                       ¦   «          d S r-   )rl  rN   s    r   rr  z$_SelectorSocketTransport._read_ready·  s   € Ø×ÒÑÔÐÐÐr(   c                 óÊ  — | j         rd S 	 | j                             d¦  «        }t          |¦  «        st	          d¦  «        ‚n?# t
          t          f$ r ‚ t          $ r!}|                      |d¦  «         Y d }~d S d }~ww xY w	 | j	         
                    |¦  «        }nR# t          t          f$ r Y d S t
          t          f$ r ‚ t          $ r!}|                      |d¦  «         Y d }~d S d }~ww xY w|s|                      ¦   «          d S 	 | j                             |¦  «         d S # t
          t          f$ r ‚ t          $ r!}|                      |d¦  «         Y d }~d S d }~ww xY w)Néÿÿÿÿz%get_buffer() returned an empty bufferz/Fatal error: protocol.get_buffer() call failed.ú$Fatal read error on socket transportz3Fatal error: protocol.buffer_updated() call failed.)r7  rN  Ú
get_bufferrÝ   rD   r‡   rˆ   r†   r^  r  rÏ   r]   r\   Ú_read_ready__on_eofÚbuffer_updated)r'   rÑ   r‚   rÔ   s       r   rv  z0_SelectorSocketTransport._read_ready__get_bufferº  s  € ØŒ?ð 	ØˆFð		Ø”.×+Ò+¨BÑ/Ô/ˆCÝ�s‘8”8ð LÝ"Ð#JÑKÔKÐKðLøåÕ-Ð.ð 	ð 	ð 	ØÝð 	ð 	ð 	Ø×ÒØÐFñHô Hð HàˆFˆFˆFˆFˆFøøøøð	øøøð
	Ø”Z×)Ò)¨#Ñ.Ô.ˆFˆFøÝÕ!1Ð2ð 	ð 	ð 	ØˆFˆFÝÕ-Ð.ð 	ð 	ð 	ØÝð 	ð 	ð 	Ø×Ò˜cÐ#IÑJÔJÐJØˆFˆFˆFˆFˆFøøøøð	øøøð ð 	Ø×$Ò$Ñ&Ô&Ð&ØˆFð	LØŒN×)Ò)¨&Ñ1Ô1Ð1Ð1Ð1øÝÕ-Ð.ð 	ð 	ð 	ØÝð 	Lð 	Lð 	LØ×ÒØÐJñLô Lð Lð Lð Lð Lð Lð Lð Løøøøð	LøøøsM   ‹8A ÁB ÁA;Á;B ÂB ÂC.Â3C.ÃC)Ã)C.Ä
D& Ä&E"ÅEÅE"c                 óâ  — | j         rd S 	 | j                             | j        ¦  «        }nR# t          t
          f$ r Y d S t          t          f$ r ‚ t          $ r!}|  	                    |d¦  «         Y d }~d S d }~ww xY w|s|  
                    ¦   «          d S 	 | j                             |¦  «         d S # t          t          f$ r ‚ t          $ r!}|  	                    |d¦  «         Y d }~d S d }~ww xY w)Nr~  z2Fatal error: protocol.data_received() call failed.)r7  r  r[   rf  r]   r\   r‡   rˆ   r†   r^  r€  rN  Údata_received)r'   rX   r‚   s      r   rw  z3_SelectorSocketTransport._read_ready__data_receivedß  sp  € ØŒ?ð 	ØˆFð	Ø”:—?’? 4¤=Ñ1Ô1ˆDˆDøÝÕ!1Ð2ð 	ð 	ð 	ØˆFˆFÝÕ-Ð.ð 	ð 	ð 	ØÝð 	ð 	ð 	Ø×Ò˜cÐ#IÑJÔJÐJØˆFˆFˆFˆFˆFøøøøð	øøøð ð 	Ø×$Ò$Ñ&Ô&Ð&ØˆFð	KØŒN×(Ò(¨Ñ.Ô.Ð.Ð.Ð.øÝÕ-Ð.ð 	ð 	ð 	ØÝð 	Kð 	Kð 	KØ×ÒØÐIñKô Kð Kð Kð Kð Kð Kð Kð Køøøøð	Køøøs2   ‹+ «A:¿A:ÁA5Á5A:ÂB2 Â2C.ÃC)Ã)C.c                 ó„  — | j                              ¦   «         rt          j        d| ¦  «         	 | j                             ¦   «         }n?# t          t          f$ r ‚ t          $ r!}|  	                    |d¦  «         Y d }~d S d }~ww xY w|r!| j          
                    | j        ¦  «         d S |                      ¦   «          d S )Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.)rB  r]  r   r   rN  Úeof_receivedr‡   rˆ   r†   r^  rI   r  rG   )r'   Ú	keep_openr‚   s      r   r€  z,_SelectorSocketTransport._read_ready__on_eofø  sè   € ØŒ:×ÒÑ!Ô!ð 	2ÝŒLÐ*¨DÑ1Ô1Ð1ð	Øœ×3Ò3Ñ5Ô5ˆIˆIøÝÕ-Ð.ð 	ð 	ð 	ØÝð 	ð 	ð 	Ø×ÒØÐHñJô Jð JàˆFˆFˆFˆFˆFøøøøð	øøøð
 ð 	ð ŒJ×%Ò% d¤mÑ4Ô4Ð4Ð4Ð4à�JŠJ‰LŒLˆLˆLˆLs   °A
 Á
BÁ%BÂB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        s 	 | j                             |¦  «        }||d …         }|sd S nQ# t$          t&          f$ r Y n>t(          t*          f$ r ‚ t,          $ r!}|                      |d¦  «         Y d }~d S d }~ww xY w| j                             | j        | j        ¦  «         | j                             |¦  «         |                      ¦   «          d S )Nú/data argument must be a bytes-like object, not z%Cannot call write() after write_eof()z(unable to write; sendfile is in progressúsocket.send() raised exception.r   ú%Fatal write error on socket transport)r‹   Úbytesrg  rå   rŽ   rô   r!   rm  rD   ro  r7  r   Ú!LOG_THRESHOLD_FOR_CONNLOST_WRITESr   Úwarningr6  r  rb   r]   r\   r‡   rˆ   r†   r^  rB  r§   r  Ú_write_readyÚextendÚ_maybe_pause_protocol)r'   rX   rÁ   r‚   s       r   Úwritez_SelectorSocketTransport.write  s×  € Ý˜$¥­	µ:Ð >Ñ?Ô?ð 	<Ýð ;Ý#'¨¡:¤:Ô#6ð;ð ;ñ <ô <ð <àŒ9ð 	HÝÐFÑGÔGÐGØÔÐ)ÝÐIÑJÔJÐJØð 	ØˆFàŒ?ð 	ØŒ¥)Ô"MÒMÐMÝ”Ð@ÑAÔAÐAØˆOŒO˜qÑ ˆOŒOØˆFàŒ|ð 	EðØ”J—O’O DÑ)Ô)�ð ˜A˜B˜B”x�Øð Ø�Fðøõ $Õ%5Ð6ð ð ð Ø�ÝÕ 1Ð2ð ð ð ØÝ ð ð ð Ø×!Ò! #Ð'NÑOÔOÐOØ�����øøøøðøøøð ŒJ×"Ò" 4¤=°$Ô2CÑDÔDÐDð 	Œ×Ò˜DÑ!Ô!Ð!Ø×"Ò"Ñ$Ô$Ð$Ð$Ð$s   ÃC* Ã*D8Ã=D8ÄD3Ä3D8c                 óD  — | j         s
J d¦   «         ‚| j        rd S 	 | j                             | j         ¦  «        }|r
| j         d |…= |                      ¦   «          | j         s‹| j                             | j        ¦  «         | j        �| j         	                    d ¦  «         | j
        r|                      d ¦  «         d S | j        r(| j                             t          j        ¦  «         d S d S d S # t           t"          f$ r Y d S t$          t&          f$ r ‚ t(          $ r€}| j                             | j        ¦  «         | j                              ¦   «          |                      |d¦  «         | j        � | j                             |¦  «         Y d }~d S Y d }~d S d }~ww xY w)NzData should not be emptyrŠ  )r6  r7  r  rb   Ú_maybe_resume_protocolrB  rª   r  ro  rË   r8  rU  rm  ÚshutdownrP   ÚSHUT_WRr]   r\   r‡   rˆ   r†   r`  r^  rÌ   )r'   rÁ   r‚   s      r   rŽ  z%_SelectorSocketTransport._write_ready4  sò  € ØŒ|Ð7Ð7Ð7Ñ7Ô7Ð7àŒ?ð 	ØˆFð	8Ø”
—’ ¤Ñ-Ô-ˆAð ð %Ø”L  ! Ð$Ø×'Ò'Ñ)Ô)Ð)Ø”<ð 8Ø”
×)Ò)¨$¬-Ñ8Ô8Ð8ØÔ%Ð1ØÔ&×1Ò1°$Ñ7Ô7Ð7Ø”=ð 8Ø×.Ò.¨tÑ4Ô4Ð4Ð4Ð4Ø”Yð 8Ø”J×'Ò'­¬Ñ7Ô7Ð7Ð7Ð7ð8ð 8ð8ð 8øõ)  Õ!1Ð2ð 	ð 	ð 	ØˆDˆDÝÕ-Ð.ð 	ð 	ð 	ØÝð 	6ð 	6ð 	6ØŒJ×%Ò% d¤mÑ4Ô4Ð4ØŒL×ÒÑ Ô Ð Ø×Ò˜cÐ#JÑKÔKÐKØÔ!Ð-ØÔ"×0Ò0°Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ð .Ð-Ð-Ð-Ð-Ð-øøøøð		6øøøs   œC1 Ã1FÄFÄA/FÆFc                 óŽ   — | j         s| j        rd S d| _        | j        s&| j                             t
          j        ¦  «         d S d S rM  )r8  rm  r6  r  r”  rP   r•  rN   s    r   Ú	write_eofz"_SelectorSocketTransport.write_eofR  sS   € ØŒ=ð 	˜DœIð 	ØˆFØˆŒ	ØŒ|ð 	0ØŒJ×Ò¥¤Ñ/Ô/Ð/Ð/Ð/ð	0ð 	0r(   c                 ó   — dS rM  rV   rN   s    r   Úcan_write_eofz&_SelectorSocketTransport.can_write_eofY  s   € Øˆtr(   c                 óª   •— t          ¦   «                              |¦  «         | j        �)| j                             t	          d¦  «        ¦  «         d S d S )NzConnection is closed by peer)r   rU  ro  rÌ   ÚConnectionError)r'   r‚   r    s     €r   rU  z._SelectorSocketTransport._call_connection_lost\  sb   ø€ Ý‰Œ×%Ò% cÑ*Ô*Ð*ØÔÐ)ØÔ×,Ò,ÝÐ >Ñ?Ô?ñAô Að Að Að Að *Ð)r(   c                 óº   — | j         �t          d¦  «        ‚| j                             ¦   «         | _         | j        s| j                              d ¦  «         | j         S )NzEmpty waiter is already set)ro  rD   rB  r…   r6  rË   rN   s    r   r  z+_SelectorSocketTransport._make_empty_waiterb  sZ   € ØÔÐ)ÝÐ<Ñ=Ô=Ð=Ø!œZ×5Ò5Ñ7Ô7ˆÔØŒ|ð 	0ØÔ×)Ò)¨$Ñ/Ô/Ð/ØÔ!Ð!r(   c                 ó   — d | _         d S r-   )ro  rN   s    r   r  z,_SelectorSocketTransport._reset_empty_waiterj  s   € Ø!ˆÔÐÐr(   r"  )r!   r#  r$  Ú_start_tls_compatibler   Ú_SendfileModeÚ
TRY_NATIVEÚ_sendfile_compatibler   r3  r  r  r  rr  rv  rw  r€  r‘  rŽ  r—  r™  rU  r  r  r(  r)  s   @r   r.   r.   €  sW  ø€ € € € € à ÐØ$Ô2Ô=Ðà48Ø$(ð/ð /ð /ð /ð /ð /ð.'ð 'ð 'ð 'ð 'ð6ð 6ð 6ð4ð 4ð 4ð5ð 5ð 5ðð ð ð#Lð #Lð #LðJKð Kð Kð2ð ð ð*%%ð %%ð %%ðN8ð 8ð 8ð<0ð 0ð 0ðð ð ðAð Að Að Að Að"ð "ð "ð"ð "ð "ð "ð "ð "ð "r(   r.   c                   óL   ‡ — e Zd Zej        Z	 	 dˆ fd„	Zd„ Zd„ Zdd„Z	d„ Z
ˆ xZS )	r?   Nc                 ó`  •— t          ¦   «                              ||||¦  «         || _        d| _        | j                             | j        j        | ¦  «         | j                             | j        | j	        | j
        ¦  «         |�(| j                             t          j        |d ¦  «         d S d S ré   )r   r   Ú_addressÚ_buffer_sizerB  rT  rN  rq  rS   r  rr  r   rs  )r'   rö   r/   r0   r@   r1   r*   r    s          €r   r   z#_SelectorDatagramTransport.__init__r  s²   ø€ å‰Œ×Ò˜˜t X¨uÑ5Ô5Ð5ØˆŒØˆÔØŒ
×Ò˜Tœ^Ô;¸TÑBÔBÐBàŒ
×Ò˜TÔ-Ø!œ]¨DÔ,<ñ	>ô 	>ð 	>àÐàŒJ× Ò ¥Ô!EØ!'¨ñ/ô /ð /ð /ð /ð Ðr(   c                 ó   — | j         S r-   )r¥  rN   s    r   rC  z0_SelectorDatagramTransport.get_write_buffer_size€  s   € ØÔ Ð r(   c                 ó’  — | j         rd S 	 | j                             | j        ¦  «        \  }}| j                             ||¦  «         d S # t          t          f$ r Y d S t          $ r%}| j         	                    |¦  «         Y d }~d S d }~wt          t          f$ r ‚ t          $ r!}|                      |d¦  «         Y d }~d S d }~ww xY w)Nz&Fatal read error on datagram transport)r7  r  rÖ   rf  rN  Údatagram_receivedr]   r\   rc   Úerror_receivedr‡   rˆ   r†   r^  ©r'   rX   r�   r‚   s       r   rr  z&_SelectorDatagramTransport._read_readyƒ  s  € ØŒ?ð 	ØˆFð	9Øœ×,Ò,¨T¬]Ñ;Ô;‰JˆD�$ð ŒN×,Ò,¨T°4Ñ8Ô8Ð8Ð8Ð8øõ  Õ!1Ð2ð 	ð 	ð 	ØˆDˆDÝð 	/ð 	/ð 	/ØŒN×)Ò)¨#Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.øøøøÝÕ-Ð.ð 	ð 	ð 	ØÝð 	Mð 	Mð 	MØ×Ò˜cÐ#KÑLÔLÐLÐLÐLÐLÐLÐLÐLøøøøð	Møøøs)   ‹"A
 Á
CÁ	CÁ'BÂCÂ%CÃCc                 ó   — t          |t          t          t          f¦  «        s$t	          dt          |¦  «        j        ›�¦  «        ‚|sd S | j        r)|d | j        fvrt          d| j        › �¦  «        ‚| j        }| j	        rB| j        r;| j	        t          j        k    rt          j        d¦  «         | xj	        dz  c_	        d S | j        sé	 | j        d         r| j                             |¦  «         n| j                             ||¦  «         d S # t&          t(          f$ r( | j                             | j        | j        ¦  «         Y nkt2          $ r%}| j                             |¦  «         Y d }~d S d }~wt8          t:          f$ r ‚ t<          $ r!}|                      |d¦  «         Y d }~d S d }~ww xY w| j                              t          |¦  «        |f¦  «         | xj!        tE          |¦  «        z  c_!        |  #                    ¦   «          d S )Nrˆ  z!Invalid address: must be None or r‰  r   rn   ú'Fatal write error on datagram transport)$r‹   r‹  rg  rå   rŽ   rô   r!   r¤  r�   r7  r   rŒ  r   r�  r6  r.  r  rb   rî   r]   r\   rB  r§   r  Ú_sendto_readyrc   rN  r©  r‡   rˆ   r†   r^  rA  r¥  rÝ   r�  rª  s       r   rî   z!_SelectorDatagramTransport.sendto“  si  € Ý˜$¥­	µ:Ð >Ñ?Ô?ð 	<Ýð ;Ý#'¨¡:¤:Ô#6ð;ð ;ñ <ô <ð <àð 	ØˆFàŒ=ð 	!Ø˜D $¤-Ð0Ð0Ð0Ý ØG¸¼ÐGÐGñIô Ið Ià”=ˆDàŒ?ð 	˜tœ}ð 	ØŒ¥)Ô"MÒMÐMÝ”Ð@ÑAÔAÐAØˆOŒO˜qÑ ˆOŒOØˆFàŒ|ð 	ðØ”;˜zÔ*ð 2Ø”J—O’O DÑ)Ô)Ð)Ð)à”J×%Ò% d¨DÑ1Ô1Ð1Ø�øÝ#Õ%5Ð6ð Jð Jð JØ”
×&Ò& t¤}°dÔ6HÑIÔIÐIÐIÐIÝð ð ð Ø”×-Ò-¨cÑ2Ô2Ð2Ø�����øøøøÝÕ 1Ð2ð ð ð ØÝ ð ð ð Ø×!Ò!ØÐBñDô Dð Dà�����øøøøðøøøð 	Œ×Ò�U 4™[œ[¨$Ð/Ñ0Ô0Ð0ØÐÔ�S ™YœYÑ&ÐÔØ×"Ò"Ñ$Ô$Ð$Ð$Ð$s+   ÃAD Ä6F1Å		F1ÅE2Å2F1ÆF,Æ,F1c                 óD  — | j         �r=| j                              ¦   «         \  }}| xj        t          |¦  «        z  c_        	 | j        d         r| j                             |¦  «         n| j                             ||¦  «         n·# t          t          f$ r< | j          
                    ||f¦  «         | xj        t          |¦  «        z  c_        Y nst          $ r%}| j                             |¦  «         Y d }~d S d }~wt          t          f$ r ‚ t           $ r!}|                      |d¦  «         Y d }~d S d }~ww xY w| j         �°=|                      ¦   «          | j         s=| j                             | j        ¦  «         | j        r|                      d ¦  «         d S d S d S )Nrn   r¬  )r6  Úpopleftr¥  rÝ   r.  r  rb   rî   r]   r\   Ú
appendleftrc   rN  r©  r‡   rˆ   r†   r^  r“  rB  rª   r  r8  rU  rª  s       r   r­  z(_SelectorDatagramTransport._sendto_ready¿  sí  € ØŒlñ 	Øœ×-Ò-Ñ/Ô/‰JˆD�$ØÐÔ¥ T¡¤Ñ*ÐÔðØ”;˜zÔ*ð 2Ø”J—O’O DÑ)Ô)Ð)Ð)à”J×%Ò% d¨DÑ1Ô1Ð1øøÝ#Õ%5Ð6ð ð ð Ø”×'Ò'¨¨t¨Ñ5Ô5Ð5ØÐ!Ô!¥S¨¡Y¤YÑ.Ð!Ô!Ø�Ýð ð ð Ø”×-Ò-¨cÑ2Ô2Ð2Ø�����øøøøÝÕ 1Ð2ð ð ð ØÝ ð ð ð Ø×!Ò!ØÐBñDô Dð Dà�����øøøøðøøøð# Œlñ 	ð, 	×#Ò#Ñ%Ô%Ð%ØŒ|ð 	1ØŒJ×%Ò% d¤mÑ4Ô4Ð4ØŒ}ð 1Ø×*Ò*¨4Ñ0Ô0Ð0Ð0Ð0ð	1ð 	1ð1ð 1s,   ÁAB ÂA
D;Ã	D;ÃC<Ã<D;ÄD6Ä6D;r"  r-   )r!   r#  r$  ÚcollectionsÚdequer5  r   rC  rr  rî   r­  r(  r)  s   @r   r?   r?   n  s�   ø€ € € € € à!Ô'€Oà59Ø$(ð/ð /ð /ð /ð /ð /ð!ð !ð !ð9ð 9ð 9ð *%ð *%ð *%ð *%ðX1ð 1ð 1ð 1ð 1ð 1ð 1r(   r?   )r%  Ú__all__r±  rv   r¾   r   rP   rh  r$   ÚsslÚImportErrorÚ r   r   r   r   r	   r
   r   r   Úlogr   r   ÚBaseEventLoopr   Ú_FlowControlMixinÚ	Transportr+  r.   r?   rV   r(   r   ú<module>r»     s*  ððð ð #€à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€ðØ€J€J€J€JøØð ð ð Ø
€C€C€Cðøøøð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð(ð (ð (ðBð Bð Bð Bð B˜KÔ5ñ Bô Bð BðJM4ð M4ð M4ð M4ð M4˜Ô5Ø#Ô-ñM4ô M4ð M4ð`k"ð k"ð k"ð k"ð k"Ð1ñ k"ô k"ð k"ð\l1ð l1ð l1ð l1ð l1Ð!3ñ l1ô l1ð l1ð l1ð l1s   ¢' §1°1