ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     U
    e5d                    @   s  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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zd dlZW n ek
r   dZY nX 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dlmZ ddlmZ ddlm Z  dZ!dZ"dZ#e$edZ%dZ&e' Z(dd Z)dd Z*dd Z+d*ddZ,d+ddZ-dd Z.e$ed rd!d" Z/nd#d" Z/G d$d% d%ej0Z1G d&d' d'ej2Z3G d(d) d)ej4Z5dS ),    N   )	constants)
coroutines)events)
exceptions)futures)	protocols)sslproto)	staggered)tasks)
transports)trsock)logger)BaseEventLoopd   g      ?AF_INET6iQ c                 C   s0   | j }tt|dd tjr$t|jS t| S d S )N__self__)Z	_callback
isinstancegetattrr   Taskreprr   str)handlecb r   +/usr/lib64/python3.8/asyncio/base_events.py_format_handleJ   s    
r   c                 C   s(   | t jkrdS | t jkrdS t| S d S )Nz<pipe>z<stdout>)
subprocessPIPESTDOUTr   )fdr   r   r   _format_pipeS   s
    

r!   c                 C   sL   t tdstdn4z| tjtjd W n tk
rF   tdY nX d S )NSO_REUSEPORTz)reuse_port not supported by socket moduler   zTreuse_port not supported by socket module, SO_REUSEPORT defined but not implemented.)hasattrsocket
ValueError
setsockopt
SOL_SOCKETr"   OSErrorsockr   r   r   _set_reuseport\   s    

r+   c           	   	   C   s  t tdsd S |dtjtjhks(| d kr,d S |tjkr>tj}n|tjkrPtj}nd S |d krbd}nXt|trz|dkrzd}n@t|tr|dkrd}n(zt	|}W n t
tfk
r   Y d S X |tjkrtjg}tr|tj n|g}t| tr| d} d| krd S |D ]t}zVt||  trJ|tjkrJ|||d| |||ffW   S |||d| |ffW   S W n tk
rz   Y nX q
d S )N	inet_ptonr        Zidna%)r#   r$   IPPROTO_TCPZIPPROTO_UDPSOCK_STREAM
SOCK_DGRAMr   bytesr   int	TypeErrorr%   	AF_UNSPECAF_INET	_HAS_IPv6appendr   decoder,   r(   )	hostportfamilytypeprotoZflowinfoZscopeidZafsafr   r   r   _ipaddr_infog   sN    







rA   c                 C   s   t  }| D ]*}|d }||kr(g ||< || | qt| }g }|dkr|||d d |d   |d d |d = |dd tjtj	| D  |S )Nr   r   c                 s   s   | ]}|d k	r|V  qd S Nr   ).0ar   r   r   	<genexpr>   s   z(_interleave_addrinfos.<locals>.<genexpr>)
collectionsOrderedDictr9   listvaluesextend	itertoolschainfrom_iterablezip_longest)Z	addrinfosZfirst_address_family_countZaddrinfos_by_familyaddrr=   Zaddrinfos_listsZ	reorderedr   r   r   _interleave_addrinfos   s"    
rP   c                 C   s4   |   s"|  }t|ttfr"d S t|   d S rB   )	cancelled	exceptionr   
SystemExitKeyboardInterruptr   Z	_get_loopstop)futexcr   r   r   _run_until_complete_cb   s
    rX   TCP_NODELAYc                 C   s@   | j tjtjhkr<| jtjkr<| jtjkr<| tjtj	d d S Nr   )
r=   r$   r7   r   r>   r1   r?   r0   r&   rY   r)   r   r   r   _set_nodelay   s    

r[   c                 C   s   d S rB   r   r)   r   r   r   r[      s    c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )_SendfileFallbackProtocolc                 C   sh   t |tjstd|| _| | _| | _|j	| _
|  ||  | j
r^| jj | _nd | _d S )Nz.transport should be _FlowControlMixin instance)r   r   Z_FlowControlMixinr5   
_transportZget_protocol_protoZ
is_reading_should_resume_readingZ_protocol_paused_should_resume_writingpause_readingset_protocol_loopcreate_future_write_ready_fut)selftranspr   r   r   __init__   s    


