add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536

��gk7��F�OoOOFoOOFoOOFoOOFoOOFoOOFoOOFoOOF	o	OOF
o
OOFoOOFoOOF
o
OOFoOOFoOOFoOOFoOOFoOOFEoOOFEoOOFEoOOFEoOOFEoOO	FEoOO
FEoOOFEoOOFEoOO
FEoOOFEoOOFE o OOF!E"o"Oo#Oo$Oo%X&X	O1o'Oo(Oo)Oo*Oo+O&Ogo,O'Ogo-Oo.X&X	O1%^Oo/JOo/Oo0O O!XMb1o2O"O#XMf1o4O$O%XMj1o6dX^OoI�c9c)(a�Base implementation of event loop.

The event loop can be broken up into a multiplexer (the part
responsible for notifying us of I/O events) and the event loop proper,
which wraps a multiplexer with functionality for scheduling callbacks,
immediately or at a given time in the future.

Whenever a public API takes a callback, subsequent positional
arguments will be passed to the callback if/when it is called.  This
avoids the proliferation of trivial lambdas implementing closures.
Keyword arguments for the callback are not supported; this is a
conscious design decision, leaving the door open for keyword arguments
to modify the meaning of the API call itself.
�N�)�	constants)�
coroutines)�events)�
exceptions)�futures)�	protocols)�sslproto)�	staggered)�tasks)�timeouts)�
transports)�trsock)�logger)�
BaseEventLoop�Server�dg�?�AF_INET6i�Qc��QMkWWQOO1WM1%^WQM1!WQ1!)N�__self__)�	_callback�
isinstance�getattrr�Task�reprr�str)�handle�cbs  �,/usr/lib64/python3.14/asyncio/base_events.py�_format_handler Gs@��	�	�	�B��'�"�j�$�/����<�<��B�K�K� � ��6�{��c�l�QWM6X^dQWM6X^dWQ1!)Nz<pipe>z<stdout>)�
subprocess�PIPE�STDOUTr)�fds r�_format_piper'Ps+��	�Z�_�_���	�z� � �	 ���B�x�r!c���WWO1%aWO1bQMWMWM
O1dW^WO1bc9c)N�SO_REUSEPORTz)reuse_port not supported by socket modulerzTreuse_port not supported by socket module, SO_REUSEPORT defined but not implemented.)�hasattr�socket�
ValueError�
setsockopt�
SOL_SOCKETr)�OSError��socks r�_set_reuseportr2Ysc���6�>�*�*��D�E�E�	J��O�O�F�-�-�v�/B�/B�A�F���	J��I�J�
J�	J�s�/A�A(c	��WWO1%adQOWMWM-7aQ`dQWM6X^WMkJ&QWM
6X^WMkJdQ`OkJHW
QW1%^	QO6X^OkJ*W
QW1%^	QO6X^OkJWQ1kQWM6X^<WM+kW%^QMWM 1JQ+kW
QW1%^QM#O1kOQ7^dQCJkWM$T�1W%^QWM 6X^
T�QOTTV00p!T�QOT00p!	dWW0^dc9cW&^Hrc9c)N�	inet_ptonrr!��idna�%)r*r+�IPPROTO_TCP�IPPROTO_UDP�SOCK_STREAM�
SOCK_DGRAMr�bytesr�int�	TypeErrorr,�	AF_UNSPEC�AF_INET�	_HAS_IPv6�appendr�decoder4r/)	�host�port�family�type�proto�flowinfo�scopeid�afs�afs	         r�_ipaddr_inforMds����6�;�'�'���Q��*�*�F�,>�,>�?�?��L���v�!�!�!��"�"��	
��"�"�	"��"�"����|���	�D�%�	 �	 �T�S�[���	�D�#�	�	�4�2�:���	��t�9�D���!�!�!��~�~����9��J�J�v���'���h���$�����{�{�6�"��
�d�{����	����R�&��y�R�6�?�?�2����T��,K�K�K����T�L�8�8����;�:�&�	��	��2�	��	�s*�F*�<G�G�*F=�<F=�
G�
Gc��WM1kQC$kQOkTB7^+T$$T$MQ1H&	WQM	11k+kQO6�^%QMQOOQO*
1QOOQO*
.QMOWMMWMQ2111Q!)z-Interleave list of addrinfo tuples by family.rrNc3�. �QCkQ`HQs�H	d3c�N�)�.0�as  r�	<genexpr>�(_interleave_addrinfos.<locals>.<genexpr>�s ����
�a�
�	
��
�s��	)
�collections�OrderedDictrB�list�values�extend�	itertools�chain�
from_iterable�zip_longest)�	addrinfos�first_address_family_count�addrinfos_by_family�addrrF�addrinfos_lists�	reordereds       r�_interleave_addrinfosre�s���&�1�1�3�����a����,�*,��'��#�*�*�4�0�	�
�.�5�5�7�8�O��I�!�A�%������+�,K�-G�!�-K�L�M��A��>� :�Q� >�>�?�
�����?�?�0�0��!�!�?�3�
����r!c���QM1%a,QM1kWQWW01%^dW
MQ1M1drP)�	cancelled�	exceptionr�
SystemExit�KeyboardInterruptr�	_get_loop�stop)�fut�excs  r�_run_until_complete_cbro�sG���=�=�?�?��m�m�o���c�J�(9�:�;�;�
����c����!r!�TCP_NODELAYc�<�QMWMWM-7^nQMWM
6X^OQMWM6X^0QMWMWMO1dddd)Nr)
rFr+r@rrGr:rHr8r-rpr0s r�_set_nodelayrr�sj���K�K�F�N�N�F�O�O�<�<��	�	�V�/�/�/��
�
�f�0�0�0��O�O�F�.�.��0B�0B�A�F�1�0�
=r!c��drPrQr0s rrrrr�s��r!c�h�W_+WQWM1%^WO1bdd)Nz"Socket cannot be of type SSLSocket)�sslr�	SSLSocketr>r0s r�_check_ssl_socketrw�s*��
��:�d�C�M�M�:�:��<�=�=�;�r!c�T[�XoOoOojOoOoOoOoOoOo	Oo
O	oO
oOo
Qod)
�_SendfileFallbackProtocol��c��WQWM1%aWO1bTiQM1QiQM1QiQMQi
QM1QMQ1QM%^*QMMM1QidOQid)Nz.transport should be _FlowControlMixin instance)rr�_FlowControlMixinr>�
_transport�get_protocol�_proto�
is_reading�_should_resume_reading�_protocol_paused�_should_resume_writing�
pause_reading�set_protocol�_loop�
create_future�_write_ready_fut)�self�transps  r�__init__�"_SendfileFallbackProtocol.__init__�s����&�*�">�">�?�?��L�M�M� ���)�)�+���&,�&7�&7�&9��#�&,�&=�&=��#��������D�!��&�&�$(�O�O�$9�$9�$G�$G�$I�D�!�$(�D�!r!c�� �QMM1%^WO1bQMkQ`dQDOes�I
dI3c)NzConnection closed by peer)r}�
is_closing�ConnectionErrorr�)r�rms  r�drain�_SendfileFallbackProtocol.drain�s>����?�?�%�%�'�'�!�"=�>�>��#�#���;���	�	�s�AA
�A�A
c��WO1b)Nz?Invalid state: connection should have been established already.��RuntimeError�r��	transports  r�connection_made�)_SendfileFallbackProtocol.connection_made�s���N�O�	Or!c���QM_CQ`%QMMWO11JQMMQ1QMM	Q1d)NzConnection is closed by peer)r��
set_exceptionr�r�connection_lost)r�rns  rr��)_SendfileFallbackProtocol.connection_lost�s[��� � �,��{��%�%�3�3�#�$B�C�E��%�%�3�3�C�8����#�#�C�(r!c�r�QM_dQMMM1QidrP)r�r}r�r��r�s r�
pause_writing�'_SendfileFallbackProtocol.pause_writing�s,��� � �,�� $��� 5� 5� C� C� E��r!c�d�QM`dQMMO1OQid�NF)r��
set_resultr�s r�resume_writing�(_SendfileFallbackProtocol.resume_writing�s-��� � �(�����(�(��/� $��r!c��WO1b�Nz'Invalid state: reading should be pausedr�)r��datas  r�
data_received�'_SendfileFallbackProtocol.data_received����D�E�Er!c��WO1br�r�r�s r�eof_received�&_SendfileFallbackProtocol.eof_receivedr�r!c��R �QMMQM1QM%^QMM	1QM
_QM
M
1QM%^QMM1dd3crP)	r}r�rr��resume_readingr��cancelr�r�r�s r�restore�!_SendfileFallbackProtocol.restoresr������$�$�T�[�[�1��&�&��O�O�*�*�,�� � �,�
�!�!�(�(�*��&�&��K�K�&�&�(�'�s�B%B')rr�r�r}r�N)�__name__�
__module__�__qualname__�__firstlineno__r�r�r�r�r�r�r�r�r��__static_attributes__�__classdictcell__��
__classdict__s@rryry�s6����)��O�	)�F�
%�F�F�
)r!ryc�[�XoOoOojOOgoOoOoOoOoOo	O	o
O
oXO1o
OoO
oOoOoOoOoOoQod)riNc��TiT iWM1Qi+QiT0iTPiT@iT`i	Tpi
OQiOQidr�)
r��_sockets�weakref�WeakSet�_clients�_waiters�_protocol_factory�_backlog�_ssl_context�_ssl_handshake_timeout�_ssl_shutdown_timeout�_serving�_serving_forever_fut)r��loop�sockets�protocol_factory�ssl_context�backlog�ssl_handshake_timeout�ssl_shutdown_timeouts        rr��Server.__init__sO���
��
� ���)��
���
�!1���
�'��&;�#�%9�"���
�$(��!r!c�R�OQMMOQM8O/!)N�<z	 sockets=�>)�	__class__r�r�r�s r�__repr__�Server.__repr__%s'���4�>�>�*�*�+�9�T�\�\�4D�A�F�Fr!c�:�QMMQ1drP)r��addr�s  r�_attach�Server._attach(s���
�
���)�$r!c��QMMQ1WQM1O6X^QM`QM	1ddd�Nr)r��discard�lenr��_wakeupr�s  r�_detach�Server._detach,s?���
�
���i�(��t�}�}���"�t�}�}�'<��L�L�N�(=�"r!c��QMkOQiQC+kQM1%^HQMO1H-	drP)r��doner�)r��waiters�waiters   rr��Server._wakeup1s5���-�-����
��F��;�;�=�=��!�!�$�'�r!c
�4�QM%^dOQiQMCokQMQM1QMMQMTMTMQMQM1Hq	d)NT)
r�r��listenr�r��_start_servingr�r�r�r�)r�r1s  rr��Server._start_serving8sl���=�=����
��M�M�D��K�K��
�
�&��J�J�%�%��&�&��.?�.?��m�m�T�%@�%@��*�*�
,�"r!c��QM!rP)r�r�s r�get_loop�Server.get_loopCs���z�z�r!c��QM!rP)r�r�s r�
is_serving�Server.is_servingFs���}�}�r!c�V�QM`dWOQM11!)NrQc3�L �QCkWMQ1s�H	d3crP)r�TransportSocket)rR�ss  rrT�!Server.sockets.<locals>.<genexpr>Ms���F�
�1�V�+�+�A�.�.�
�s�"$)r��tupler�s rr��Server.socketsIs$���=�=� ���F��
�
�F�F�Fr!c�v�QMkQ`dOQiQCkQMMQ1H 	OQiQM_@QMM1%a!QMM
1OQiWQM1O6X^QM1dd)NFr)
r�r��
_stop_servingr�r�r�r�r�r�r�)r�r�r1s   r�close�Server.closeOs����-�-���?����
��D��J�J�$�$�T�*����
��%�%�1��-�-�2�2�4�4��%�%�,�,�.�(,�D�%��t�}�}���"��L�L�N�#r!c�f�QMM1CkQM1H	drP)r��copyr�r�s  r�
close_clients�Server.close_clientsb�#�����+�+�-�I��O�O��.r!c�f�QMM1CkQM1H	drP)r�r��abortr�s  r�
abort_clients�Server.abort_clientsfrr!c��l �QM1WMO1DOes�I
dI3cr�)r�r�sleepr�s r�
start_serving�Server.start_servingjs$��������k�k�!�n���s�*4�2�4c��� �QM_WOQ8O/1bQM`WOQ8O/1bQM1QMM1QiQMDOes�I
OQidI
WM^1QM1QM1DOes�I
bb9cc9cOQic9c3c)Nzserver z, is already being awaited on serve_forever()z
 is closed)
r�r�r�r�r�r�r�CancelledErrorr��wait_closedr�s r�
serve_forever�Server.serve_foreverps�����$�$�0���$��!M�N�P�
P��=�=� �����
�;�<�<�����$(�J�J�$<�$<�$>��!�		-��+�+�+�+�)-�D�%�
,���(�(�	�
��
�
���&�&�(�(�(�����	��)-�D�%�s`�A*C �-B�<B
�=B�C �
B�C�!#C�C�C�
C�C
�
C�C�	C�C c�� �QM`dQMM1kQMMQ1QDOes�I
dI3c)a�Wait until server is closed and all connections are dropped.

- If the server is not closed, wait.
- If it is closed, but there are still active connections, wait.

Anyone waiting here will be unblocked once both conditions
(server is closed and all connections have been dropped)
have become true, in either order.

Historical note: In 3.11 and before, this was broken, returning
immediately if the server was already closed, even if there
were still active connections. An attempted fix in 3.12.0 was
still broken, returning immediately if the server was still
open and there were no active connections. Hopefully in 3.12.1
we have it right.
N)r�r�r�rB)r�r�s  rr�Server.wait_closed�s?���*�=�=� �����)�)�+���
�
���V�$����s�A	A�A�A)r�r�r�r�r�r�r�r�r�r�r�rP)r�r�r�r�r�r�r�r�r�r�r�r��propertyr�r�r�rrr
rr�r�r�s@rrrsh����>B�)� G�%��
(�	,����G��G�
�&���-�*r!rc�[�XoOoOojOoOoOoOOOO,OgoO	oO
o	OwOOOO,O
ggo
OwOOOOOOOOOOOOOO,OggoOxOgoOyOgo
OyOgoOwOgoOoOoOoOoOoOoO oOwO!goO"oO#oO$oO%oO&oO'oO(oO)oO*o X!MD0O+go#O,o$O-o%OO,O.go&OO,O/go'OO,O0go(O1o)O2o*O3o+OO,O4go,O5o-O6o.O7o/O8O9O:O9O;O9O<O9,O=go0OzO>go1O{O?O,O@ggo2OAo3OBo4OCo5OwODgo6OyOEOO8O9O;O9O<O9OFOOGOOOOOOOOHOOIOOJO,OKggo7O|OLgo8O{O?O,OMggo9ONo:OOo;OOOOOOOO,OPgo<OyO8O9O;O9O<O9OQOOROOFO,OSggo=O8O9O:X>M~O;O9O<O9,OTgo@OUoAOyO8X>M�O<X>M�OFOOVOWOEOOXOOQOOYOOOOOOZO,O[ggoDOEOOOOO,O\goEO]oFO^oGO_oHO`XIM�OaXIM�ObXIM�OcOOdOOeO9OfOOgOOhO,	OigoKO`XIM�OaXIM�ObXIM�OcOOdOOeO9OfOOgOOhO,	OjgoLOkoMOloNOmoOOnoPOooQOpoROqoSOroTOsoUOtoVOuoWOvoXQoYd)}ri�c���OQiOQiOQiWM1Qi+QiOQiOQiOQi	WMO1MQi
OQiQMW M"11OQiOQiOQiOQiOQiOQiW0M21QiOQiOQid)NrF�	monotonicg�������?)�_timer_cancelled_count�_closed�	_stoppingrV�deque�_ready�
_scheduled�_default_executor�
_internal_fds�
_thread_id�time�get_clock_info�
resolution�_clock_resolution�_exception_handler�	set_debugr�_is_debug_mode�_old_agen_hooks�slow_callback_duration�_current_handle�
_task_factory�"_coroutine_origin_tracking_enabled�&_coroutine_origin_tracking_saved_depthr�r��
_asyncgens�_asyncgens_shutdown_called�_executor_shutdown_calledr�s rr��BaseEventLoop.__init__�s���&'��#�������!�'�'�)������!%���������!%�!4�!4�[�!A�!L�!L���"&������z�0�0�2�3�#���'*��#�#���!���27��/�6:��3�"�/�/�+���*/��'�).��&r!c	��OQMMOQM1OQM1OQM	1O/	!)Nr�z	 running=z closed=z debug=r�)r�r��
is_running�	is_closed�	get_debugr�s rr��BaseEventLoop.__repr__�sP������'�'�(�	�$�/�/�2C�1D�E��n�n�&�'�w�t�~�~�/?�.@��
C�	
r!c�0�WMQO5!)z,Create a Future object attached to the loop.�r�)r�Futurer�s rr��BaseEventLoop.create_future�s���~�~�4�(�(r!�nameN�contextc�"�QM1QM`8WMTT#O5kQM%^
QMOQ!Q`QMT1kJQMTQO5kQMQ1Q!)z4Schedule a coroutine object.

Return a task object.
)r�r8r9�����)r9)�
_check_closedr(rr�_source_traceback�set_name)r��coror8r9�tasks     r�create_task�BaseEventLoop.create_task�s���
	
�������%��:�:�d�D�J�D��%�%��*�*�2�.������)�)�$�5���)�)�$�g�)�F���M�M�$���r!c�L�Q_WQ1%aWO1bTid)aGSet a task factory that will be used by loop.create_task().

If factory is None the default task factory will be set.

If factory is a callable, it should have a signature matching
'(loop, coro)', where 'loop' will be a reference to the active
event loop, 'coro' will be a coroutine object.  The callable
must return a Future.
Nz'task factory must be a callable or None)�callabler>r()r��factorys  r�set_task_factory�BaseEventLoop.set_task_factory�s&����x��'8�'8��E�F�F�$�r!c��QM!)z<Return a task factory, or None if the default one is in use.)r(r�s r�get_task_factory�BaseEventLoop.get_task_factory�s���!�!�!r!�extra�serverc��Wb)zCreate socket transport.��NotImplementedError)r�r1�protocolr�rKrLs      r�_make_socket_transport�$BaseEventLoop._make_socket_transport��
��"�!r!�server_sideF�server_hostnamer�r��call_connection_madeTc��Wb)zCreate SSL transport.rN)r��rawsockrP�
sslcontextr�rTrUrKrLr�r�rVs            r�_make_ssl_transport�!BaseEventLoop._make_ssl_transport�s
��"�!r!c��Wb)zCreate datagram transport.rN)r�r1rP�addressr�rKs      r�_make_datagram_transport�&BaseEventLoop._make_datagram_transportrSr!c��Wb)zCreate read pipe transport.rN�r��piperPr�rKs     r�_make_read_pipe_transport�'BaseEventLoop._make_read_pipe_transportrSr!c��Wb)zCreate write pipe transport.rNras     r�_make_write_pipe_transport�(BaseEventLoop._make_write_pipe_transport
rSr!c	�� �Wb3c)zCreate subprocess transport.rN)
r�rP�args�shell�stdin�stdout�stderr�bufsizerK�kwargss
          r�_make_subprocess_transport�(BaseEventLoop._make_subprocess_transports
���"�!�s�	c��Wb)z�Write a byte to self-pipe, to wake up the event loop.

This may be called from a different thread.

The subclass is responsible for implementing the self-pipe.
rNr�s r�_write_to_self�BaseEventLoop._write_to_selfs
��"�!r!c��Wb)zProcess selector events.rN)r��
event_lists  r�_process_events�BaseEventLoop._process_events!s��!�!r!c�<�QM%^WO1bd)NzEvent loop is closed)rr�r�s rr<�BaseEventLoop._check_closed%s���<�<��5�6�6�r!c�<�QM%^WO1bd)Nz!Executor shutdown has been called)r-r�r�s r�_check_default_executor�%BaseEventLoop._check_default_executor)s���)�)��B�C�C�*r!c��QMMQ1QM1%a+QMQMQM11ddrP)r+r�r1�call_soon_threadsaferA�aclose�r��agens  r�_asyncgen_finalizer_hook�&BaseEventLoop._asyncgen_finalizer_hook-sB��������%��~�~����%�%�d�&6�&6����
�F� r!c��QM%^"WMOQ8O/WQO5QMMQ1d)Nzasynchronous generator z3 was scheduled after loop.shutdown_asyncgens() call��source)r,�warnings�warn�ResourceWarningr+r�r�s  r�_asyncgen_firstiter_hook�&BaseEventLoop._asyncgen_firstiter_hook2sA���*�*��M�M�)�$��21�2���
.�
	
�����D�!r!c	�� �OQiWQM1%adWQM1kQMM	1W
MQRp+pCl"M1KH	pkOO,2DOes�I
kWT11C7rmEWQW1%aHQMOOQ8/OQOQ,1H9	dppkcIP3c)z,Shutdown all active asynchronous generators.TN�return_exceptions�messagez;an error occurred during closing of asynchronous generator rh�asyncgen)r,r�r+rX�clearr�gatherr��zipr�	Exception�call_exception_handler)r��
closing_agens�ag�results�resultr�s      r�shutdown_asyncgens� BaseEventLoop.shutdown_asyncgens;s����*.��'��4�?�?�#�#�
��T�_�_�-�
����������$1�
2�M�b�i�i�k�M�
2�$�"�$�$�� ��7�L�F��&�)�,�,��+�+��"9�9=�� B�����	-��8��3�$�s$�A&C�(C�
C�
C�'C�6&Cc��< �OQiQM`dQM1kWMQM
Q0O5kQM
1WMQ19YppY1DOes�I
QDOes�I
OOO1DOes�I
QM1dI/I'I)DOes�I
%acI/9cW^@WMOQO/WOO5QMMOO	5dc9c3c)
z�Schedule the shutdown of the default executor.