z"_SendfileFallbackProtocol.__init__c                    s2   | j  rtd| j}|d kr$d S |I d H  d S )NzConnection closed by peer)r]   
is_closingConnectionErrorre   )rf   rV   r   r   r   drain   s    
z_SendfileFallbackProtocol.drainc                 C   s   t dd S )Nz?Invalid state: connection should have been established already.RuntimeError)rf   	transportr   r   r   connection_made   s    z)_SendfileFallbackProtocol.connection_madec                 C   s@   | j d k	r0|d kr$| j td n| j | | j| d S )NzConnection is closed by peer)re   Zset_exceptionrj   r^   connection_lost)rf   rW   r   r   r   rp      s    
z)_SendfileFallbackProtocol.connection_lostc                 C   s    | j d k	rd S | jj | _ d S rB   )re   r]   rc   rd   rf   r   r   r   pause_writing   s    
z'_SendfileFallbackProtocol.pause_writingc                 C   s$   | j d krd S | j d d | _ d S )NF)re   
set_resultrq   r   r   r   resume_writing   s    
z(_SendfileFallbackProtocol.resume_writingc                 C   s   t dd S Nz'Invalid state: reading should be pausedrl   )rf   datar   r   r   data_received   s    z'_SendfileFallbackProtocol.data_receivedc                 C   s   t dd S ru   rl   rq   r   r   r   eof_received  s    z&_SendfileFallbackProtocol.eof_receivedc                    sF   | j | j | jr| j   | jd k	r2| j  | jrB| j  d S rB   )	r]   rb   r^   r_   resume_readingre   cancelr`   rt   rq   r   r   r   restore  s    


z!_SendfileFallbackProtocol.restoreN)__name__
__module____qualname__rh   rk   ro   rp   rr   rt   rw   rx   r{   r   r   r   r   r\      s   r\   c                   @   sx   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
edd Zdd Zdd Zdd Zdd ZdS )Serverc                 C   s@   || _ || _d| _g | _|| _|| _|| _|| _d| _d | _	d S )Nr   F)
rc   _sockets_active_count_waiters_protocol_factory_backlog_ssl_context_ssl_handshake_timeout_serving_serving_forever_fut)rf   loopsocketsprotocol_factoryZssl_contextbacklogssl_handshake_timeoutr   r   r   rh     s    zServer.__init__c                 C   s   d| j j d| jdS )N<z	 sockets=>)	__class__r|   r   rq   r   r   r   __repr__   s    zServer.__repr__c                 C   s   |  j d7  _ d S rZ   )r   rq   r   r   r   _attach#  s    zServer._attachc                 C   s.   |  j d8  _ | j dkr*| jd kr*|   d S )Nr   r   )r   r   _wakeuprq   r   r   r   _detach'  s    zServer._detachc                 C   s,   | j }d | _ |D ]}| s|| qd S rB   )r   doners   )rf   waiterswaiterr   r   r   r   -  s
    zServer._wakeupc              	   C   sJ   | j r
d S d| _ | jD ].}|| j | j| j|| j| | j| j qd S NT)	r   r   Zlistenr   rc   _start_servingr   r   r   )rf   r*   r   r   r   r   4  s    
    zServer._start_servingc                 C   s   | j S rB   )rc   rq   r   r   r   get_loop>  s    zServer.get_loopc                 C   s   | j S rB   )r   rq   r   r   r   
is_servingA  s    zServer.is_servingc                 C   s"   | j d krdS tdd | j D S )Nr   c                 s   s   | ]}t |V  qd S rB   )r   ZTransportSocket)rC   sr   r   r   rE   H  s     z!Server.sockets.<locals>.<genexpr>)r   tuplerq   r   r   r   r   D  s    
zServer.socketsc                 C   sn   | j }|d krd S d | _ |D ]}| j| qd| _| jd k	rX| j sX| j  d | _| jdkrj|   d S )NFr   )	r   rc   Z_stop_servingr   r   r   rz   r   r   )rf   r   r*   r   r   r   closeJ  s    


zServer.closec                    s"   |    tjd| jdI d H  d S )Nr   r   )r   r   sleeprc   rq   r   r   r   start_serving]  s    zServer.start_servingc              	      s   | j d k	rtd| d| jd kr4td| d|   | j | _ zLz| j I d H  W n6 tjk
r   z|   | 	 I d H  W 5  X Y nX W 5 d | _ X d S )Nzserver z, is already being awaited on serve_forever()z
 is closed)
r   rm   r   r   rc   rd   r   ZCancelledErrorr   wait_closedrq   r   r   r   serve_foreverc  s     


zServer.serve_foreverc                    s<   | j d ks| jd krd S | j }| j| |I d H  d S rB   )r   r   rc   rd   r9   )rf   r   r   r   r   r   x  s
    
zServer.wait_closedN)r|   r}   r~   rh   r   r   r   r   r   r   r   propertyr   r   r   r   r   r   r   r   r   r     s   

r   c                   @   sP  e Zd Zdd Zdd Zdd Zddd	d
Zdd Zdd ZddddddZ	ddddddddddZ
dddZdddZdddZdddZdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zejfd7d8Zd9d: Zd;d< Zdd=d>d?Z dd=d@dAZ!dd=dBdCZ"dDdE Z#dFdG Z$dHdI Z%dd=dJdKZ&dLdM Z'dNdO Z(dPdQ Z)dRdRdRdRdSdTdUZ*ddVdWZ+dddXdYdZZ,d[d\ Z-d]d^ Z.d_d` Z/ddadbZ0dddRdRdRdddddddc
dddeZ1ddfdgZ2dddXdhdiZ3djdk Z4dldm Z5ddddndodpZ6ddRdRdRe7ddddqdrdsZ8dRe9j:dRdRdSdtduZ;dvdw Z<de9j=e9j>ddxddddddy	dzd{Z?ddd|d}d~Z@dd ZAdd ZBdd ZCeDjEeDjEeDjEdddRdddd	ddZFeDjEeDjEeDjEdddRdddd	ddZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdS )r   c                 C   s   d| _ d| _d| _t | _g | _d | _d| _d | _	t
dj| _d | _| t  d| _d | _d | _d| _d | _t | _d| _d S )Nr   F	monotonicg?)_timer_cancelled_count_closed	_stoppingrF   deque_ready
_scheduled_default_executorZ_internal_fds
_thread_idtimeget_clock_infoZ
resolution_clock_resolution_exception_handler	set_debugr   Z_is_debug_modeslow_callback_duration_current_handle_task_factory"_coroutine_origin_tracking_enabled&_coroutine_origin_tracking_saved_depthweakrefZWeakSet
_asyncgens_asyncgens_shutdown_calledrq   r   r   r   rh     s$    