The timeout parameter specifies the amount of time the executor will
be given to finish joining. The default value is None, which means
that the executor will be given an unlimited amount of time.
TN)�targetriz:The executor did not finishing joining its threads within z	 seconds.�)�
stacklevelF��wait)r-rr��	threading�Thread�_do_shutdown�startr
�timeout�join�TimeoutErrorr�r��RuntimeWarning�shutdown)r�r��future�threads    r�shutdown_default_executor�'BaseEventLoop.shutdown_default_executorTs����*.��&��!�!�)���#�#�%���!�!��):�):�&��K������		��'�'��0�0�0����1�0�
�K�K�M�1��1�0�0�0���	8��M�M�0�07�y�	�C�(�Q�
8�
�"�"�+�+��+�7�		8�s��AD�"C�>B.�?C�B4�B0�	B4�
C�B2�C�D�.C�0B4�2C�4C	�:B=�;C	�C�AD�D�D�Dc�z�QMMOO5QM1%a"QMWM
QO1ddW^ZkQM1%a;QM1%a!QMQMQ1Ok=dOk=dOk=dOk=cc9c)NTr�)	rr�r1rr�_set_result_unless_cancelledr�rgr�)r�r��exs   rr��BaseEventLoop._do_shutdownls���	D��"�"�+�+��+�6��>�>�#�#��)�)�'�*N�*N�*0�$�8�$���	D��>�>�#�#�F�,<�,<�,>�,>��)�)�&�*>�*>��C�C�-?�#��	D�s�AA�
B:� AB5�5B:c��QM1%^WO1bWM1_WO1bd)Nz"This event loop is already runningz7Cannot run the event loop while another loop is running)r0r�r�_get_running_loopr�s r�_check_running�BaseEventLoop._check_runningvsA���?�?����C�D�D��#�#�%�1��I�K�
K�2r!c�f�QM1QM1QMQM1WM
1QiWM1Qi	WMQMQMO5WMQ1d)z�Prepare the run loop to process events.

This method exists so that custom custom event loop subclasses (e.g., event loops
that integrate a GUI event loop with Python's event loop) have access to all the
loop setup logic.
)�	firstiter�	finalizerN)r<r��_set_coroutine_origin_tracking�_debug�sys�get_asyncgen_hooksr%r��	get_identr�set_asyncgen_hooksr�r�r�_set_running_loopr�s r�_run_forever_setup� BaseEventLoop._run_forever_setup}s��	
���������+�+�D�K�K�8�"�5�5�7���#�-�-�/�������3�3��3�3�	
�
	� � ��&r!c���OQiOQiWMO1QM	O1QM
_%WMQM
2OQidd)z�Clean up after an event loop finishes the looping over events.

This method exists so that custom custom event loop subclasses (e.g., event loops
that integrate a GUI event loop with Python's event loop) have access to all the
loop cleanup logic.
FN)rrrr�r�r%r�r�r�s r�_run_forever_cleanup�"BaseEventLoop._run_forever_cleanup�s[��������� � ��&��+�+�E�2����+��"�"�D�$8�$8�9�#'�D� �,r!c��QM1QM1QM%aH$QM1dQM1c9c)zRun until stop() is called.N)r��	_run_oncerr�r�s r�run_forever�BaseEventLoop.run_forever�sE��	(��#�#�%����� ��>�>�>���%�%�'��D�%�%�'�s�0A�A�Ac�\�QM1QM1WMQ1%(kWM
TO5kQ%^OQiQMW1QM1QMW1QM1%aWO1bQM1!Q%^:QM1%^%QM1%aQM1b9cQMW1c9c)a,Run until the Future is done.

If the argument is a coroutine, it is wrapped in a Task.

WARNING: It would be disastrous to call run_until_complete()
with the same coroutine twice -- it would wrap it in two
different Tasks and that can't be good.

Return the Future's result, or raise its exception.
r5Fz+Event loop stopped before Future completed.)r<r�r�isfuturer�
ensure_future�_log_destroy_pending�add_done_callbackror�r�rgrh�remove_done_callbackr�r�)r�r��new_tasks   r�run_until_complete� BaseEventLoop.run_until_complete�s���	
���������'�'��/�/���$�$�V�7���+0�F�'�� � �!7�8�
	@�����
�'�'�(>�?��{�{�}�}��L�M�M��}�}����	��F�K�K�M�M�&�2B�2B�2D�2D�� � �"����'�'�(>�?�s�7C
�
AD�D�D+c��OQid)z�Stop running the event loop.

Every callback already scheduled will still run.  This simply informs
run_forever to stop looping after a complete iteration.
TN)rr�s rrl�BaseEventLoop.stop�s����r!c��QM1%^WO1bQM%^dQM%^WM
OQ1OQiQMM1QMM1OQi	QMkQ_OQi
QMOO5dd)z�Close the event loop.

This clears the queues and shuts down the executor,
but does not wait for the executor to finish.

The event loop must not be running.
z!Cannot close a running event loopNzClose %rTFr�)r0r�rr�r�debugrr�rr-rr��r��executors  rr��BaseEventLoop.close�s����?�?����B�C�C��<�<���;�;��L�L��T�*����������������)-��&��)�)����%)�D�"����5��)� r!c��QM!)z*Returns True if the event loop was closed.)rr�s rr1�BaseEventLoop.is_closed�s���|�|�r!c��QM1%a:QOQ8/WQO5QM1%aQM1ddd)Nzunclosed event loop r�)r1r�r0r�)r��_warns  r�__del__�BaseEventLoop.__del__�sC���~�~����(���1�?�4�P��?�?�$�$��
�
��%� r!c��QMOG!)z*Returns True if the event loop is running.N)rr�s rr0�BaseEventLoop.is_running�s�����t�+�,r!c�,�WM1!)z�Return the time according to the event loop's clock.