zBaseEventLoop.__init__c              	   C   s.   d| j j d|   d|   d|   d	S )Nr   z	 running=z closed=z debug=r   )r   r|   
is_running	is_closed	get_debugrq   r   r   r   r     s    ,zBaseEventLoop.__repr__c                 C   s   t j| dS )Nr   )r   ZFuturerq   r   r   r   rd     s    zBaseEventLoop.create_futureN)namec                C   sN   |    | jd kr2tj|| |d}|jrJ|jd= n| | |}t|| |S )N)r   r   )_check_closedr   r   r   _source_tracebackZ_set_task_name)rf   coror   Ztaskr   r   r   create_task  s    

zBaseEventLoop.create_taskc                 C   s"   |d k	rt |std|| _d S )Nz'task factory must be a callable or None)callabler5   r   )rf   factoryr   r   r   set_task_factory  s    
zBaseEventLoop.set_task_factoryc                 C   s   | j S rB   )r   rq   r   r   r   get_task_factory  s    zBaseEventLoop.get_task_factory)extraserverc                C   s   t d S rB   NotImplementedError)rf   r*   protocolr   r   r   r   r   r   _make_socket_transport  s    z$BaseEventLoop._make_socket_transportFT)server_sideserver_hostnamer   r   r   call_connection_madec                C   s   t d S rB   r   )rf   Zrawsockr   
sslcontextr   r   r   r   r   r   r   r   r   r   _make_ssl_transport  s    z!BaseEventLoop._make_ssl_transportc                 C   s   t d S rB   r   )rf   r*   r   addressr   r   r   r   r   _make_datagram_transport  s    z&BaseEventLoop._make_datagram_transportc                 C   s   t d S rB   r   rf   piper   r   r   r   r   r   _make_read_pipe_transport  s    z'BaseEventLoop._make_read_pipe_transportc                 C   s   t d S rB   r   r   r   r   r   _make_write_pipe_transport  s    z(BaseEventLoop._make_write_pipe_transportc	           
         s   t d S rB   r   )
rf   r   argsshellstdinstdoutstderrbufsizer   kwargsr   r   r   _make_subprocess_transport  s    z(BaseEventLoop._make_subprocess_transportc                 C   s   t d S rB   r   rq   r   r   r   _write_to_self  s    zBaseEventLoop._write_to_selfc                 C   s   t d S rB   r   )rf   
event_listr   r   r   _process_events  s    zBaseEventLoop._process_eventsc                 C   s   | j rtdd S )NzEvent loop is closed)r   rm   rq   r   r   r   r     s    zBaseEventLoop._check_closedc                 C   s*   | j | |  s&| | j|  d S rB   )r   discardr   call_soon_threadsafer   acloserf   agenr   r   r   _asyncgen_finalizer_hook  s    z&BaseEventLoop._asyncgen_finalizer_hookc                 C   s.   | j rtjd|dt| d | j| d S )Nzasynchronous generator z3 was scheduled after loop.shutdown_asyncgens() callsource)r   warningswarnResourceWarningr   addr   r   r   r   _asyncgen_firstiter_hook  s    
 z&BaseEventLoop._asyncgen_firstiter_hookc                    s   d| _ t| jsd S t| j}| j  tjdd |D d| dI d H }t||D ]*\}}t|t	rT| 
d|||d qTd S )NTc                 S   s   g | ]}|  qS r   )r   )rC   Zagr   r   r   
<listcomp>  s     z4BaseEventLoop.shutdown_asyncgens.<locals>.<listcomp>)Zreturn_exceptionsr   z;an error occurred during closing of asynchronous generator )messagerR   Zasyncgen)r   lenr   rH   clearr   gatherzipr   	Exceptioncall_exception_handler)rf   Zclosing_agensZresultsresultr   r   r   r   shutdown_asyncgens  s"    



z BaseEventLoop.shutdown_asyncgensc                 C   s(   |   rtdt d k	r$tdd S )Nz"This event loop is already runningz7Cannot run the event loop while another loop is running)r   rm   r   Z_get_running_looprq   r   r   r   _check_running&  s    zBaseEventLoop._check_runningc              	   C   s   |    |   | | j t | _t }tj	| j
| jd z t|  |   | jrLq^qLW 5 d| _d | _td  | d tj	|  X d S )N)	firstiter	finalizerF)r   r   _set_coroutine_origin_tracking_debug	threading	get_identr   sysget_asyncgen_hooksset_asyncgen_hooksr   r   r   r   Z_set_running_loop	_run_once)rf   Zold_agen_hooksr   r   r   run_forever-  s$    



zBaseEventLoop.run_foreverc              	   C   s   |    |   t| }tj|| d}|r4d|_|t z<z| 
  W n*   |rp| rp| sp|   Y nX W 5 |	t X | std| S )Nr   Fz+Event loop stopped before Future completed.)r   r   r   Zisfuturer   Zensure_futureZ_log_destroy_pendingZadd_done_callbackrX   Zremove_done_callbackr  r   rQ   rR   rm   r   )rf   ZfutureZnew_taskr   r   r   run_until_completeD  s"    
z BaseEventLoop.run_until_completec                 C   s
   d| _ d S r   )r   rq   r   r   r   rU   j  s    zBaseEventLoop.stopc                 C   sj   |   rtd| jrd S | jr,td|  d| _| j  | j  | j	}|d k	rfd | _	|j
dd d S )Nz!Cannot close a running event loopzClose %rTF)wait)r   rm   r   r   r   debugr   r   r   r   Zshutdownrf   executorr   r   r   r   r  s    

zBaseEventLoop.closec                 C   s   | j S rB   )r   rq   r   r   r   r     s    zBaseEventLoop.is_closedc                 C   s0   |   s,|d| t| d |  s,|   d S )Nzunclosed event loop r   )r   r   r   r   )rf   Z_warnr   r   r   __del__  s    zBaseEventLoop.__del__c                 C   s
   | j d k	S rB   )r   rq   r   r   r   r     s    zBaseEventLoop.is_runningc                 C   s   t  S rB   )r   r   rq   r   r   r   r     s    zBaseEventLoop.time)contextc                G   s2   | j |  | |f|d|i}|jr.|jd= |S )Nr  r   )call_atr   r   )rf   Zdelaycallbackr  r   timerr   r   r   
call_later  s    zBaseEventLoop.call_laterc                G   sZ   |    | jr"|   | |d t|||| |}|jrB|jd= t| j	| d|_	|S )Nr  r   T)
r   r   _check_thread_check_callbackr   ZTimerHandler   heapqheappushr   )rf   whenr  r  r   r  r   r   r   r    s    zBaseEventLoop.call_atc                G   sB   |    | jr"|   | |d | |||}|jr>|jd= |S )N	call_soonr   )r   r   r  r  
_call_soonr   rf   r  r  r   r   r   r   r   r    s    
zBaseEventLoop.call_soonc                 C   sD   t |st |r$td| dt|s@td| d|d S )Nzcoroutines cannot be used with z()z"a callable object was expected by z(), got )r   ZiscoroutineZiscoroutinefunctionr5   r   )rf   r  methodr   r   r   r    s    

zBaseEventLoop._check_callbackc                 C   s.   t ||| |}|jr|jd= | j| |S )Nr   )r   ZHandler   r   r9   )rf   r  r   r  r   r   r   r   r    s
    zBaseEventLoop._call_soonc                 C   s,   | j d krd S t }|| j kr(tdd S )NzMNon-thread-safe operation invoked on an event loop other than the current one)r   r   r  rm   )rf   Z	thread_idr   r   r   r    s    	

zBaseEventLoop._check_threadc                G   sB   |    | jr| |d | |||}|jr6|jd= |   |S )Nr   r   )r   r   r  r  r   r   r  r   r   r   r     s    z"BaseEventLoop.call_soon_threadsafec                 G   sZ   |    | jr| |d |d kr@| j}|d kr@tj }|| _tj|j|f| | dS )Nrun_in_executorr   )	r   r   r  r   
concurrentr   ThreadPoolExecutorZwrap_futureZsubmit)rf   r  funcr   r   r   r   r    s    
 zBaseEventLoop.run_in_executorc                 C   s&   t |tjjstdtd || _d S )Nz{Using the default executor that is not an instance of ThreadPoolExecutor is deprecated and will be prohibited in Python 3.9   )r   r  r   r  r   r   DeprecationWarningr   r
  r   r   r   set_default_executor  s     z"BaseEventLoop.set_default_executorc                 C   s   | d|g}|r$| d| |r8| d| |rL| d| |r`| d| d|}td| |  }t||||||}	|  | }
d| d	|
d
 dd|	}|
| jkrt| n
t| |	S )N:zfamily=ztype=zproto=zflags=, zGet address info %szGetting address info z took g     @@z.3fzms: )	r9   joinr   r	  r   r$   getaddrinfor   info)rf   r;   r<   r=   r>   r?   flagsmsgt0addrinfodtr   r   r   _getaddrinfo_debug  s&    


z BaseEventLoop._getaddrinfo_debugr   r=   r>   r?   r'  c             
      s2   | j r| j}ntj}| d |||||||I d H S rB   )r   r,  r$   r%  r  )rf   r;   r<   r=   r>   r?   r'  Zgetaddr_funcr   r   r   r%  2  s           zBaseEventLoop.getaddrinfoc                    s   |  d tj||I d H S rB   )r  r$   getnameinfo)rf   Zsockaddrr'  r   r   r   r.  <  s       zBaseEventLoop.getnameinfo)fallbackc             
      s   | j r| dkrtd| |||| z| ||||I d H W S  tjk