This is a float expressed in seconds since an epoch, but the
epoch, precision, accuracy and drift are unspecified and may
differ per event loop.
)rrr�s rr�BaseEventLoop.time�s���~�~��r!c��Q`WO1bQMQM1Q*Q+QL3OQ,2kQM%^
QMOQ!)a�Arrange for a callback to be called at a given time.

Return a Handle: an opaque object with a cancel() method that
can be used to cancel the call.

The delay can be an int or float, expressed in seconds.  It is
always relative to the current time.

Each callback will be called exactly once.  If two callbacks
are scheduled for exactly the same time, it is undefined which
will be called first.

Any positional arguments after the callback will be passed to
the callback when it is called.
zdelay must not be Noner9r;)r>�call_atrr=)r��delay�callbackr9ri�timers      r�
call_later�BaseEventLoop.call_laters]�� �=��4�5�5����T�Y�Y�[�5�0�(�.�T�.�%,�.���"�"��'�'��+��r!c�d�Q`WO1bQM1QM%^"QM1QM	QO1W
MTT@Q1kQM%^
QMOWMQMQ1OQi
Q!)zlLike call_later(), but uses an absolute time.

Absolute time corresponds to the event loop's time() method.
zwhen cannot be Noner�r;T)r>r<r��
_check_thread�_check_callbackr�TimerHandler=�heapq�heappushr)r��whenr�r9rir�s      rr��BaseEventLoop.call_at s���
�<��1�2�2������;�;���� �� � ��9�5��"�"�4�4�w�G���"�"��'�'��+�
���t����.�����r!c���QM1QM%^"QM1QMQO1QM	TQ1kQM
%^
QM
OQ!)a$Arrange for a callback to be called as soon as possible.

This operates as a FIFO queue: callbacks are called in the
order in which they are registered.  Each callback will be
called exactly once.

Any positional arguments after the callback will be passed to
the callback when it is called.
�	call_soonr;)r<r�r�r��
_call_soonr=�r�r�r9rirs     rr��BaseEventLoop.call_soon2s_��	
�����;�;���� �� � ��;�7������9���#�#��(�(��,��
r!c���WMQ1%aWMQ1%^WOQO/1bW	Q1%aWOQOQ8/1bd)Nzcoroutines cannot be used with z()z"a callable object was expected by z(), got )r�iscoroutine�_iscoroutinefunctionr>rD)r�r��methods   rr��BaseEventLoop._check_callbackEsp���"�"�8�,�,��/�/��9�9��1�&���<�>�
>���!�!��4�V�H�=��l�$�%�
%�"r!c��WMTT1kQM%^
QMOQMM	Q1Q!)Nr;)r�Handler=rrB)r�r�rir9rs     rr��BaseEventLoop._call_soonOs@�����x�t�=���#�#��(�(��,������6�"��
r!c�~�QM`dWM1kTM6w^WO1bd)aGCheck that the current thread is the thread running the event loop.

Non-thread-safe methods of this class make this assumption and will
likely behave incorrectly when the assumption is violated.

Should only be called when (self._debug == True).  The caller is
responsible for checking this condition for performance reasons.
NzMNon-thread-safe operation invoked on an event loop other than the current one)rr�r�r�)r��	thread_ids  rr��BaseEventLoop._check_threadVs@���?�?�"���'�'�)�	����'��'�(�
(�(r!c���QM1QM%^QMQO1QMTQ1kQM%^
QMOQM1Q!)z"Like call_soon(), but thread-safe.rr;)r<r�r�r�r=rsr�s     rr�"BaseEventLoop.call_soon_threadsafegs^�������;�;�� � ��+A�B������9���#�#��(�(��,������
r!c�J�QM1QM%^QMQO1Q`EQMkQM	1Q`&W
MMOO5kTiWMQMQ+QL32QO5!)N�run_in_executor�asyncio)�thread_name_prefixr5)
r<r�r�rr|�
concurrentr�ThreadPoolExecutor�wrap_future�submit)r�r��funcris    rr�BaseEventLoop.run_in_executorrs��������;�;�� � ��'8�9����-�-�H��(�(�*���%�-�-�@�@�'0�A���*2�&��"�"��O�O�D�(�4�(�t�5�	5r!c�x�WQWMM1%aW	O1bTid)Nz,executor must be ThreadPoolExecutor instance)rr	rr
r>rr�s  r�set_default_executor�"BaseEventLoop.set_default_executor�s-���(�J�$6�$6�$I�$I�J�J��J�K�K�!)�r!c�X�QOQ8/+kQ%^QMOQ8/1Q%^QMOQ8/1Q%^QMOQ8/1Q%^QMOQ8/1OMQ1kWMOQ1QM	1kW
MTT4TV1k	QM	1Q*
k
OQO	Q
O
*O
OQ	8/kT�M6�^WMQ1Q	!WMQ1Q	!)
N�:zfamily=ztype=zproto=zflags=�, zGet address info %szGetting address info z took g@�@z.3fzms: )	rBr�rr�rr+�getaddrinfor&�info)r�rDrErFrGrH�flags�msg�t0�addrinfo�dts           r�_getaddrinfo_debug� BaseEventLoop._getaddrinfo_debug�s����q���!�"����J�J���
�+�,���J�J��t�h�'�(���J�J���y�)�*���J�J���y�)�*��i�i��n�����*�C�0�
�Y�Y�[���%�%�d�&��M��
�Y�Y�[�2�
��%�c�U�&��c��#��d�8�,�O��
�,�,�,��K�K�����
�L�L����r!rFrrGrHrc
�� �QM%^
QMkJWMkQM	OTqT#TEQ1DOes�I
!I3crP)r�rr+rr)r�rDrErFrGrHr�getaddr_funcs        rr�BaseEventLoop.getaddrinfo�sN����;�;��2�2�L�!�-�-�L��)�)��,�d�D��H�H�	H�H�s�AA�	A�
Ac��` �QMOWMT1DOes�I
!I3crP)rr+�getnameinfo)r��sockaddrrs   rr"�BaseEventLoop.getnameinfo�s/����)�)��&�$�$�h�7�7�	7�7�s�%.�,�.�fallbackc��f �QM%^QM1O6w^WO1bWQ1QM	TT41QMTT41DOes�I
!IWM^kQ%abOk=JOk=cc9cQMTT41DOes�I
!3c)Nrzthe socket must be non-blocking)	r��
gettimeoutr,rw�_check_sendfile_params�_sock_sendfile_nativer�SendfileNotAvailableError�_sock_sendfile_fallback)r�r1�file�offset�countr%rns       r�
sock_sendfile�BaseEventLoop.sock_sendfile�s�����;�;�4�?�?�,��1��>�?�?��$���#�#�D��>�	��3�3�D�4:�C�C�
C�C���3�3�	�����	���1�1�$�28�A�A�A�	A�sN�AB1�A-�&A+�'A-�*B1�+A-�-B�B�	B1�B�B1�+B.�,B1c��H �WMOQ8OQ8O/1b3c)Nz-syscall sendfile is not available for socket z
 and file z combination�rr*�r�r1r,r-r.s     rr)�#BaseEventLoop._sock_sendfile_native�s3����2�2�;�D�8�D��x�|�
-�.�	.�s� "c��r �Q%^QMQ1Q%^WQWM1JWMkW	Q1kOkQ%^WTG*
Q1kQO6:^J]WQ1OQkQM
OQMQ1DOes�I
k	Q	%aJ"QMTOQ	1DOes�I
Ty*
kHzQQO6�^&WQO1%^QMT7*1!!!I\I:QO6�^&WQO1%^QMT7*1ccc9c3c)Nr�seek)
r6�minr�!SENDFILE_FALLBACK_READBUFFER_SIZE�	bytearray�
memoryviewr�readinto�sock_sendallr*)
r�r1r,r-r.�	blocksize�buf�
total_sent�view�reads
          rr+�%BaseEventLoop._sock_sendfile_fallback�s$�����I�I�f���
��y�B�B�C�#�E�E�	��	�"���
�	/��� #�E�$6�	� B�I� �A�~��!�#��z�	�2��!�1�1�$��
�
�t�L�L�����'�'��5�D�k�:�:�:��"�
���A�~�'�$��"7�"7��	�	�&�-�.�#8�~�M�;���A�~�'�$��"7�"7��	�	�&�-�.�#8�~�sC�AD7�AD�%D�&#D�	D�
D�-D7�D�D�.D4�4D7c���OWQOO17^WO1bQMWM6XaWO1bQ_OWQW1%aWOMQ11bQO6:^WOMQ11bWQW1%aWOMQ11bQO6^WOMQ11bd)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})rz0offset must be a non-negative integer (got {!r}))	rr,rGr+r:rr=r>�formatr3s     rr(�$BaseEventLoop._check_sendfile_params�s����g�d�F�C�0�0��C�D�D��y�y�F�.�.�.��J�K�K����e�S�)�)��A�H�H��O�Q�Q���z� �A�H�H��O�Q�Q��&�#�&�&��B�I�I����
��A�:��B�I�I����
�r!c��� �+kQMQ1QrmVmxk	Ok
WMTVQO5k
Q
MO1Q_NQC!rkm�T�6w^HQ
MQ1J)	Q%^QM1bW	OQ8O/1bQMT�1DOes�I
Q
O9m!W^Rk
OQ8OWQ
1M
1/kW	Q
MQ1k
QMQ
1Ok
=
H�Ok
=
cc9cIhW^*k
QMQ
1Q
_Q
M1bOk
=
cQ
_Q
M1b9cO9mc9c3c)z$Create, bind and connect one socket.N�rFrGrHF�*error while attempting to bind on address �: z&no matching local address with family=z found)rBr+�setblocking�bindr/r�lower�errno�pop�sock_connectr�)r�r�	addr_info�local_addr_infos�
my_exceptionsrF�type_rH�_r]r1�lfamily�laddrrnrs               r�
_connect_sock�BaseEventLoop._connect_sock�s}����
����-�(�+4�(��u����#	.��=�=��%�H�D����U�#��+�/?�+�G�Q��1��(� �	2��	�	�%�(��
0@�%�+�/�/�1�1�%�(O��y�PV�&W�X�X��#�#�D�2�2�2��*.�-�J���1#�2�'�',�i�r�#�c�(�.�.�2B�1C�E��&�c�i�i��5��%�,�,�S�1�1��
2��
3���	�� � ��%����
�
����	����
�
����)-�-�J��sk�E,�=D�B8�/?D�.D�/D�4E,�8
D�AD�	D�D�D�
E!�#%E�E!�!E$�$E)�)E,rur1�
local_addr�happy_eyeballs_delay�
interleave�
all_errorsc	���[[[[ �Q
_Q%aWO1bQ
`Q%^Q%aWO1bQk
Q_Q%aWO1bQ_Q%aWO1bQ_WQ1Q
_Q`OkQ`QB_�Q_WO1bPMT#0QWMTgPO5DOes�I
kQ%aWO	1bQ	_?PMT�WMQQPO5DOes�I
jP%aWO	1bJOjQ%^W
QQ1k+jQ
`&QCkPMPQP1DOes�I
kJ3	J0WMQQQ0O
gQ1Q
PO5DOes�I
OkQ`�PRRp+pCkQCkQKH	H	pkkjQ%^WO
P1bWP1O6X^PObWPO1jWQ0OgP11%^PObWOMOMOP1111bJ;Q`WO1bQM WM6w^WOQ8/1bPM#T�TJQQO5DOes�I
rkkPM$%^+QM'O1kW(M*OT�QQQ1QQ0!BI
BI�BI�W
^BH�c9cBIdppkkcOjc9cIr3c)a�Connect to a TCP server.

Create a streaming transport connection to a given internet host and
port: socket family AF_INET or socket.AF_INET6 depending on host (or
family if specified), socket type SOCK_STREAM. protocol_factory must be
a callable returning a protocol instance.

This method is a coroutine which will try to establish the connection
in the background.  When successful, the coroutine returns a
(transport, protocol) pair.
Nz+server_hostname is only meaningful with sslz:You must set server_hostname when using ssl without a host�1ssl_handshake_timeout is only meaningful with ssl�0ssl_shutdown_timeout is only meaningful with sslr�8host/port and sock can not be specified at the same time�rFrGrHrr��!getaddrinfo() returned empty listc3�8: �QCkQ0QQQ0Oggs�H	d3c)c�*:�PMPQP1!rP)rY)rr�laddr_infosr�s ���r�<lambda>�;BaseEventLoop.create_connection.<locals>.<genexpr>.<lambda>zs���$�2D�2D�&��+�3r!NrQ)rRrrrgr�s  ���rrT�2BaseEventLoop.create_connection.<locals>.<genexpr>ws&�����).�H�)1���).�s�r5rzcreate_connection failedc3�>: �QCkWQ1P6Hs�H	d3crP�r)rRrn�models  �rrTrj�s����G�J�S�s�3�x�5�0�J�s�zMultiple exceptions: {}rc3�6 �QCkWQ1s�H	d3crPrl)rRrns  rrTrj�s���%E�*�3�c�#�h�h�*���z5host and port was not specified and no sock specified�"A Stream Socket was expected, got )r�r�r+z%r connected to %s:%r: (%r, %r))r,rw�_ensure_resolvedr+r:r/rerYr�staggered_race�ExceptionGroupr�r�allrFr�rG�_create_connection_transportr��get_extra_inforr�)r�r�rDrErurFrHrr1r[rUr�r�r\r]r^�infosr�subrnr�rPrrgrms`                     @@@r�create_connection�BaseEventLoop.create_connectionsp����(�&�s��J�K�K��"�s�� �"A�B�B�"�O� �,�S��C�E�
E� �+�C��B�D�
D����d�#��+�
�0B��J���t�/��� �N�P�P��/�/���V��'�'�u��0�N�N�E���A�B�B��%�$(�$9�$9���+�+�5��d�%:�%,�,��#�!�"E�F�F�#�#���-�e�Z�@���J�#�+� %�H�!�%)�%7�%7�&��+�&?� ?���	!&�(�6�6��).�
�)��������|�-7�G�Z�c�3�C�c�3�c�Z�G�
�&�!�,�-G��T�T��:��!�+�(��m�+�!$�J�q�M� 2���G�J�G�G�G�",�Q�-�/�&�&?�&F�&F� �I�I�%E�*�%E�E�'G�H�H��(�|� �K�M�M��y�y�F�.�.�.�!�8���A�C�C�%)�$E�$E��C�"7�!5�%F�%7�7��	�8��;�;��+�+�H�5�D��L�L�:��T�9�h�
@��(�"�"�mN�,�" ?��#�!� �!����H�� "&�J�� 7�s��B1K.�7K�8AK.�8K�96K.�0K
�K�K
�-K.�8K�9K.�K�K.�!BK%�%AK.�9K,�:AK.�K.�K
�

K�K.�K�K.�K.�%K)�)K.c��8 �QMO1Q1kQM1k	Q%^0WQW1%^OJQk
QM	TT�TTQQO5kJQMTQ	1kQ	DOes�I
T�0!IQM
1b9c3c)NF)rTrUr�r�)rLr�r�boolrZrQr�)r�r1r�rurUrTr�r�rPr�rYr�s            rru�*BaseEventLoop._create_connection_transport�s����	
�����#�%���#�#�%���!+�C��!6�!6��C�J��0�0��
�'�&;�%9�	1�;�I��3�3�D�F�K�I�	��L�L�
�"�"�
��	��O�O���s0�A2B�5B�:B�;B�?B�B�B�Bc�� �QM1%^WO1bWQOWMM
1kQWMM
G^WOQ8/1bQWMMG^QMTT41DOes�I
!Q%aWOQ8/1bQMTT41DOes�I
!I4WM^kQ%abOk=ISOk=cc9cI/3c)aSend a file to transport.

Return the total number of bytes which were sent.

The method uses high-performance os.sendfile if available.

file must be a regular file object opened in binary mode.

offset tells from where to start reading the file. If specified,
count is the total number of bytes to transmit as opposed to
sending the file until EOF is reached. File position is updated on
return or also in case of error in which case file.tell()
can be used to figure out the number of bytes
which were sent.

fallback set to True makes asyncio to manually read and send
the file when the platform does not support the sendfile syscall
(e.g. Windows or SSL socket on Unix).

Raise SendfileNotAvailableError if the system does not support
sendfile syscall and fallback is False.
zTransport is closing�_sendfile_compatiblez(sendfile is not supported for transport NzHfallback is disabled and native sendfile is not supported for transport )r�r�rr�
_SendfileMode�UNSUPPORTED�
TRY_NATIVE�_sendfile_nativerr*�_sendfile_fallback)r�r�r,r-r.r%rErns        r�sendfile�BaseEventLoop.sendfile�s���0���!�!��5�6�6��y�"8� �.�.�:�:�<���9�*�*�6�6�6��:�9�-�H�J�
J��9�*�*�5�5�5�
�!�2�2�9�39�B�B�B���+�+4�-�9�:�
:��,�,�Y�-3�<�<�	<�B���7�7�
��� ��
��<�sN�BD	�C�'C�(C�+,D	�D�D	�C�D�2C?�:D	�?D�D	c��6 �WMO1b3c)Nz!sendfile syscall is not supportedr2)r�r�r,r-r.s     rr��BaseEventLoop._sendfile_native�s����2�2�/�1�	1�roc��X �Q%^QMQ1Q%^WQO1JOkWQ1kOkWQ1kQ%^XWTG*
Q1kQO6:^DQQO6�^$W	QO1%^QMT7*1QM1DOes�I
!W
Q1OQk	QMOQMQ	1DOes�I
k
Q
%aDQQO6�^$W	QO1%^QMT7*1QM1DOes�I
!QM1DOes�I
QMQ	OQ
1Tz*
kBHI�I�I<I%QO6�^$W	QO1%^QMT7*1QM1DOes�I
c9c3c)Ni@rr6)r6r7r9ryr*r�r:rr;r��write)r�r�r,r-r.r=r>r?rHr@rAs           rr�� BaseEventLoop._sendfile_fallback�sn�����I�I�f��).�C��u�%�E�	��	�"���
�)�&�1��	"��� #�E�$6�	� B�I� �A�~�)��A�~�'�$��"7�"7��	�	�&�-�.��-�-�/�!�!�"�#��z�	�2��!�1�1�$��
�
�t�L�L���%�
�A�~�'�$��"7�"7��	�	�&�-�.��-�-�/�!�!�
�k�k�m�#�#����T�%�4�[�)��"�
�
"�M�
"�
$���A�~�'�$��"7�"7��	�	�&�-�.��-�-�/�!�!�s��AF*�	E"�&=F*�#E�$F*�).E"�E�E"�$=F*�!E�"F*�'E"�:E �;E"�F*�E"�F*� E"�">F'� F#�!F'�'F*c�� �W`WO1bWQWM1%aW	OQ8/1bWQOO1%aW	OQ8O/1bQM
1kWMTT8TEQQOO5	k	QM1QMQ	1QMQ	MQ1k
QMQM1kQDOes�I
Q	M"!IW^2QM1Q
M!1QM!1bc9c3c)	zbUpgrade transport to TLS.

Return a new transport that *protocol* should start using
immediately.
Nz"Python ssl module is not availablez@sslcontext is expected to be an instance of ssl.SSLContext, got �_start_tls_compatibleFz
transport z  is not supported by start_tls())r�r�rV)rur�r�
SSLContextr>rr�r
�SSLProtocolr�r�r�r�r��
BaseExceptionr�r��_app_transport)r�r�rPrYrTrUr�r�r��ssl_protocol�
conmade_cb�	resume_cbs            r�	start_tls�BaseEventLoop.start_tlss<����;��C�D�D��*�c�n�n�5�5���!�n�&�'�
'��y�"9�5�A�A���Y�M�)I�J�L�
L��#�#�%���+�+��J��"7�!5�!&�(��	���!����|�,��^�^�L�$@�$@�)�L�
��N�N�9�#;�#;�<�	�	��L�L��*�*�*�
���	��O�O�����������		�s0�C'E�*D�/D�0D�4E�D�<D>�>E�
reuse_port�allow_broadcastc
��~	 �Q	_�Q	MWM6X^WOQ	8/1bQ%a*Q%a#Q%aQ%aQ%aQ%aQ%^EW	T#TEQQQO5k
OMOQ
M
111kWOQO/1bQ	MO1OkBJ�Q%a Q%aQO	6X^WO
1bTE0O00k
BJ�WWO1%^�QWM6X^�T#0C(kQ`HWQW1%^HWO
1b	Q%^YQO	O7^PWMWMQ1M 1%^WM"Q1TE0T#000k
BJ,kO	Q0OQ00C�rkkQ`HWQW,1%^W/Q1O6XaWO1bQM1T�WM2TVQO5DOes�I
kQ%aW'O1bQC"rkkkkkQQ0kQQ7^OO+QQ$QQQQ$H$	H�	QM
1RRp+pC(rkkQ%^QO	`HQ%^QO`H$QQ0KH*	k
kkQ
%aWO1b+kQ
C�rrmErkkOk	OkWMQWM2QO5k	Q%^W5Q	1Q%^/Q	M7WM8WM:O1Q	MO1Q%^Q	M=Q1Q%^#Q%aQM?Q	Q1DOes�I
QkJ	QO	bQ1kQME1kQMGQ	QQQ1kQMH%^:Q%^W(MJOT#QQ1JW(MLOQQQ1QDOes�I
QQ0!W$^BI}W&^"kW(M*OT/1Ok=BI�Ok=cc9cBI8ppkkcI�W&^1kQ	_Q	MA1QMBQ1Ok=BH�Ok=cQ	_Q	MA1b9cI�QMA1b9c3c)zCreate datagram connection.Nz$A datagram socket was expected, got )r[�remote_addrrFrHrr�r�rc3�D �QCrmQ%aHQOQ/s�H	d3c)�=NrQ)rR�k�vs   rrT�9BaseEventLoop.create_datagram_endpoint.<locals>.<genexpr>Zs ���$N�L�D�A�A�Z��s�!�A�3�Z�L�s� � zKsocket modifier keyword arguments can not be used when sock is specified. (�)Frzunexpected address family�NN�AF_UNIXzstring is expected)r�z2Unable to check or remove stale UNIX socket %r: %rrr�z2-tuple is expectedrcrdzcan not get address informationrIz@Datagram endpoint local_addr=%r remote_addr=%r created: (%r, %r)z2Datagram endpoint remote_addr=%r created: (%r, %r))'rGr+r:r,�dictr��itemsrLr*r�rrr>�stat�S_ISSOCK�os�st_mode�remove�FileNotFoundErrorr/r�errorr�r�rqr;r2r-r.�SO_BROADCASTrMrQr�rBr�r^r�rr�) r�r�r[r�rFrHrr�r�r1�opts�problems�r_addr�addr_pairs_inforb�err�
addr_infos�idxrw�famrV�pror]�key�	addr_pairr�
local_address�remote_addressrnrPr�r�s                                 r�create_datagram_endpoint�&BaseEventLoop.create_datagram_endpointHs�������y�y�F�.�.�.� �:�4�(�C�E�E��k��e�u��/��z�#)�e�'1�,;�=�� �9�9�$N�D�J�J�L�$N�N�� �0�08�z��<�=�=�
���U�#��F��+��Q�;�$�%@�A�A�%+�O�\�#B�"D�����+�+��&�.�.�0H�'�5�D��'�
�4��0E�0E�'�(<�=�=�6��*�Q�-�{�"B�	6��=�=�����)<�)D�)D�E�E��I�I�j�1�&,�O�%/�$=�$?�#B�� �
�#$�j�/�A�{�3C�!D�I�C���'� *�4�� 7� 7�C��I��N�"+�,A�"B�B�&*�&;�&;� �f�6G�6G�"'�4�'<�'A�!A�� %�")�*M�"N�N�7<�3�C��C��G�#&��*�C�"�*�4�37��,�
�3��3:�J�s�O�C�0�	8=�"E�&<F�;K�;K�;M�#E�;M���i�'�I�a�L�%�(�Y�q�\�%�S�)�$�;M� �#E�
'�$�%F�G�G��J�6E�2��&�0�-�������!�=�=�%�F�,=�,=�U�L�D�!�&�t�,�&����"�-�-�v�/B�/B�A�G��$�$�U�+�!��	�	�-�0�"�.�"&�"3�"3�D�.�"I�I�I�!/���96E�<!��m�#�#�%���#�#�%���1�1��(�F�F�,�	��;�;�����0�&�Y��J����(�(�)�X�?�	��L�L�
�(�"�"��}-���"�6����&5�%/�6�6��6�� !A��#E�8J���+��'��
�
���%�%�c�*�*����'��
�
����*
��	��O�O���s��DR=�R=�0R=�AP
�R=�;AR=�Q�AR=�&Q�=Q�Q�(R=�=B;Q�8Q�9Q�?A?R=�?R'�R%�R'�	R=�
Q�R=�	Q�#Q�:R=�Q�R=�R=�Q�
R"�%R	�R=�	R"�"R=�%R'�'R:�:R=c	�� �QOrmxWTxT#Q+QOL32k	Q	_Q	+!QMTxT#TEO5DOes�I
!I3c)N:Nr�N:r�NN)rFrGrHr)rMr)
r�r]rFrGrHrr�rDrErs
          rrq�BaseEventLoop._ensure_resolved�sc����R�[�
���D��e�J�g�b�k�J�����6�M��)�)�$�V�05�*�D�D�
D�D�s�6?�=�?c�� �QMT0QWMT@O5DOes�I
kQ%aWOQ8O/1bQ!I3c)N)rFrGrr�zgetaddrinfo(z) returned empty list)rqr+r:r/)r�rDrErFrrws      r�_create_server_getaddrinfo�(BaseEventLoop._create_server_getaddrinfo�sX����+�+�T�L��17�1C�1C�27�,�D�D����L���0E�F�G�G���D�s�(A
�A�A
r�r�
reuse_address�
keep_aliverc
��	 �WQW1%^WO1bQ_Q`WO1bQ
_Q`WO1bQ_W	Q1Q`QB_sQ_WO1bQ	`-W
MO6H9%^WMO6gk	+kQO6X^O+kJDWQW1%a)WQWMM1%aQ+kJQkQRp+pCkQMT#QQO	5KH	kkWMQ2DOes�I
kW!W"M$M'Q11kO
kQBC)kQrkkkkkW(M(QQQ1kQM3Q1Q	%^/QM5W(M6W(M8O1Q
%^W;Q1Q%^/QM5W(M6W(M<O1W>%^XQW(M@6X^DWCW(O1%^/QM5W(MDW(MFO1QMIQ1BH,	Q%a"WKOQRp+pCkQOKH
	pk8/1bOkQ%aQCkQMU1H	J>Q`WO1bQMVW(MX6w^WOQ8/1bQ+kQCkQM[O
1H	W]TQT�QQ
1kQ%^.QM_1WM`O1DOes�I
QM,%^W.MbOQ1Q!ppkcBIwW(M*^1QM,%^W.M0OQQQOO
5BH�c9cWJ^�kOQ8OWQ1MM18/kQMNWNMP6X^NQMS1QMU1QM,%^W.M0Q1Ok=BH'WKQMNQ1ObOk=cc9cppkcQ%aQCkQMU1H	cc9cBI`3c)a�Create a TCP server.