rl } z
|s\ W 5 d }~X Y nX | ||||I d H S )Nr   zthe socket must be non-blocking)r   Z
gettimeoutr%   _check_sendfile_params_sock_sendfile_nativer   SendfileNotAvailableError_sock_sendfile_fallback)rf   r*   fileoffsetcountr/  rW   r   r   r   sock_sendfile@  s      zBaseEventLoop.sock_sendfilec                    s   t d|dd S )Nz-syscall sendfile is not available for socket z and file {file!r} combinationr   r2  rf   r*   r4  r5  r6  r   r   r   r1  N  s    
z#BaseEventLoop._sock_sendfile_nativec           
   
      s   |r| | |rt|tjntj}t|}d}zt|rNt|| |}|dkrNqt|d | }| d |j|I d H }	|	szq| 	||d |	 I d H  ||	7 }q2|W S |dkrt|dr| ||  X d S )Nr   seek)
r:  minr   Z!SENDFILE_FALLBACK_READBUFFER_SIZE	bytearrayr#   
memoryviewr  readintoZsock_sendall)
rf   r*   r4  r5  r6  	blocksizebuf
total_sentviewreadr   r   r   r3  U  s,    

z%BaseEventLoop._sock_sendfile_fallbackc                 C   s   dt |ddkrtd|jtjks,td|d k	rbt|tsLtd||dkrbtd|t|tsztd||dk rtd|d S )Nbmodez$file should be opened in binary modez+only SOCK_STREAM type sockets are supportedz+count must be a positive integer (got {!r})r   z0offset must be a non-negative integer (got {!r}))	r   r%   r>   r$   r1   r   r4   r5   formatr9  r   r   r   r0  o  s2    

z$BaseEventLoop._check_sendfile_paramsc                    s@  g }| | |\}}}}}	d }
ztj|||d}
|
d |d k	r|D ]r\}}}}}z|
| W  qW qH tk
r } z0d|d|j  }t|j|}| | W 5 d }~X Y qHX qH| | 	|
|	I d H  |
W S  tk
r } z"| | |
d k	r
|

   W 5 d }~X Y n    |
d k	r4|

   Y nX d S )Nr=   r>   r?   Fz*error while attempting to bind on address : )r9   r$   setblockingbindr(   strerrorlowererrnopopsock_connectr   )rf   r   Z	addr_infoZlocal_addr_infosZmy_exceptionsr=   Ztype_r?   _r   r*   ZladdrrW   r(  r   r   r   _connect_sock  s:    






zBaseEventLoop._connect_sock)
sslr=   r?   r'  r*   
local_addrr   r   happy_eyeballs_delay
interleavec       
      	      sl  |
d k	r|st d|
d kr0|r0|s,t d|}
|d k	rD|sDt d|d k	rX|d krXd}|d k	sj|d k	r|d k	rzt dj||f|tj||dI d H }|std|	d k	r܈j|	|tj||dI d H stdnd |rt||}g  |d krH|D ]D}z  |I d H }W  qvW n tk
r@   Y q Y nX q n.tj fdd	|D |d
I d H \}}}|d kr dd  D  t	 dkr d nJt
 d tfdd	 D r҈ d tdddd	  D n.|d krt d|jtjkr t d|j||||
|dI d H \}}jrd|d}td||||| ||fS )Nz+server_hostname is only meaningful with sslz:You must set server_hostname when using ssl without a host1ssl_handshake_timeout is only meaningful with sslr   8host/port and sock can not be specified at the same timer=   r>   r?   r'  r   !getaddrinfo() returned empty listc                 3   s    | ]}t j |V  qd S rB   )	functoolspartialrQ  )rC   r*  )r   laddr_infosrf   r   r   rE     s     z2BaseEventLoop.create_connection.<locals>.<genexpr>r   c                 S   s   g | ]}|D ]}|qqS r   r   )rC   subrW   r   r   r   r     s       z3BaseEventLoop.create_connection.<locals>.<listcomp>r   c                 3   s   | ]}t | kV  qd S rB   r   rC   rW   )modelr   r   rE     s     zMultiple exceptions: {}r#  c                 s   s   | ]}t |V  qd S rB   r^  r_  r   r   r   rE   
  s     z5host and port was not specified and no sock specified"A Stream Socket was expected, got )r   r$   z%r connected to %s:%r: (%r, %r))r%   _ensure_resolvedr$   r1   r(   rP   rQ  r
   Zstaggered_racer   r   allrF  r$  r>   _create_connection_transportr   get_extra_infor   r	  )rf   r   r;   r<   rR  r=   r?   r'  r*   rS  r   r   rT  rU  infosr*  rP  rn   r   r   )r   r\  r`  rf   r   create_connection  s           


  
 


   
    zBaseEventLoop.create_connectionc              	      s   | d | }|  }|rHt|tr*d n|}	| j|||	||||d}
n| |||}
z|I d H  W n   |
   Y nX |
|fS )NFr   r   r   )rI  rd   r   boolr   r   r   )rf   r*   r   rR  r   r   r   r   r   r   rn   r   r   r   rd  %  s*    
    z*BaseEventLoop._create_connection_transportc             
      s   |  rtdt|dtjj}|tjjkr:td||tjjkrz| ||||I d H W S  tj	k
r } z
|sx W 5 d }~X Y nX |std|| 
||||I d H S )NzTransport is closingZ_sendfile_compatiblez(sendfile is not supported for transport zHfallback is disabled and native sendfile is not supported for transport )ri   rm   r   r   Z_SendfileModeZUNSUPPORTEDZ
TRY_NATIVE_sendfile_nativer   r2  _sendfile_fallback)rf   rn   r4  r5  r6  r/  rE  rW   r   r   r   sendfile?  s4      zBaseEventLoop.sendfilec                    s   t dd S )Nz!sendfile syscall is not supportedr8  )rf   rg   r4  r5  r6  r   r   r   rj  n  s    zBaseEventLoop._sendfile_nativec              
      s   |r| | |rt|dnd}t|}d}t|}z|rXt|| |}|dkrX|W bS t|d | }	| d |j|	I d H }
|
s|W 0S |	 I d H  |
|	d |
  ||
7 }q6W 5 |dkrt|dr| ||  | I d H  X d S )Ni @  r   r:  )r:  r;  r<  r\   r#   r{   r=  r  r>  rk   write)rf   rg   r4  r5  r6  r?  r@  rA  r?   rB  rC  r   r   r   rk  r  s*    
z BaseEventLoop._sendfile_fallbackrh  c             
      s   t d krtdt|t js*td|t|ddsFtd|d|  }tj| ||||||dd}|	  |
| | |j|}	| |j}
z|I d H  W n. tk
r   |  |	  |
   Y nX |jS )Nz"Python ssl module is not availablez@sslcontext is expected to be an instance of ssl.SSLContext, got Z_start_tls_compatibleFz
transport z  is not supported by start_tls())r   r   )rR  rm   r   Z
SSLContextr5   r   rd   r	   ZSSLProtocolra   rb   r  ro   ry   BaseExceptionr   rz   Z_app_transport)rf   rn   r   r   r   r   r   r   Zssl_protocolZ
conmade_cbZ	resume_cbr   r   r   	start_tls  sB    	
    
zBaseEventLoop.start_tls)r=   r?   r'  reuse_address
reuse_portallow_broadcastr*   c                    s  |
d k	r|
j tjkr"td|
 s>s>|s>|s>|s>|s>|	r~t ||||||	d}ddd | D }td| d|
d d }n ss|d	krtd
||fdff}nttdr|tj	kr fD ]}|d k	rt
|tstdqڈ rx d	 dkrxz"tt jr.t  W nF tk
rF   Y n2 tk
rv } ztd | W 5 d }~X Y nX ||f fff}ni }d	 fdffD ]\}}|d k	r| j||tj||| dI d H }|std|D ]:\}}}}}||f}||krd d g||< ||| |< qq fdd| D }|sHtdg }|tk	rv|rftdntjdtdd |D ]\\}}\}}d }
d }zxtj|tj|d}
|rt|
 |	r|
tjtjd |
d  r|
| r|	s|  |
|I d H  |}W n^ tk
rJ } z |
d k	r0|
!  |"| W 5 d }~X Y n&   |
d k	rb|
!   Y nX  q|qz|d	 | }| # }| $|
|||}| j%r̈ rt&d || nt'd|| z|I d H  W n   |!   Y nX ||fS )NzA UDP Socket was expected, got )rS  remote_addrr=   r?   r'  rp  rq  rr  r#  c                 s   s$   | ]\}}|r| d | V  qdS )=Nr   )rC   kvr   r   r   rE     s      z9BaseEventLoop.create_datagram_endpoint.<locals>.<genexpr>zKsocket modifier keyword arguments can not be used when sock is specified. ()Fr   zunexpected address family)NNAF_UNIXzstring is expected)r    z2Unable to check or remove stale UNIX socket %r: %rr   rX  rY  c                    s8   g | ]0\}} r|d  dksr,|d dks||fqS )r   Nr   r   )rC   keyZ	addr_pairrS  rs  r   r   r     s     z:BaseEventLoop.create_datagram_endpoint.<locals>.<listcomp>zcan not get address informationz~Passing `reuse_address=True` is no longer supported, as the usage of SO_REUSEPORT in UDP poses a significant security concern.zdThe *reuse_address* parameter has been deprecated as of 3.5.10 and is scheduled for removal in 3.11.r  )
stacklevelrG  z@Datagram endpoint local_addr=%r remote_addr=%r created: (%r, %r)z2Datagram endpoint remote_addr=%r created: (%r, %r))(r>   r$   r2   r%   dictr$  itemsrI  r#   rx  r   r   r5   statS_ISSOCKosst_moderemoveFileNotFoundErrorr(   r   errorrb  _unsetr   r   r   r+   r&   r'   ZSO_BROADCASTrJ  rO  r   r9   rd   r   r   r&  r	  ) rf   r   rS  rs  r=   r?   r'  rp  rq  rr  r*   ZoptsZproblemsZr_addrZaddr_pairs_inforO   errZ
addr_infosidxrf  ZfamrP  Zpror   rz  r   Zlocal_addressZremote_addressrW   r   r   rn   r   r{  r   create_datagram_endpoint  s$      


 
    


    




        z&BaseEventLoop.create_datagram_endpointc          
         s\   |d d \}}t |||||f|dd   }	|	d k	r<|	gS |j||||||dI d H S d S )Nr  r-  )rA   r%  )