The host parameter can be a string, in that case the TCP server is
bound to host and port.

The host parameter can also be a sequence of strings and in that case
the TCP server is bound to all hosts of the sequence. If a host
appears multiple times (possibly indirectly e.g. when hostnames
resolve to the same IP address), the server is only bound once to that
host.

Return a Server object which can be used to stop the service.

This method is a coroutine.
z*ssl argument must be an SSLContext or NoneNr`rarb�posix�cygwinr5)rFrFz:create_server() failed to create socket.socket(%r, %r, %r)T��exc_info�IPPROTO_IPV6rJrKz%could not bind on any address out of �z)Neither host/port nor sock were specifiedrprz
%r is serving)2rr|r>r,rwr�r8r��platformrrV�abc�Iterabler�rr��setr[r\r]r+r�r�r�warningrBr-r.�SO_REUSEADDRr2�SO_KEEPALIVErArr*r��IPV6_V6ONLYrMr/rNrO�
EADDRNOTAVAILrPr�rGr:rLrr�rr)r�r�rDrErFrr1r�rur�r�r�r�r�rr��hosts�fsrw�	completed�resrL�socktyperH�	canonname�sar�rrrLs                              r�
create_server�BaseEventLoop.create_server�s.���:�c�4� � ��H�I�I� �,����C�E�
E� �+����B�D�
D����d�#���t�/��� �N�P�P��$� "���7� 2� O�s�|�|�x�7O�
��G��r�z�����T�3�'�'� ��{���'?�'?�@�@������$�%�#�d��1�1�$�V�8=�2�?�#�
�%� �,�,��+�+�E��	���5�5�e�<�=�E��I�5
%� �C�9<�6�B��%��B�!�%�}�}�R��5�A���N�N�4�(�$����"�-�-�v�/B�/B�D�J�!�&�t�,�!����"�-�-�v�/B�/B�D�J�
"�	��&�/�/�1�#�F�N�;�;�����(;�(;�(.�(:�(:�(,�.�
@��	�	�"�
�=!�X�!�:?�%@�%�$�d�1�g�%�%@�#C�D�D�!�	� � '���
�
��!(���|� �!L�M�M��y�y�F�.�.�.� �#E�d�X�!N�O�O��f�G��D����U�#����'7��&;�,�.����!�!�#��+�+�a�.� � ��;�;��K�K���0��
��e%�,��"�<�<�!��;�;�"�N�N�,G�+-�x���O�!�
!��6#�@�#%�c�#�h�n�n�&6� 8���9�9��(;�(;�;�#�K�K�M� �J�J�L�#�{�{� &���s� 3�$�%�c�i�i��5�4�?��@��&A��!� '���
�
��!(�!��(
!�s��A;S�A*S�,N�	S�!N�".S�R� N�8C2R�+O#�<R�R
� R�,B8S�$S�%4S�AO �R�O � R�#
R�-BR�3R�:R�R�R�#S�Sc
�� �QMWM6w^WOQ8/1bQ_Q%aWO1bQ_Q%aWO1bQ_W	Q1QMT!QOOQQO5DOes�I
rmgQM%^)QMO1kWMOT&Q1Tg0!IC3c)	Nrpr`rar5T)rTr�r�r+z%r handled: (%r, %r))
rGr+r:r,rwrur�rvrr�)r�r�r1rur�r�r�rPs        r�connect_accepted_socket�%BaseEventLoop.connect_accepted_socketqs����
�9�9��*�*�*��A�$��J�K�K� �,�S��C�E�
E� �+�C��B�D�
D����d�#�$(�$E�$E��C���"7�!5�%F�%7�7��	��;�;��+�+�H�5�D��L�L�/��(�K��"�"�7�s�BC�C�ACc�� �Q1kQM1kQMT#Q1kQDOes�I
QM%^&WM
OQM
1TS1TS0!I>QM1b9c3c)Nz Read pipe %r connected: (%r, %r))r�rcr�r�rr��fileno�r�r�rbrPr�r�s      r�connect_read_pipe�BaseEventLoop.connect_read_pipe�s}���#�%���#�#�%���2�2�4�6�J�	�	��L�L�
�;�;��L�L�;�����	�
=��"�"�
��	��O�O����+�*B	�A3�A1�A3�:B	�1A3�3B�B	c�� �Q1kQM1kQMT#Q1kQDOes�I
QM%^&WM
OQM
1TS1TS0!I>QM1b9c3c)Nz!Write pipe %r connected: (%r, %r))r�rfr�r�rr�r�r�s      r�connect_write_pipe� BaseEventLoop.connect_write_pipe�s}���#�%���#�#�%���3�3�D�F�K�	�	��L�L�
�;�;��L�L�<�����	�
=��"�"�
��	��O�O���r�c�~�Q+kQ_QMOWQ1/1Q_2QWM6X^QMOWQ1/1J@Q_QMOWQ1/1Q_QMOWQ1/1WM
OM
Q11d)Nzstdin=zstdout=stderr=zstdout=zstderr=� )rBr'r#r%rr�r�)r�rrkrlrmrs      r�_log_subprocess�BaseEventLoop._log_subprocess�s����u�����K�K�&��e�!4� 5�6�7���&�J�,=�,=�"=��K�K�.��f�)=�(>�?�@��!����g�l�6�&:�%;�<�=��!����g�l�6�&:�%;�<�=����S�X�X�d�^�$r!rkrlrm�universal_newlinesrjrn�encoding�errors�textc		�� �WQWW01%aWO1bQ%^WO1bQ%aWO1bQO6w^WO1bQ%^WO1bQ	_WO1bQ
_WO1bQ1k
OkQM%^O	Q*kQMT�TE1QMT�O
T4TX0,Q@2DOes�I
kQM%^Q_WMOT�1T�0!I23c)Nzcmd must be a string� universal_newlines must be Falsezshell must be Truer�bufsize must be 0�text must be False�encoding must be None�errors must be Nonezrun shell command %rT�%s: %r)	rr<rr,r�r�rprr)r�r��cmdrkrlrmr�rjrnr�r�r�rorP�	debug_logr�s                r�subprocess_shell�BaseEventLoop.subprocess_shell�s
����#��s�|�,�,��3�4�4���?�@�@���1�2�2��a�<��0�1�1���1�2�2����4�5�5����2�3�3�#�%���	��;�;�/��4�I�� � ��6�B��9�9��4���K�CI�K�K�	��;�;�9�0��K�K��)�7��"�"�	K�s�CD�D	�3Dc		��� �Q%^WO1bQ%^WO1bQO6w^WO1bQ%^WO1bQ	_WO1bQ
_WO1bQ0Q*kQ1kOkQM%^OQ8/kQMQT4Q1QMT�O	T4QQ0,Q
@2DOes�I
kQM%^Q_WM
O
QQ1QQ0!I43c)Nr�zshell must be Falserr�r�r�r�zexecute program Fr�)r,r�r�rprr)r�r��programrkrlrmr�rjrnr�r�r�riro�
popen_argsrPr�r�s                  r�subprocess_exec�BaseEventLoop.subprocess_exec�s�����?�@�@���2�3�3��a�<��0�1�1���1�2�2����4�5�5����2�3�3��Z�$�&�
�#�%���	��;�;�+�7�+�6�I�� � ��E�6�B��9�9��%��������	��;�;�9�0��K�K��)�Y�7��(�"�"��s�B7C0�9C.�:5C0c��QM!)zKReturn an exception handler, or None if the default one is in use.
        )r"r�s r�get_exception_handler�#BaseEventLoop.get_exception_handlers���&�&�&r!c�T�Q_WQ1%aWOQ8/1bTid)asSet handler as the new event loop exception handler.

If handler is None, the default exception handler will
be set.

If handler is a callable object, it should have a
signature matching '(loop, context)', where 'loop'
will be a reference to the active event loop, 'context'
will be a dict object (see `call_exception_handler()`
documentation for details about context).
Nz+A callable object or None is expected, got )rDr>r")r��handlers  r�set_exception_handler�#BaseEventLoop.set_exception_handlers6����x��'8�'8��#�#*�+�/�0�
0�")�r!c���QMO1kQ%aOkQMO1kQ_WQ1T3M0kJOkOQ7^AQM_4QMM%^QMMQO$Q+kWQ1C�kQO7^HTkQO6X^:O	M
WMQ11kO
kTxM1*
kJKQO6X^:O	M
WMQ11kOkTxM1*
kJWQ1kQMQOQ/1H�	WMO
M
Q1QO5d)a�Default exception handler.

This is called when an exception occurs and no exception
handler is set, and can be called by a custom exception
handler that wants to defer to the default behavior.

This default handler logs the error message and other
context-dependent information.  In debug mode, a truncated
stack trace is also appended showing where the given object
(e.g. a handle or future or task) was created, if any.