rf   r   r=   r>   r?   r'  r   r;   r<   r&  r   r   r   rb  L  s     zBaseEventLoop._ensure_resolvedc                    s8   | j ||f|tj|| dI d H }|s4td|d|S )N)r=   r>   r'  r   zgetaddrinfo(z) returned empty list)rb  r$   r1   r(   )rf   r;   r<   r=   r'  rf  r   r   r   _create_server_getaddrinfoX  s     z(BaseEventLoop._create_server_getaddrinfor   )	r=   r'  r*   r   rR  rp  rq  r   r   c       	            s  t |trtd|d k	r*|d kr*td|d k	s<d k	r"|d k	rLtd|	d krhtjdkoftjdk}	g }|dkr|d g}n$t |tst |t	j
js|g}n|} fdd|D }tj|d	iI d H }ttj|}d
}z|D ]}|\}}}}}zt|||}W n8 tjk
rH   jr@tjd|||dd Y qY nX || |	rl|tjtjd |
rzt| tr|tjkrttdr|tj tj!d z|"| W q t#k
r } z t#|j$d||j%& f d W 5 d }~X Y qX qd}W 5 |s|D ]}|  qX n4|d kr4td|j'tj(krPtd||g}|D ]}|)d
 qZt*|||||}|r|+  tj,ddI d H  jrt-d| |S )Nz*ssl argument must be an SSLContext or NonerV  rW  posixcygwinr.   c                    s   g | ]}j | d qS ))r=   r'  )r  )rC   r;   r=   r'  r<   rf   r   r   r     s   