The context parameter has the same meaning as in
`call_exception_handler()`.
r�z!Unhandled exception in event looprhNF�source_traceback�handle_traceback>r�rhr5z+Object created at (most recent call last):
z+Handle created at (most recent call last):
rK�
r�)�getrG�
__traceback__r'r=�sortedr��	traceback�format_list�rstriprrBrr�)	r�r9r�rhr��	log_linesr��value�tbs	         r�default_exception_handler�'BaseEventLoop.default_exception_handlersS���+�+�i�(���9�G��K�K��,�	�� ��Y���4K�4K�L�H��H��g�-��$�$�0��$�$�6�6��$�$�6�6�
�&�'��I�	��'�?�C��.�.���L�E��(�(��W�W�Y�2�2�5�9�:��F������$���*�*��W�W�Y�2�2�5�9�:��F������$���U�������u�B�u�g�.�/�#� 	���T�Y�Y�y�)�H�=r!c	���QM`QMQ1dOkQMO1kQ`QMO1kQ`QMO1kQ_!WQO1%^QM1kQ_.WQO	1%^QMQMT1dQMT1dWW0^bW^W
MOOO5dc9cWW0^bW^^kQMO
OOQO
Q,1Ok=dWW0^bW^W
MOOO5Ok=dc9cOk=cc9c)a�Call the current event loop's exception handler.

The context argument is a dict containing the following keys:

- 'message': Error message;
- 'exception' (optional): Exception object;
- 'future' (optional): Future instance;
- 'task' (optional): Task instance;
- 'handle' (optional): Handle instance;
- 'protocol' (optional): Protocol instance;
- 'transport' (optional): Transport instance;
- 'socket' (optional): Socket instance;
- 'asyncgen' (optional): Asynchronous generator that caused
                         the exception.

New keys maybe introduced in the future.

Note: do not overload this method in an event loop subclass.
For custom exception handling, use the
`set_exception_handler()` method.
Nz&Exception in default exception handlerTr�r@r�r�get_context�runr�z$Unhandled error in exception handlerrhr9zeException in default exception handler while handling an unexpected error in custom exception handler)r"rrirjr�rr�rr*rr)r�r9�ctx�thingrns     rr��$BaseEventLoop.call_exception_handlerJsy��,�"�"�*�	
,��.�.�w�7�$
0������F�+���=�$�K�K��1�E��=�#�K�K��1�E��$���
�)F�)F��+�+�-�C��?�w�s�E�':�':��G�G�D�3�3�T�C��+�+�D�:��3� 1�2�
�� �
,����E�&*�,�	
,��0� 1�2�
�� �
0�0��2�2�!�#I�#�S�!�7�4����
#�$5�6���$�0��L�L�"?�+/�0�0�0��
0�sG�C�BC<�2C<�2C9�8C9�<E4�D3�32E,�%E/�+E,�,E/�/E4c�^�QM%aQMMQ1dd)zAdd a Handle to _ready.N)�
_cancelledrrB�r�rs  r�
_add_callback�BaseEventLoop._add_callback�s"��� � ��K�K���v�&�!r!c�F�QMQ1QM1d)z6Like _add_callback() but called from a signal handler.N)r rsrs  r�_add_callback_signalsafe�&BaseEventLoop._add_callback_signalsafe�s�����6�"����r!c�R�QM%^Q9MO*
pidd)z3Notification that a TimerHandle has been cancelled.rN)rrrs  r�_timer_handle_cancelled�%BaseEventLoop._timer_handle_cancelled�s!������'�'�1�,�'�r!c�t�WQM1kQW6�^{QMQ*W6�^d+kQMC.kQM
%^	OQiHQM
Q1H0	WMQ1T iOQiJmQM%^\QMOM
%^>Q9MO*piWMQM1kOQiHmOkQM%aQM%^OkJTQM%^CQMOMQM1*
kQW6�^WkJQO6^OkQMM!Q1kQM#Q1OkQM1QM$*kQM%^dQMOkQMQ6�^JDWMQM1kOQiQMM
Q1HuWQM1kW'Q1C�kQMM)1kQM
%^H0QM*%^sT0iQM1k	QM/1QM1Q	*
k
T�M06�^!W2M4OW7Q1Q
1OQiH�QM/1H�	OkdOQic9c)z�Run one full iteration of the event loop.

This calls all currently ready callbacks, polls for I/O,
schedules the resulting callbacks, and finally schedules
'call_later' callbacks.
FrrNzExecuting %s took %.3f seconds)r�r�_MIN_SCHEDULED_TIMER_HANDLESr�%_MIN_CANCELLED_TIMER_HANDLES_FRACTIONrrBr��heapify�heappoprr�_whenr�MAXIMUM_SELECT_TIMEOUT�	_selector�selectrwr!�range�popleftr�r'�_runr&rr�r )r��sched_count�
new_scheduledrr�rv�end_time�ntodo�irrs           rr��BaseEventLoop._run_once�si���$�/�/�*���6�6��'�'�+�5�5�
6��M��/�/���$�$�(-�F�%�!�(�(��0�	*�
�M�M�-�(�+�O�*+�D�'��/�/�d�o�o�a�&8�&C�&C��+�+�q�0�+����t���7��$)��!����;�;�$�.�.��G�
�_�_��o�o�a�(�.�.�����<�G��/�/�0���1�����^�^�*�*�7�3�
����Z�(��
��9�9�;��!7�!7�7���o�o��_�_�Q�'�F��|�|�x�'���]�]�4�?�?�3�F� %�F���K�K���v�&��D�K�K� ���u��A��[�[�(�(�*�F�� � ���{�{�	0�+1�(�����B��K�K�M�����r�)�B��8�8�8����'G�'5�f�'=�r�C�,0�D�(����
�!�"���,0�D�(�s
�%A)L.�.	L7c�"�WQ1WQM16X^dQ%^?WM1QiWM
WM1J WM
QM1TidrP)r|r)r��#get_coroutine_origin_tracking_depthr*�#set_coroutine_origin_tracking_depthr�DEBUG_STACK_DEPTH�r��enableds  rr��,BaseEventLoop._set_coroutine_origin_tracking�sk����=�D��!H�!H�I�I����7�7�9�
�7��3�3��+�+�
-�
�3�3��;�;�
=�3:�/r!c��QM!rP)r�r�s rr2�BaseEventLoop.get_debugs���{�{�r!c�t�TiQM1%^QMQMQ1ddrP)r�r0rr�r>s  rr#�BaseEventLoop.set_debugs/�����?�?����%�%�d�&I�&I�7�S�r!)r+r,r!rr)r*r'r�rr"r-rr%rrrr(rrr&rP)NNNr�)r)rN)FNN)Zr�r�r�r�r�r�r�rArFrIrQrZr^rcrfrprsrwr<r|r�r�r�r�r�r�r�r�r�r�rlr�r1r�r�r�r0rr�r�r�r�r�r�rrrrrr"r/r)r+r(rYryrur�r�r�r�r�r+r:rqr�r?�
AI_PASSIVEr�r�r�r�r�r#r$r�r�rrrr�r r#r&r�r�r2r#r�r�r�s@rrr�s����/�@
�)����d��*%�"�"�%)�"�26�"�9=�"� �"�26�"��"� $�"�#'�	"�
"&�"�"&�
"�CG�"�
@D�(,�"�
AE�)-�"�04�"�"�"�7�D�G�
"��2�0D�K�'�((� 	(�$�L�*�.�%�M�M��-� ����0�T��$���&%��(�"	�D�	�5� *�
�0H�!"�H�)*�H�23�H�;<�H�7�
A�(,�
A�.�/�4�*).�X59�Q#��Q#� !�Q#��Q#��Q#�$(�Q#��	Q#�.2�	Q#�
#'�Q#�"&�
Q#�"&�Q#�37�Q#��Q#�j*/�"&�!%�	#�8-<�#'�-<�^1�"�2.+�$)�.+�(,�.+�/3�.+�.2�	.+�bEI�D#�./�D#�78�D#�@A�D#�37�D#�8<�	D#�CG�	D#�L
D�&'�
D�.4�.@�.@�
D�%&�
D�./�
D��59�M��#�#�M��#�#�	M�
�M��
M��M��M��M��M�#'�M�"&�M��M�^#��#�#'�#�"&�	#�<#� #� %�"#�%/�_�_�"#�&0�o�o�"#�'1�o�o�"#�38�	"#�
&*�"#�
45�"#�)-�
"#�6:�
"#�AE�
"#�H #�$.�O�O� #�<F�O�O� #�%/�_�_� #�IN� #�%*� #�45� #�(,�	 #�59�	 #�@D�	 #�D'�
*�"0>�dF0�P'�
�
-�
Q�f
:��Tr!r)rr)r)7�__doc__rV�collections.abc�concurrent.futuresr	rOr�r[r�r+r�r#r�rrr�r�r�ru�ImportErrorr5rrrrrr	r
rrr
rr�logr�__all__r)r*r*rAr.r r'r2rMrerorrrw�Protocolry�AbstractServerr�AbstractEventLooprrQr!r�<module>rOs0��
�������	�
������
������������������$��
 #��),�%�
�F�J�'�	�#����J�8�v�,"��6�=�!�!�G�
�>�
A)�	� 2� 2�A)�HK�V�
"�
"�K�\iT�F�,�,�iT��}��
�C��s�D�D �D