z/BaseEventLoop.create_server.<locals>.<listcomp>r   Fz:create_server() failed to create socket.socket(%r, %r, %r)Texc_infoIPPROTO_IPV6z0error while attempting to bind on address %r: %sz)Neither host/port nor sock were specifiedra  r   r   z%r is serving).r   ri  r5   r%   r  r   r  platformr   rF   abcIterabler   r   setrK   rL   rM   r   r$   r  r   r   warningr9   r&   r'   ZSO_REUSEADDRr+   r8   r   r#   r  ZIPV6_V6ONLYrJ  r(   rM  rK  rL  r>   r1   rI  r   r   r   r&  )rf   r   r;   r<   r=   r'  r*   r   rR  rp  rq  r   r   r   ZhostsZfsrf  Z	completedresr@   Zsocktyper?   Z	canonnameZsar  r   r   r  r   create_server`  s    


   

  
  zBaseEventLoop.create_server)rR  r   c                   sv   |j tjkrtd||d k	r.|s.td| j|||dd|dI d H \}}| jrn|d}td||| ||fS )Nra  rV  r.   T)r   r   r$   z%r handled: (%r, %r))	r>   r$   r1   r%   rd  r   re  r   r	  )rf   r   r*   rR  r   rn   r   r   r   r   connect_accepted_socket  s$        
z%BaseEventLoop.connect_accepted_socketc                    sd   | }|   }| |||}z|I d H  W n   |   Y nX | jr\td| || ||fS )Nz Read pipe %r connected: (%r, %r))rd   r   r   r   r   r	  filenorf   r   r   r   r   rn   r   r   r   connect_read_pipe  s      zBaseEventLoop.connect_read_pipec                    sd   | }|   }| |||}z|I d H  W n   |   Y nX | jr\td| || ||fS )Nz!Write pipe %r connected: (%r, %r))rd   r   r   r   r   r	  r  r  r   r   r   connect_write_pipe  s      z BaseEventLoop.connect_write_pipec                 C   s   |g}|d k	r"| dt|  |d k	rJ|tjkrJ| dt|  n8|d k	rf| dt|  |d k	r| dt|  td| d S )Nzstdin=zstdout=stderr=zstdout=zstderr= )r9   r!   r   r   r   r	  r$  )rf   r(  r   r   r   r&  r   r   r   _log_subprocess  s    zBaseEventLoop._log_subprocess)	r   r   r   universal_newlinesr   r   encodingerrorstextc       	            s   t |ttfstd|r"td|s.td|dkr>td|rJtd|	d k	rZtd|
d k	rjtd| }d }| jrd	| }| |||| | j||d
||||f|I d H }| jr|d k	rtd|| ||fS )Nzcmd must be a string universal_newlines must be Falsezshell must be Truer   bufsize must be 0text must be Falseencoding must be Noneerrors must be Nonezrun shell command %rT%s: %r)	r   r3   r   r%   r   r  r   r   r&  )rf   r   cmdr   r   r   r  r   r   r  r  r  r   r   	debug_logrn   r   r   r   subprocess_shell  sB          
zBaseEventLoop.subprocess_shellc       	            s   |rt d|rt d|dkr(t d|r4t d|	d k	rDt d|
d k	rTt d|f| }| }d }| jrd|}| |||| | j||d	||||f|I d H }| jr|d k	rtd
|| ||fS )Nr  zshell must be Falser   r  r  r  r  zexecute program Fr  )r%   r   r  r   r   r&  )rf   r   Zprogramr   r   r   r  r   r   r  r  r  r   r   Z
popen_argsr   r  rn   r   r   r   subprocess_execC  s@    

     
zBaseEventLoop.subprocess_execc                 C   s   | j S rB   )r   rq   r   r   r   get_exception_handlere  s    z#BaseEventLoop.get_exception_handlerc                 C   s(   |d k	rt |std||| _d S )Nz+A callable object or None is expected, got )r   r5   r   )rf   Zhandlerr   r   r   set_exception_handlerj  s    z#BaseEventLoop.set_exception_handlerc           	      C   s  | d}|sd}| d}|d k	r6t|||jf}nd}d|kr`| jd k	r`| jjr`| jj|d< |g}t|D ]}|dkr|qn|| }|dkrdt|}d	}||	 7 }n2|dkrdt|}d
}||	 7 }nt
|}|| d|  qntjd||d d S )Nr   z!Unhandled exception in event looprR   FZsource_tracebackZhandle_traceback>   r   rR   r.   z+Object created at (most recent call last):
z+Handle created at (most recent call last):
rH  
r  )getr>   __traceback__r   r   sortedr$  	tracebackformat_listrstripr   r9   r   r  )	rf   r  r   rR   r  Z	log_linesrz  valuetbr   r   r   default_exception_handler{  s<    

z'BaseEventLoop.default_exception_handlerc                 C   s   | j d krVz| | W q ttfk
r2    Y q tk
rR   tjddd Y qX nz|  | | W n ttfk
r    Y nt tk
r } zVz| d||d W n: ttfk
r    Y n" tk
r   tjddd Y nX W 5 d }~X Y nX d S )Nz&Exception in default exception handlerTr  z$Unhandled error in exception handler)r   rR   r  zeException in default exception handler while handling an unexpected error in custom exception handler)r   r  rS   rT   rn  r   r  )rf   r  rW   r   r   r   r     s4    
z$BaseEventLoop.call_exception_handlerc                 C   s   |j r
d S | j| d S rB   )
_cancelledr   r9   rf   r   r   r   r   _add_callback  s    zBaseEventLoop._add_callbackc                 C   s   |  | |   d S rB   )r  r   r  r   r   r   _add_callback_signalsafe  s    
z&BaseEventLoop._add_callback_signalsafec                 C   s   |j r|  jd7  _d S rZ   )r   r   r  r   r   r   _timer_handle_cancelled  s    z%BaseEventLoop._timer_handle_cancelledc              	   C   s  t | j}|tkr`| j| tkr`g }| jD ]}|jr<d|_q*|| q*t| || _d| _n4| jr| jd jr|  jd8  _t	| j}d|_q`d }| j
s| jrd}n*| jr| jd j}ttd||   t}| j|}| | |  | j }| jr:| jd }|j|krq:t	| j}d|_| j
| qt | j
}t|D ]|}	| j
 }|jrfqL| jrzD|| _|  }
|  |  |
 }|| jkrtdt|| W 5 d | _X n|  qLd }d S )NFr   r   zExecuting %s took %.3f seconds)r   r   _MIN_SCHEDULED_TIMER_HANDLESr   %_MIN_CANCELLED_TIMER_HANDLES_FRACTIONr  r9   r  heapifyheappopr   r   Z_whenr;  maxr   MAXIMUM_SELECT_TIMEOUTZ	_selectorZselectr   r   rangepopleftr   r   Z_runr   r   r  r   )rf   Zsched_countZnew_scheduledr   Ztimeoutr  r   Zend_timeZntodoir)  r+  r   r   r   r    sj    






 
zBaseEventLoop._run_oncec                 C   sH   t |t | jkrd S |r2t | _ttj nt| j || _d S rB   )ri  r   r  #get_coroutine_origin_tracking_depthr   #set_coroutine_origin_tracking_depthr   ZDEBUG_STACK_DEPTHrf   Zenabledr   r   r   r   F  s    z,BaseEventLoop._set_coroutine_origin_trackingc                 C   s   | j S rB   )r   rq   r   r   r   r   U  s    zBaseEventLoop.get_debugc                 C   s    || _ |  r| | j| d S rB   )r   r   r   r   r  r   r   r   r   X  s    zBaseEventLoop.set_debug)N)N)NNN)NN)NN)N)r   )r   N)N)NN)FN)r   N)NN)NN)Sr|   r}   r~   rh   r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rU   r   r   r   r   r  r   r   r  r  r  r  r  r  r   r  r!  r,  r%  r.  r7  r1  r3  r0  rQ  rg  rd  rl  rj  rk  ro  r  r  r$   r1   rb  r  r6   Z
AI_PASSIVEr  r  r  r  r  r   r   r  r  r  r  r  r   r  r  r  r  r   r   r   r   r   r   r   r     sF      
     
  
  
 
		&	
	   


%          
//          	   w   %     "29Nr   )r   r   )r   )6rF   Zcollections.abcZconcurrent.futuresr  rZ  r  rK   r  r$   r  r   r   r   r  r  r   r   rR  ImportErrorr.   r   r   r   r   r   r   r	   r
   r   r   r   logr   __all__r  r  r#   r8   r  objectr  r   r!   r+   rA   rP   rX   r[   ZProtocolr\   ZAbstractServerr   ZAbstractEventLoopr   r   r   r   r   <module>   sb   

		
;


Do