+
    ‚V@iSÊ  ã                   óÚ  € ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHtH	t	H
t
HtHt ^ RIHtHt ^ RIHt ^ RIHtHt ^ R	IHt ^ R
IHtHt ^ RIHt ^ RIHt ^ RIHtH t H!t!H"t"H#t#H$t$ ^ RI%H&t&H't'H(t(H)t) ^ RI*H+t+H,t, ^ RI-t-^ RI.t.^ RI/t/^ RI0t0^ RI1t1^ RI2t2^ RI3t3^ RI4t4^ RI5t5^ RI6t6^ RI7H8t8 ^ RI7t7R t9 ! R R]+4      t:]) ! R R]!4      4       t;]) ! R R]!4      4       t<]) ! R R]<4      4       t= ! R R]];4      t> ! R R] ];4      t? ! R R ]=4      t@ ! R! R"]=4      tA ! R# R$]=4      tB ! R% R&]!4      tC ! R' R(]!4      tD ! R) R*]!4      tE]& ! R+ R,]<]!4      4       tF ! R- R.]7PŽ                  4      tHR# )/é    )ÚFuture)Úgen)Únetutil)ÚIOLoop)ÚIOStreamÚSSLIOStreamÚPipeIOStreamÚStreamClosedErrorÚ_StreamBuffer)ÚAsyncHTTPClientÚHTTPResponse)ÚHTTPHeaders)Ú	ConditionÚEvent)Úgen_log)Ússl_options_to_contextÚssl_wrap_socket)ÚAddThreadSelectorEventLoop)Ú	TCPServer)ÚAsyncHTTPTestCaseÚAsyncHTTPSTestCaseÚAsyncTestCaseÚbind_unused_portÚ	ExpectLogÚgen_test)ÚskipIfNonUnixÚrefusing_portÚignore_deprecationÚabstract_base_test)ÚRequestHandlerÚApplicationN)Úmockc                  ó  € \        \        P                  P                  \        P                  P	                  \
        4      R 4      \        P                  P                  \        P                  P	                  \
        4      R4      R7      # )útest.crtútest.key)ÚcertfileÚkeyfile)ÚdictÚosÚpathÚjoinÚdirnameÚ__file__© ó    Ú</usr/lib/python3/dist-packages/tornado/test/iostream_test.pyÚ_server_ssl_optionsr1   0   sM   € ÜÜ—‘—‘œbŸg™gŸo™o¬hÓ7¸ÓDÜ—‘—‘œRŸW™WŸ_™_¬XÓ6¸
ÓCôð r/   c                   ó&   a € ] tR t^7t o R tRtV tR# )ÚHelloHandlerc                ó(   € V P                  R 4       R# )ÚHelloN)Úwrite©Úselfs   &r0   ÚgetÚHelloHandler.get8   s   € Ø�
‰
�7Ör/   r.   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r9   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r0   r3   r3   7   s   ø‡ € ÷ð r/   r3   c                   óº   a € ] tR t^<t o R tR tV 3R lR ltRV 3R lR lltR t]	R 4       t
]	R	 4       t]	R
 4       t]	R 4       t]	R 4       t]	R 4       tRtV tR# )ÚTestIOStreamWebMixinc                ó   € \        4       h©N©ÚNotImplementedErrorr7   s   &r0   Ú_make_client_iostreamÚ*TestIOStreamWebMixin._make_client_iostreamG   ó   € Ü!Ó#Ð#r/   c                ó&   € \        R \        3.4      # )Ú/)r!   r3   r7   s   &r0   Úmixin_get_appÚ"TestIOStreamWebMixin.mixin_get_appJ   s   € Ü˜S¤,Ð/Ð0Ó1Ð1r/   c                ó    <€ V ^8„  d   QhRS[ /# )é   Úreturn)Úint)ÚformatrB   s   "€r0   Ú__annotate__Ú!TestIOStreamWebMixin.__annotate__M   s   ø€ ÷ $ñ $™sñ $r/   c                ó   € \        4       hrF   rG   r7   s   &r0   Úget_http_portÚ"TestIOStreamWebMixin.get_http_portM   rK   r/   c                óF   <€ V ^8„  d   QhRS[ RS[RS[P                  RS[/# )rQ   r*   Úraise_errorÚkwargsrR   )ÚstrÚboolÚtypingÚAnyr   )rT   rB   s   "€r0   rU   rV   P   s1   ø€ ÷ $ñ $Ùð$Ù&*ð$Ù>D¿j¹jð$á	ñ$r/   c                ó   € \        4       hrF   rG   )r8   r*   r[   r\   s   &&&,r0   ÚfetchÚTestIOStreamWebMixin.fetchP   s   € ô "Ó#Ð#r/   c                ó  € \         P                  ! 4       P                  P                  R 4      '       d,   \        P
                  ! 4       R8X  d   V P                  R4       V P                  RRR/R7      pVP                  4        R# )ÚCurlAsyncHTTPClientÚDarwinz:libcurl doesn't handle closed connections cleanly on macOSrM   Ú
ConnectionÚclose)ÚheadersN)	r   Úconfigured_classr;   ÚendswithÚplatformÚsystemÚskipTestrb   Úrethrow)r8   Úresponses   & r0   Útest_connection_closedÚ+TestIOStreamWebMixin.test_connection_closedV   sf   € ô ×,Ò,Ó.×7Ñ7×@Ñ@ÐAV×WÒWÜ—’Ó! XÔ-ð �M‰MÐVÔWØ—:‘:˜c¨L¸'Ð+B�:ÓCˆØ×ÑÖr/   c              #  ó:  "  € V P                  4       pVP                  R V P                  4       34      x € VP                  R4       VP	                  4       x €pV P                  VP                  R4      4       V P                  VP                  R4      4       R# 5i)ú	127.0.0.1ó   GET / HTTP/1.0

s   HTTP/1.1 200ó   HelloN)rI   ÚconnectrX   r6   Úread_until_closeÚ
assertTrueÚ
startswithrk   )r8   ÚstreamÚdatas   &  r0   Útest_read_until_closeÚ*TestIOStreamWebMixin.test_read_until_closei   sx   é € à×+Ñ+Ó-ˆØ�n‰n˜k¨4×+=Ñ+=Ó+?Ð@ÓAÒAØ�‰Ð.Ô/à×,Ñ,Ó.Ñ.ˆØ�‰˜Ÿ™¨Ó8Ô9Ø�‰˜Ÿ™ hÓ/Ö0ùs   ‚BBc              #  ó  "  € V P                  4       V n        V P                  P                  R V P                  4       34      x € V P                  P	                  R4       V P                  P                  ^	4      x €pV P                  VR4       V P                  P                  ^ 4      x €pV P                  VR4       V P                  P                  ^4      x €pV P                  VR4       V P                  P                  4        R# 5i)rt   ru   s	   HTTP/1.1 r/   s   200N)rI   r{   rw   rX   r6   Ú
read_bytesÚassertEqualrh   )r8   r|   s   & r0   Útest_read_zero_bytesÚ)TestIOStreamWebMixin.test_read_zero_bytess   sÖ   é € à×0Ñ0Ó2ˆŒØ�k‰k×!Ñ! ;°×0BÑ0BÓ0DÐ"EÓFÒFØ�‰×ÑÐ3Ô4ð —[‘[×+Ñ+¨AÓ.Ñ.ˆØ×Ñ˜˜|Ô,ð —[‘[×+Ñ+¨AÓ.Ñ.ˆØ×Ñ˜˜sÔ#ð —[‘[×+Ñ+¨AÓ.Ñ.ˆØ×Ñ˜˜vÔ&à�‰×ÑÖùs   ‚DD	c              #  ó4  "  € V P                  4       pVP                  R V P                  4       34      pVP                  R4      pV P	                  VP                  4       4       \        P                  ! W#4      p. pVP                  4       '       g0   VP                  4       x € VP                  VP                  4       KE  V P                  WRV.4       VP                  4       x €pV P                  VP                  R4      4       VP                  4        R# 5i)rt   ó%   GET / HTTP/1.0
Connection: close

rv   N)rI   rw   rX   r6   ÚassertFalseÚdoner   ÚWaitIteratorÚnextÚappendÚcurrent_futurer�   rx   ry   rk   rh   )r8   r{   Úconnect_futÚ	write_futÚitÚresolved_orderr|   s   &      r0   Útest_write_while_connectingÚ0TestIOStreamWebMixin.test_write_while_connecting‡   sÚ   é € à×+Ñ+Ó-ˆØ—n‘n k°4×3EÑ3EÓ3GÐ%HÓIˆð —L‘LÐ!OÓPˆ	Ø×Ñ˜×)Ñ)Ó+Ô,ô ×Ò˜kÓ5ˆØˆØ—'‘'—)’)Ø—'‘'“)ŠOØ×!Ñ! "×"3Ñ"3Ö4Ø×Ñ˜°yÐ)AÔBà×,Ñ,Ó.Ñ.ˆØ�‰˜Ÿ™ hÓ/Ô0à�‰Žùs   ‚BDÂBDc              #  ó  "  € V P                  4       pVP                  RV P                  4       34      x €pV P                  W!4       VP	                  R4      x € VP                  R4      x €pV P                  VR4       VP                  R4      x €p\        P                  ! VP                  R4      4      p\        VR,          4      pVP                  V4      x €pV P                  VR4       VP                  4        R	# 5i)
z3Basic test of IOStream's ability to return Futures.rt   ru   ó   
s   HTTP/1.1 200 OK
ó   

Úlatin1zContent-Lengthrv   N)rI   rw   rX   ÚassertIsr6   Ú
read_untilr�   r   ÚparseÚdecoderS   r€   rh   )r8   r{   Úconnect_resultÚ
first_lineÚheader_datari   Úcontent_lengthÚbodys   &       r0   Útest_future_interfaceÚ*TestIOStreamWebMixin.test_future_interface�   sÞ   é € ð ×+Ñ+Ó-ˆØ%Ÿ~™~¨{¸D×<NÑ<NÓ<PÐ.QÓRÑRˆØ�‰�nÔ-Ø�l‰lÐ4Ó5Ò5Ø!×,Ñ,¨WÓ5Ñ5ˆ
Ø×Ñ˜Ð%;Ô<à"×-Ñ-¨kÓ:Ñ:ˆÜ×#Ò# K×$6Ñ$6°xÓ$@ÓAˆÜ˜WÐ%5Õ6Ó7ˆØ×&Ñ& ~Ó6Ñ6ˆØ×Ñ˜˜xÔ(Ø�‰Žùs   ‚C>D c              #  óR  "  € V P                  4       pVP                  R V P                  4       34      x € VP                  R4      x € V P	                  \
        4      ;_uu_ 4        VP                  R4      x € RRR4       VP                  4        R#   + '       g   i     L"; i5i)rt   ru   Né   )rI   rw   rX   r6   ÚassertRaisesr
   r€   rh   ©r8   r{   s   & r0   Útest_future_close_while_readingÚ4TestIOStreamWebMixin.test_future_close_while_reading®   sy   é € à×+Ñ+Ó-ˆØ�n‰n˜k¨4×+=Ñ+=Ó+?Ð@ÓAÒAØ�l‰lÐ4Ó5Ò5Ø×ÑÔ0×1Õ1Ø×#Ñ# KÓ0Ò0÷ 2à�‰Ž÷ 2×1üs   ‚A$B'Á&BÁ:B'ÂB$	ÂB'c              #  óž  "  € V P                  4       pVP                  R V P                  4       34      x € VP                  R4      x € VP	                  R4      x € VP                  4       x €pV P                  VR4       V P                  \        4      ;_uu_ 4        VP                  ^4       RRR4       R#   + '       g   i     R# ; i5i)rt   r…   r”   rv   N)
rI   rw   rX   r6   r—   rx   r�   r£   r
   r€   )r8   r{   rž   s   &  r0   Útest_future_read_until_closeÚ1TestIOStreamWebMixin.test_future_read_until_close·   s¤   é € ð ×+Ñ+Ó-ˆØ�n‰n˜k¨4×+=Ñ+=Ó+?Ð@ÓAÒAØ�l‰lÐIÓJÒJØ×Ñ Ó,Ò,Ø×,Ñ,Ó.Ñ.ˆØ×Ñ˜˜xÔ(ð ×ÑÔ0×1Õ1Ø×Ñ˜aÔ ÷ 2×1×1Ò1üs   ‚BCÂB9Â/
CÂ9C
	Ã	C)r{   N)F)r;   r<   r=   r>   rI   rN   rX   rb   rq   r   r}   r‚   r�   rŸ   r¥   r¨   r?   r@   rA   s   @r0   rD   rD   <   s    ø‡ € ò$ò2÷$ð $÷$ò $òð& ñ1ó ð1ð ñó ðð& ñó ðð* ñó ðð  ñó ðð ñ!ó ö!r/   rD   c                   ó¬  a € ] tR t^Çt o R tR t]R 4       t]R 4       t]R 4       t	]R 4       t
]R 4       t]R 4       t]R	 4       t]R
 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       tRtV t R# )ÚTestReadWriteMixinc                ó   € \         hrF   rG   )r8   r\   s   &,r0   Úmake_iostream_pairÚ%TestReadWriteMixin.make_iostream_pairÌ   s   € Ü!Ð!r/   c                ó&   €  ! R R4      pV! W4      # )zzLike make_iostream_pair, but called by ``async with``.

In py37 this becomes simpler with contextlib.asynccontextmanager.
c                   ó2   a € ] tR t^Õt o R tR tR tRtV tR# )Ú=TestReadWriteMixin.iostream_pair.<locals>.IOStreamPairContextc                ó   € Wn         W n        R # rF   )Útestr\   )r8   r³   r\   s   &&&r0   Ú__init__ÚFTestReadWriteMixin.iostream_pair.<locals>.IOStreamPairContext.__init__Ö   s   € Ø ”	Ø$–r/   c              “  óŒ   "  € V P                   P                  ! R/ V P                  B G R j  x€L
 V n        V P                  #  L5i)Nr.   )r³   r­   r\   Úpairr7   s   &r0   Ú
__aenter__ÚHTestReadWriteMixin.iostream_pair.<locals>.IOStreamPairContext.__aenter__Ú   s5   é € Ø"&§)¡)×">Ò">Ñ"MÀÇÁÑ"M×M�”	Ø—y‘yÐ ñ Nùs   ‚*A¬A­Ac              “  óT   "  € V P                    F  pVP                  4        K  	  R # 5irF   )r·   rh   )r8   ÚtypÚvalueÚtbÚss   &&&& r0   Ú	__aexit__ÚGTestReadWriteMixin.iostream_pair.<locals>.IOStreamPairContext.__aexit__Þ   s   é € ØŸœ�AØ—G‘G–Ió #ùs   ‚&()r\   r·   r³   N)	r;   r<   r=   r>   r´   r¸   r¿   r?   r@   rA   s   @r0   ÚIOStreamPairContextr±   Õ   s   ø‡ € ò%ò!÷ð r/   rÁ   r.   )r8   r\   rÁ   s   &, r0   Úiostream_pairÚ TestReadWriteMixin.iostream_pairÏ   s   € ÷	ñ 	ñ # 4Ó0Ð0r/   c              #  óœ   "  € V P                  4       x €w  rVP                  R 4      x € VP                  4        VP                  4        R# 5i)r/   N)r­   r6   rh   )r8   ÚrsÚwss   &  r0   Útest_write_zero_bytesÚ(TestReadWriteMixin.test_write_zero_bytesä   s:   é € ð ×.Ñ.Ó0Ñ0‰ˆØ�h‰h�s‹mÒØ
�‰Œ
Ø
�‰Ž
ùs   ‚A
Ac              #  ó¸  "  € V P                  4       x €w  r VP                  R 4       . pVP                  VP                  ^4      x €4       VP	                  4        VP                  VP                  ^4      x €4       V P                  VRR.4       VP	                  4        VP	                  4        R#   TP	                  4        TP	                  4        i ; i5i)ó   12ó   1ó   2N)r­   r6   rŠ   r€   rh   r�   )r8   rÅ   rÆ   Úchunkss   &   r0   Ú"test_future_delayed_close_callbackÚ5TestReadWriteMixin.test_future_delayed_close_callbackí   s£   é € ð ×.Ñ.Ó0Ñ0‰ˆð		Ø�H‰H�UŒOØˆFØ�M‰M §¡¨qÓ!1Ñ1Ô3Ø�H‰HŒJØ�M‰M §¡¨qÓ!1Ñ1Ô3Ø×Ñ˜V d¨D \Ô2à�H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚C˜A;B5 Â"CÂ5"CÃCc              #  óÌ  "  € V P                  R R7      x €w  r VP                  R4       VP                  R 4      x €pV P                  RV4       VP	                  4        \
        P                  ! R4      x € VP                  R 4      x €pV P                  RV4       VP	                  4        VP	                  4        R#   TP	                  4        TP	                  4        i ; i5i)é   )Úread_chunk_sizeg{®Gáz„?Ns   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)r­   r6   r€   r�   rh   r   Úsleep©r8   rÅ   rÆ   r|   s   &   r0   Útest_close_buffered_dataÚ+TestReadWriteMixin.test_close_buffered_dataý   s²   é € ð ×.Ñ.¸sÐ.ÓCÑC‰ˆð	Ø�H‰H�ZÔ ØŸ™ sÓ+Ñ+ˆDØ×Ñ˜Z¨Ô.Ø�H‰HŒJô —)’)˜D“/Ò!ØŸ™ sÓ+Ñ+ˆDØ×Ñ˜Z¨Ô.à�H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚C$šBB? Â"C$Â?"C!Ã!C$c              #  ó–  "  € V P                  4       x €w  r VP                  R 4       VP                  ^4      x €pVP                  4        V P	                  VR4       VP                  4       x €pV P	                  VR4       VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i5i)s   1234rË   s   234N)r­   r6   r€   rh   r�   rx   rÔ   s   &   r0   Ú!test_read_until_close_after_closeÚ4TestReadWriteMixin.test_read_until_close_after_close  sŸ   é € ð ×.Ñ.Ó0Ñ0‰ˆð	Ø�H‰H�WÔð Ÿ™ qÓ)Ñ)ˆDØ�H‰HŒJØ×Ñ˜T 4Ô(Ø×,Ñ,Ó.Ñ.ˆDØ×Ñ˜T 6Ô*à�H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚C	˜A*B$ Â"C	Â$"CÃC	c              #  ó2  "  € V P                  4       x €w  r \        V\        4      '       d1   \        P                  ! 4       R 8X  d   \
        P                  ! R4      hRp\        V4       F  pVP                  R4       K  	  VP                  R4       VP                  R4      x €pV P                  \        V4      VR,          ^,           4       VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i5i)ÚPyPyz$pypy gc causes problems with opensslé   é   r“   Ns   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)r­   Ú
isinstancer   rl   Úpython_implementationÚunittestÚSkipTestÚranger6   r—   r�   Úlenrh   )r8   rÅ   rÆ   ÚNUM_KBÚir|   s   &     r0   Útest_large_read_untilÚ(TestReadWriteMixin.test_large_read_until*  sÑ   é € ð
 ×.Ñ.Ó0Ñ0‰ˆð	ô
 ˜2œ{×+Ò+Ü×2Ò2Ó4¸Ô>ä×'Ò'Ð(NÓOÐOØˆFÜ˜6–]�Ø—‘˜Ö%ñ #à�H‰H�WÔØŸ™ wÓ/Ñ/ˆDØ×ÑœS ›Y¨°­¸Õ(9Ô:à�H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚D˜B8C2 Ã"DÃ2"DÄDc              ƒ  óÐ  "  € V P                  4       ;_uu_4       GR j  x€L
 w  r\        P                  ! VP                  R4      4      p\        P                  ! R4      G R j  x€L
  VP                  R4      G R j  x€L
  VP                  R4       VP                  4        VG R j  x€L
  R R R 4      GR j  x€L
  R #  LŸ L\ LE L L  + GR j  x€L 
 '       g   i     R # ; i5i)Nó   doneçš™™™™™¹?ó   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)rÂ   ÚasyncioÚensure_futurer—   rÓ   r6   rh   ©r8   rÅ   rÆ   Úrfs   &   r0   Ú.test_read_until_with_close_after_second_packetÚATestReadWriteMixin.test_read_until_with_close_after_second_packetC  sž   é € ð ×%Ñ%×'×'Ô'©8¨BÜ×&Ò& r§}¡}°WÓ'=Ó>ˆBô —-’- Ó$×$Ð$Ø—(‘(˜;Ó'×'Ð'Ø�H‰H�WÔØ�H‰HŒJØ�HˆH÷ (×'Ó'ñ
 %Ù'ñ ÷ (×'×'Ó'üs�   ‚C&ŸB? C&£AC	Á$CÁ%C	Á=CÁ>*C	Â(CÂ)C	Â-C&Â8CÂ9C&ÃC	ÃC	ÃC	ÃC&Ã	C#	ÃCÃ
C#	ÃC#	Ã	C&c           	   ƒ  ó  "  € V P                  4       ;_uu_4       GR j  x€L
 w  r\        P                  ! VP                  R4      4      pVP	                  R4      G R j  x€L
  VP	                  R4       VP                  4        V P                  \        4      ;_uu_ 4        VG R j  x€L
  R R R 4       R R R 4      GR j  x€L
  R #  L§ Li L"  + '       g   i     L(; i L  + GR j  x€L 
 '       g   i     R # ; i5i)Nré   s   foorë   )rÂ   rì   rí   r—   r6   rh   r£   r
   rî   s   &   r0   Ú'test_read_until_unsatisfied_after_closeÚ:TestReadWriteMixin.test_read_until_unsatisfied_after_close[  s¥   é € ð ×%Ñ%×'×'Ô'©8¨BÜ×&Ò& r§}¡}°WÓ'=Ó>ˆBØ—(‘(˜;Ó'×'Ð'Ø�H‰H�VÔØ�H‰HŒJØ×"Ñ"Ô#4×5Õ5Ø—�÷ 6÷ (×'Ó'á'ñ ÷ 6×5ú÷ (×'×'Ó'üs‡   ‚C?ŸC C?£<C"ÁC	Á AC"Â"C	Â(CÂ)C	Â-C"Â5C?Ã C ÃC?Ã	C"ÃC	ÃCÃC"Ã C?Ã"C<	Ã(C+Ã)
C<	Ã4C<	Ã6	C?c              #  óà  "  € R pV P                  4       x €w  r#\        4       pVP                  VP                  4        VP	                  V4       VP                  R4      x €pV P                  WQ4       VP                  4        VP                  R4       VP                  4       x € VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i5i)s   OK
r“   N)	r­   r   Úset_close_callbackÚsetr6   r—   r�   rh   Úwait)r8   ÚOKrÅ   rÆ   ÚeventÚress   &     r0   Ú%test_close_callback_with_pending_readÚ8TestReadWriteMixin.test_close_callback_with_pending_readi  s±   é € ð
 ˆØ×.Ñ.Ó0Ñ0‰ˆÜ“ˆØ
×Ñ˜eŸi™iÔ(ð	Ø�H‰H�RŒLØŸ™ gÓ.Ñ.ˆCØ×Ñ˜SÔ%à�H‰HŒJØ�M‰M˜'Ô"ð —*‘*“,Òà�H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚<C.¿A(C	 Â'"C.Ã	"C+Ã+C.c              #  ó   aa"  € V P                  4       x €w  rR .o\        4       oVV3R lpVP                  V4        VP                  R4       VP	                  ^4      x €pV P                  VR4       V P                  S^ ,          4       VP                  4        SP                  4       x € V P                  S^ ,          4       VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i5i)Fc                  ó2   <€ R S ^ &   SP                  4        R# )TN)Únotify)ÚclosedÚconds   €€r0   Úclose_callbackÚETestReadWriteMixin.test_future_close_callback.<locals>.close_callback‰  s   ø€ ØˆF�1‰IØ�K‰KŽMr/   ó   aN)
r­   r   rö   r6   r€   r�   r†   rh   rø   ry   )r8   rÅ   rÆ   r  rû   r  r  s   &    @@r0   Útest_future_close_callbackÚ-TestReadWriteMixin.test_future_close_callback�  sÍ   ùé € ð ×.Ñ.Ó0Ñ0‰ˆØ�ˆÜ‹{ˆö	ð 	×Ñ˜nÔ-ð
	Ø�H‰H�TŒNØŸ™ aÓ(Ñ(ˆCØ×Ñ˜S $Ô'Ø×Ñ˜V A�YÔ'Ø�H‰HŒJØ—)‘)“+ÒØ�O‰O˜F 1�IÔ&à�H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   „:D¿BC) Ã"DÃ)"DÄDc              #  óD  "  € V P                  4       x €w  r VP                  ^4      pVP                  \        R4      4       Vx €pV P	                  VR4       VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i5i)é   ó   hellos   hellN)r­   r€   r6   Ú
memoryviewr�   rh   ©r8   rÅ   rÆ   Úfutr|   s   &    r0   Útest_write_memoryviewÚ(TestReadWriteMixin.test_write_memoryviewš  sz   é € à×.Ñ.Ó0Ñ0‰ˆð	Ø—-‘- Ó"ˆCØ�H‰H”Z Ó)Ô*Ø‘9ˆDØ×Ñ˜T 7Ô+à�H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚B ˜AA; Á"B Á;"BÂB c              #  óø  "  € V P                  4       x €w  r VP                  ^2RR7      pVP                  R4       Vx €pV P                  VR4       VP                  ^RR7      pVP                  R4       Vx €pV P                  VR4       VP                  ^ RR7      x €pV P                  VR4       VP	                  4        VP	                  4        R#   TP	                  4        TP	                  4        i ; i5i)é2   T©Úpartialr
  s   worldó   worr/   N)r­   r€   r6   r�   rh   r  s   &    r0   Útest_read_bytes_partialÚ*TestReadWriteMixin.test_read_bytes_partial¦  s×   é € à×.Ñ.Ó0Ñ0‰ˆð	à—-‘- ¨D�-Ó1ˆCØ�H‰H�XÔØ‘9ˆDØ×Ñ˜T 8Ô,ð —-‘- ¨4�-Ó0ˆCØ�H‰H�XÔØ‘9ˆDØ×Ñ˜T 6Ô*ð Ÿ™ q°$˜Ó7Ñ7ˆDØ×Ñ˜T 3Ô'à�H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚C:˜BC Â3"C:Ã"C7Ã7C:c              #  óè  "  € V P                  4       x €w  r\        4       pVP                  VP                  4        VP	                  R ^2R7      pVP                  R4       Vx €pV P                  VR4       VP	                  R ^R7      pVP                  R4       Vx €pV P                  VR4       \        \        R\        P                  R7      ;_uu_ 4        VP	                  R ^R7      pVP                  R4       VP                  4       x € RRR4       VP                  4        VP                  4        R#   + '       g   i     L2; i  TP                  4        TP                  4        i ; i5i©ó   def©Ú	max_bytesó   abcdefúUnsatisfiable read©Úleveló   123456N)r­   r   rö   r÷   r—   r6   r�   r   r   ÚloggingÚINFOrø   rh   ©r8   rÅ   rÆ   r  r  r|   s   &     r0   Útest_read_until_max_bytesÚ,TestReadWriteMixin.test_read_until_max_bytes¿  s  é € à×.Ñ.Ó0Ñ0‰ˆÜ“ˆØ
×Ñ˜fŸj™jÔ)ð	à—-‘- °"�-Ó5ˆCØ�H‰H�YÔØ‘9ˆDØ×Ñ˜T 9Ô-ð —-‘- °!�-Ó4ˆCØ�H‰H�YÔØ‘9ˆDØ×Ñ˜T 9Ô-ô œ7Ð$8ÄÇÁ×MÖMØ—m‘m F°a�mÓ8�Ø—‘˜Ô#Ø—k‘k“mÒ#÷ Nð
 �H‰HŒJØ�H‰HŽJ÷ N×Mûð
 �H‰HŒJØ�H‰H�Jüó5   ‚:E2½BE Ã7D:ÄE Ä"E2Ä:E
	ÅE Å"E/Å/E2c           	   #  óv  "  € V P                  4       x €w  r\        4       pVP                  VP                  4        VP	                  R 4       \        \        R\        P                  R7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        VP                  R^R7      x € RRR4       RRR4       VP                  4       x € VP                  4        VP                  4        R#   + '       g   i     LL; i  + '       g   i     LW; i  TP                  4        TP                  4        i ; i5i©r   r  r  r  r  N)r­   r   rö   r÷   r6   r   r   r!  r"  r£   r
   r—   rø   rh   ©r8   rÅ   rÆ   r  s   &   r0   Ú test_read_until_max_bytes_inlineÚ3TestReadWriteMixin.test_read_until_max_bytes_inlineÛ  sÏ   é € à×.Ñ.Ó0Ñ0‰ˆÜ“ˆØ
×Ñ˜fŸj™jÔ)ð	ð
 �H‰H�YÔÜœ7Ð$8ÄÇÁ×MÖMØ×&Ñ&Ô'8×9Õ9ØŸ-™-¨¸!˜-Ó<Ò<÷ :÷ Nð —+‘+“-Òà�H‰HŒJØ�H‰HŽJ÷ :×9ú÷ N×Mûð
 �H‰HŒJØ�H‰H�JüsL   ‚:D9½9D Á6DÂC.	Â*DÂ2D Ã"D9Ã.C>Ã9DÄD	ÄD Ä"D6Ä6D9c              #  ó   "  € V P                  4       x €w  r\        4       pVP                  VP                  4        VP	                  R 4       \        \        R\        P                  R7      ;_uu_ 4        VP                  R^R7       VP                  4       x € RRR4       VP                  4        VP                  4        R#   + '       g   i     L2; i  TP                  4        TP                  4        i ; i5i©r  r  r  r  r  N)r­   r   rö   r÷   r6   r   r   r!  r"  r—   rø   rh   r)  s   &   r0   Ú'test_read_until_max_bytes_ignores_extraÚ:TestReadWriteMixin.test_read_until_max_bytes_ignores_extraî  s¬   é € à×.Ñ.Ó0Ñ0‰ˆÜ“ˆØ
×Ñ˜fŸj™jÔ)ð
	ð �H‰H�YÔÜœ7Ð$8ÄÇÁ×MÖMØ—‘˜f°�Ô2Ø—k‘k“mÒ#÷ Nð �H‰HŒJØ�H‰HŽJ÷ N×Mûð �H‰HŒJØ�H‰H�Jüó4   ‚:C>½9C Á6&CÂC Â$"C>ÃC	ÃC Ã"C;Ã;C>c              #  óè  "  € V P                  4       x €w  r\        4       pVP                  VP                  4        VP	                  R ^2R7      pVP                  R4       Vx €pV P                  VR4       VP	                  R ^R7      pVP                  R4       Vx €pV P                  VR4       \        \        R\        P                  R7      ;_uu_ 4        VP	                  R ^R7       VP                  R4       VP                  4       x € RRR4       VP                  4        VP                  4        R#   + '       g   i     L2; i  TP                  4        TP                  4        i ; i5ir  )r­   r   rö   r÷   Úread_until_regexr6   r�   r   r   r!  r"  rø   rh   r#  s   &     r0   Útest_read_until_regex_max_bytesÚ2TestReadWriteMixin.test_read_until_regex_max_bytesÿ  s!  é € à×.Ñ.Ó0Ñ0‰ˆÜ“ˆØ
×Ñ˜fŸj™jÔ)ð	à×%Ñ% f¸Ð%Ó;ˆCØ�H‰H�YÔØ‘9ˆDØ×Ñ˜T 9Ô-ð ×%Ñ% f¸Ð%Ó:ˆCØ�H‰H�YÔØ‘9ˆDØ×Ñ˜T 9Ô-ô œ7Ð$8ÄÇÁ×MÖMØ×#Ñ# F°aÐ#Ô8Ø—‘˜Ô#Ø—k‘k“mÒ#÷ Nð
 �H‰HŒJØ�H‰HŽJ÷ N×Mûð
 �H‰HŒJØ�H‰H�Jür&  c              #  ó   "  € V P                  4       x €w  r\        4       pVP                  VP                  4        VP	                  R 4       \        \        R\        P                  R7      ;_uu_ 4        VP                  R^R7       VP                  4       x € RRR4       VP                  4        VP                  4        R#   + '       g   i     L2; i  TP                  4        TP                  4        i ; i5ir(  ©r­   r   rö   r÷   r6   r   r   r!  r"  r2  rø   rh   r)  s   &   r0   Ú&test_read_until_regex_max_bytes_inlineÚ9TestReadWriteMixin.test_read_until_regex_max_bytes_inline  s¯   é € à×.Ñ.Ó0Ñ0‰ˆÜ“ˆØ
×Ñ˜fŸj™jÔ)ð	ð
 �H‰H�YÔÜœ7Ð$8ÄÇÁ×MÖMØ×#Ñ# F°aÐ#Ô8Ø—k‘k“mÒ#÷ Nð �H‰HŒJØ�H‰HŽJ÷ N×Mûð �H‰HŒJØ�H‰H�Jür0  c              #  ó   "  € V P                  4       x €w  r\        4       pVP                  VP                  4        VP	                  R 4       \        \        R\        P                  R7      ;_uu_ 4        VP                  R^R7       VP                  4       x € RRR4       VP                  4        VP                  4        R#   + '       g   i     L2; i  TP                  4        TP                  4        i ; i5ir-  r6  r)  s   &   r0   Ú-test_read_until_regex_max_bytes_ignores_extraÚ@TestReadWriteMixin.test_read_until_regex_max_bytes_ignores_extra-  s¯   é € à×.Ñ.Ó0Ñ0‰ˆÜ“ˆØ
×Ñ˜fŸj™jÔ)ð
	ð �H‰H�YÔÜœ7Ð$8ÄÇÁ×MÖMØ×#Ñ# F°aÐ#Ô8Ø—k‘k“mÒ#÷ Nð �H‰HŒJØ�H‰HŽJ÷ N×Mûð �H‰HŒJØ�H‰H�Jür0  c              #  ód  "  € V P                  RR7      x €w  r VP                  R^d,          4       \        ^d4       F(  pVP                  R4      x €pV P	                  VR4       K*  	  VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i5i)é
   rÝ   ©Úmax_buffer_sizeNé (  s   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)r­   r6   râ   r€   r�   rh   ©r8   rÅ   rÆ   rå   r|   s   &    r0   Ú"test_small_reads_from_large_bufferÚ5TestReadWriteMixin.test_small_reads_from_large_buffer>  s�   é € ð
 ×.Ñ.¸yÐ.ÓIÑI‰ˆð	Ø�H‰H�[ 3Õ&Ô'Ü˜3–Z�ØŸ]™]¨4Ó0Ñ0�Ø× Ñ   {Ö3ñ  ð �H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚B0šAB Á)"B0Â"B-Â-B0c              #  óh  "  € V P                  RR7      x €w  r VP                  R^d,          4       \        ^d4       F*  pVP                  RRR7      x €pV P	                  VR4       K,  	  VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i5i)r=  r>  ó   
rÜ   r  Nr@  s   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
)r­   r6   râ   r—   r�   rh   rA  s   &    r0   Ú(test_small_read_untils_from_large_bufferÚ;TestReadWriteMixin.test_small_read_untils_from_large_bufferM  s“   é € ð
 ×.Ñ.¸yÐ.ÓIÑI‰ˆð	Ø�H‰HÐ)¨SÕ0Ô1Ü˜3–Z�ØŸ]™]¨5¸D˜]ÓAÑA�Ø× Ñ  Ð':Ö;ñ  ð �H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚B2šAB Á+"B2Â"B/Â/B2c              #  ó¨  "  € RpV P                  ^V,          R7      x €w  r# VP                  RV,          4       VP                  V4      x € \        P                  ! R4      x € \        ^	4       F  pVP                  V4      x € K  	  VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i5i)rÝ   r>  rê   Nr¢   s
   aaaaaaaaaa)r­   r6   r€   r   rÓ   râ   rh   )r8   ÚMBrÅ   rÆ   rå   s   &    r0   Útest_flow_controlÚ$TestReadWriteMixin.test_flow_control\  s    é € àˆØ×.Ñ.¸qÀ2½vÐ.ÓFÑF‰ˆð	à�H‰H�Y •^Ô$à—-‘- Ó#Ò#Ü—)’)˜C“.Ò ô ˜1–X�Ø—m‘m BÓ'Ô'ñ ð �H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚ C£A(B- Â"CÂ-"CÃCc              #  ó®  a "  € S P                  4       x €w  rV 3R  lp \        ^
4      pVP                  V4      pVP                  R4       \        P
                  ! R4      x € S P                  VP                  4       4       VP                  R4       Vx €pS P                  VP                  4       4       S P                  V^
4       S P                  \        V4      R4       VP                  V4      p\        P
                  ! R4      x € S P                  VP                  4       4       VP                  R4       Vx €pS P                  VP                  4       4       S P                  V^
4       S P                  \        V4      R4       \        ^4      pVP                  R4       VP                  V4      x €pS P                  V^4       S P                  \        V4      R4       VP                  ^4      x €pS P                  VR	4       VP                  4        VP                  4        R
#   TP                  4        TP                  4        i ; i5i)c                  ó@   <€ S P                   P                  R  4       R# )c                  ó.   € \         P                  ! R 4      # )çš™™™™™©?)r   rÓ   r.   r/   r0   Ú<lambda>ÚGTestReadWriteMixin.test_read_into.<locals>.sleep_some.<locals>.<lambda>s  s   € ¬#¯)ª)°D¬/r/   N)Úio_loopÚrun_syncr7   s   €r0   Ú
sleep_someÚ5TestReadWriteMixin.test_read_into.<locals>.sleep_somer  s   ø€ Ø�L‰L×!Ñ!Ñ"9Ö:r/   r
  rO  s   world!!s
   helloworlds
   1234567890s
   !!12345678s	   abcdefghis   90abs   cdefghiN)r­   Ú	bytearrayÚ	read_intor6   r   rÓ   ry   Úreadingr†   r�   Úbytesr€   rh   )r8   rÅ   rÆ   rT  Úbufr  r|   s   f      r0   Útest_read_intoÚ!TestReadWriteMixin.test_read_inton  sÀ  øé € à×.Ñ.Ó0Ñ0‰ˆõ	;ð!	Ü˜B“-ˆCØ—,‘,˜sÓ#ˆCØ�H‰H�XÔÜ—)’)˜D“/Ò!Ø�O‰O˜BŸJ™J›LÔ)Ø�H‰H�ZÔ Ø‘9ˆDØ×Ñ˜RŸZ™Z›\Ô*Ø×Ñ˜T 2Ô&Ø×ÑœU 3›Z¨Ô7ð —,‘,˜sÓ#ˆCÜ—)’)˜D“/Ò!Ø�O‰O˜BŸJ™J›LÔ)Ø�H‰H�]Ô#Ø‘9ˆDØ×Ñ˜RŸZ™Z›\Ô*Ø×Ñ˜T 2Ô&Ø×ÑœU 3›Z¨Ô7ô ˜A“,ˆCØ�H‰H�\Ô"ØŸ™ cÓ*Ñ*ˆDØ×Ñ˜T 1Ô%Ø×ÑœU 3›Z¨Ô1àŸ™ qÓ)Ñ)ˆDØ×Ñ˜T :Ô.à�H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ƒIŸG/H0 È"IÈ0"IÉIc              #  óê  "  € V P                  4       x €w  r \        ^
4      pVP                  VRR7      pVP                  R4       Vx €pV P	                  VP                  4       4       V P                  V^4       V P                  \        V4      R4       VP                  R4       VP                  VRR7      x €pV P                  V^
4       V P                  \        V4      R4       VP                  VRR7      x €pV P                  V^4       V P                  \        V4      R4       VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i5i)	r=  Tr  r
  s
   hello     s   world!1234567890s
   world!1234s
   5678901234N)	r­   rV  rW  r6   r†   rX  r�   rY  rh   )r8   rÅ   rÆ   rZ  r  r|   s   &     r0   Útest_read_into_partialÚ)TestReadWriteMixin.test_read_into_partial˜  s0  é € à×.Ñ.Ó0Ñ0‰ˆð	ä˜B“-ˆCØ—,‘,˜s¨D�,Ó1ˆCØ�H‰H�XÔØ‘9ˆDØ×Ñ˜RŸZ™Z›\Ô*Ø×Ñ˜T 1Ô%Ø×ÑœU 3›ZÐ);Ô<ð �H‰HÐ(Ô)ØŸ™ c°4˜Ó8Ñ8ˆDØ×Ñ˜T 2Ô&Ø×ÑœU 3›Z¨Ô7ð Ÿ™ c°4˜Ó8Ñ8ˆDØ×Ñ˜T 1Ô%Ø×ÑœU 3›Z¨Ô7ð �H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚E3˜DE Ä,"E3Å"E0Å0E3c              #  ó8  "  € V P                  4       x €w  r \        4       pVP                  V4      pV P                  VP	                  4       ^ 4       VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i5i©r   N)r­   rV  rW  r�   Úresultrh   )r8   rÅ   rÆ   rZ  r  s   &    r0   Útest_read_into_zero_bytesÚ,TestReadWriteMixin.test_read_into_zero_bytesµ  so   é € à×.Ñ.Ó0Ñ0‰ˆð	Ü“+ˆCØ—,‘,˜sÓ#ˆCØ×Ñ˜SŸZ™Z›\¨1Ô-à�H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ‚B˜;A5 Á"BÁ5"BÂBc              #  ó0  aaaaaa"  € \         P                  ! ^*4      oRoV P                  4       x €w  oo\        P                  ! 4       o\        P                  ! 4       o\
        P                  VVVV3R l4       p\
        P                  VVVV3R l4       p V! 4       V! 4       .x € SP                  4       SP                  4       8X  g   Q h SP                  4        SP                  4        R#   SP                  4        SP                  4        i ; i5i)é*   i@B c               3   óô   <"  € Sp V ^ 8”  da   SP                  ^\        RV 4      4      p\        P                  ! V4      pSP	                  V4       SP                  V4      x € W,          p Kg  V ^ 8X  g   Q hR# 5i)r   éè  N)ÚrandintÚminr)   ÚurandomÚupdater6   )Ú	remainingÚsizer|   ÚnbytesÚproduce_hashÚrrÆ   s      €€€€r0   ÚproduceÚ9TestReadWriteMixin.test_many_mixed_reads.<locals>.produceÌ  sg   øé € àˆIØ˜a”-Ø—y‘y ¤C¨¨iÓ$8Ó9�Ü—z’z $Ó'�Ø×#Ñ# DÔ)Ø—h‘h˜t“nÒ$ØÕ!’	Ø ”>Ð!’>ùs   ƒA5A8c               3   ó¬  <"  € Sp V ^ 8”  d½   SP                  4       R8”  dK   SP                  ^\        RV 4      4      pSP                  V4      x €pSP	                  V4       W,          p Kf  SP                  ^\        RV 4      4      p\        V4      pSP                  V4      x €pWA8X  g   Q hSP	                  V4       W,          p KÃ  V ^ 8X  g   Q hR# 5i)r   g      à?rh  N)Úrandomri  rj  r€   rl  rV  rW  )	rm  rn  r|   rZ  ÚnÚconsume_hashro  rq  rÅ   s	        €€€€r0   ÚconsumeÚ9TestReadWriteMixin.test_many_mixed_reads.<locals>.consume×  s½   øé € àˆIØ˜a”-Ø—8‘8“: Ô#àŸ9™9 Q¬¨D°)Ó(<Ó=�DØ!#§¡¨tÓ!4Ñ4�DØ ×'Ñ'¨Ô-ØÕ%’Ið Ÿ9™9 Q¬¨D°)Ó(<Ó=�DÜ# D›/�CØ Ÿl™l¨3Ó/Ñ/�AØœ9Ð$˜9Ø ×'Ñ'¨Ô,ØÕ%’IØ ”>Ð!’>ùs   ƒCCN)	ru  ÚRandomr­   ÚhashlibÚsha1r   Ú	coroutineÚ	hexdigestrh   )	r8   rr  rx  rw  ro  rp  rq  rÅ   rÆ   s	   &  @@@@@@r0   Útest_many_mixed_readsÚ(TestReadWriteMixin.test_many_mixed_readsÀ  sÏ   ýé € ô
 �MŠM˜"ÓˆØˆØ×.Ñ.Ó0Ñ0‰ˆˆBä—|’|“~ˆÜ—|’|“~ˆä	�‰÷	"ó 
ð	"ô 
�‰÷	"ó 
ð	"ð&	Ù“9™g›iÐ(Ò(Ø×)Ñ)Ó+¨|×/EÑ/EÓ/GÔGÐGÑGà�H‰HŒJØ�H‰HŽJøð �H‰HŒJØ�H‰H�Jüs   ˆBDÂ5C1 Ã"DÃ1"DÄDr.   N)!r;   r<   r=   r>   r­   rÂ   r   rÇ   rÎ   rÕ   rØ   ræ   rð   ró   rü   r  r  r  r$  r*  r.  r3  r7  r:  rB  rF  rJ  r[  r^  rc  r  r?   r@   rA   s   @r0   r«   r«   Ç   sð  ø‡ € ò
"ò1ð* ñó ðð ñó ðð ñó ðð2 ñó ðð$ ñó ðð0 ñó ðð. ñó ðð ñó ðð. ñó ðð0 ñ	ó ð	ð ñó ðð0 ñó ðð6 ñó ðð$ ñó ðð  ñó ðð6 ñó ðð" ñó ðð  ñó ðð ñó ðð ñó ðð" ñ'ó ð'ðR ñó ðð8 ñó ðð ñ/ó ö/r/   r«   c                   óº   a € ] tR tRt o R tR t]P                  R 4       t]	R 4       t
]	R 4       t]	R 4       t]]	R 4       4       t]	R	 4       t]	R
 4       tRtV tR# )ÚTestIOStreamMixinió  c                ó   € \        4       hrF   rG   ©r8   Ú
connectionr\   s   &&,r0   Ú_make_server_iostreamÚ'TestIOStreamMixin._make_server_iostreamõ  rK   r/   c                ó   € \        4       hrF   rG   r„  s   &&,r0   rI   Ú'TestIOStreamMixin._make_client_iostreamø  rK   r/   c              +  óš  a aa"  € \        4       w  r#\        4       oVV V3R  lp\        P                  ! W$4       S P                  ! \
        P
                  ! 4       3/ SB pVP                  RV34      pSV.x €w  ruS P                  P                  VP                  4       4       VP                  4        \        P                  ! Wu34      h5i)c                 óL   <€ SP                  SP                  ! V 3/ SB 4       R # rF   )Ú
set_resultr†  )r…  Úaddressr\   r8   Úserver_stream_futs   &&€€€r0   Úaccept_callbackÚ=TestIOStreamMixin.make_iostream_pair.<locals>.accept_callback   s$   ø€ Ø×(Ñ(Ø×*Ò*¨:Ñ@¸Ñ@ör/   rt   )r   r   r   Úadd_accept_handlerrI   Úsocketrw   rR  Úremove_handlerÚfilenorh   r   ÚReturn)	r8   r\   ÚlistenerÚportr�  Úclient_streamrŒ   Úserver_streamrŽ  s	   fl      @r0   r­   Ú$TestIOStreamMixin.make_iostream_pairû  s¢   úé € ä)Ó+‰ˆÜ"›HÐ÷	ô
 	×"Ò" 8Ô=Ø×2Ò2´6·=²=³?ÑMÀfÑMˆØ#×+Ñ+¨[¸$Ð,?Ó@ˆØ.?ÀÐ-MÑ'MÑ$ˆØ�‰×#Ñ# H§O¡OÓ$5Ô6Ø�‰ÔÜ�jŠj˜-Ð7Ó8Ð8ùs   …CCc           	   #  ó*  "  € \        4       w  rV P                  V4       \        \        P                  ! 4       4      pVP	                  V P
                  4       \        \        R RR7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        VP                  RV34      x € RRR4       RRR4       V P                  \        VP                  \        4      VP                  4       R#   + '       g   i     LN; i  + '       g   i     LY; i5i)z.*F)Úrequiredrt   N)r   Ú
addCleanupr   r’  rö   Ústopr   r   r£   r
   rw   ry   rÞ   ÚerrorÚConnectionRefusedError)r8   Úcleanup_funcr—  r{   s   &   r0   Útest_connection_refusedÚ)TestIOStreamMixin.test_connection_refused  s¯   é € ô
 +›_ÑˆØ�‰˜Ô%Üœ&Ÿ-š-›/Ó*ˆà×!Ñ! $§)¡)Ô,ä”w ¨u×5Ö5Ø×"Ñ"Ô#4×5Õ5Ø—n‘n k°4Ð%8Ó9Ò9÷ 6÷ 6ð 	�‰œ
 6§<¡<Ô1GÓHÈ&Ï,É,ÖW÷ 6×5ú÷ 6×5üs6   ‚A1DÁ3D ÂC-	Â'D Â/>DÃ-C=Ã8D Ä D	ÄDc           	   #  ó€  "  € \         P                   ! \         P                  \         P                  ^ 4      p\        V4      pVP	                  V P
                  4       \        P                  ! R\         P                  ! \        P                  R4      R7      ;_uu_ 4        V P                  \        4      ;_uu_ 4        VP                  R4      x € RRR4       V P                  \        VP                   \         P                  4      4       RRR4       R#   + '       g   i     LM; i  + '       g   i     R# ; i5i)r   zsocket.socket.connectÚboom©Úside_effectN)Ú	localhostéP   )r’  ÚAF_INETÚSOCK_STREAMr   rö   rž  r"   ÚpatchÚgaierrorÚerrnoÚEIOr£   r
   rw   ry   rÞ   rŸ  )r8   r¾   r{   s   &  r0   Útest_gaierrorÚTestIOStreamMixin.test_gaierror  sÉ   é € ô �MŠMœ&Ÿ.™.¬&×*<Ñ*<¸aÓ@ˆÜ˜!“ˆØ×!Ñ! $§)¡)Ô,Ü�ZŠZØ#´·²ÄÇÁÈFÓ1S÷
ö 
ð ×"Ñ"Ô#4×5Õ5Ø—n‘nÐ%6Ó7Ò7÷ 6à�O‰OœJ v§|¡|´V·_±_ÓEÔF÷
ñ 
÷ 6×5ú÷
÷ 
ð 
üs6   ‚BD>Â D*Â>D	Ã;D*Ä
D>ÄD'Ä"D*Ä*D;	Ä5	D>c           	   #  óà  "  € V P                  4       x €w  r \        P                  ! R \        R4      R7      ;_uu_ 4        V P	                  \        R4      ;_uu_ 4        VP                  4        RRR4       RRR4       VP                  4        VP                  4        R#   + '       g   i     L:; i  + '       g   i     LE; i  TP                  4        TP                  4        i ; i5i)z.tornado.iostream.BaseIOStream._try_inline_readr¥  r¦  N)r­   r"   r¬  ÚIOErrorÚassertRaisesRegexrx   rh   )r8   ÚserverÚclients   &  r0   Ú test_read_until_close_with_errorÚ2TestIOStreamMixin.test_read_until_close_with_error/  sŸ   é € à#×6Ñ6Ó8Ñ8‰ˆð		Ü—’Ø@Ü# F›O÷ö ð ×+Ñ+¬G°V×<Õ<Ø×+Ñ+Ô-÷ =÷	ð �L‰LŒNØ�L‰LŽN÷	 =×<ú÷	÷ ûð �L‰LŒNØ�L‰L�NüsL   ‚C.˜)C	 ÁB6Á B#	Á1B6Á9C	 Â"C.Â#B3Â.B6Â6C	ÃC	 Ã	"C+Ã+C.c              #  óR  "  € \         P                  ! 4       p\        VP                  \        4      '       d   V P                  R 4       V P                  4       x €w  r# \        P                  ! VP                  P                  4       4       V P                  \        P                  4      ;_uu_ 4        VP                  ^4       RRR4       VP                  4        VP                  4        R#   + '       g   i     L2; i  TP                  4        TP                  4        i ; i5i)z(AddThreadSelectorEventLoop not supportedN)r   ÚcurrentrÞ   Úselector_loopr   rn   r­   r)   rh   r’  r”  r£   rŸ  r€   )r8   rR  rµ  r¶  s   &   r0   Útest_inline_read_errorÚ(TestIOStreamMixin.test_inline_read_error=  sÅ   é € ô& —.’.Ó"ˆÜØ×!Ñ!Ü&÷
ò 
ð �M‰MÐDÔEØ#×6Ñ6Ó8Ñ8‰ˆð	Ü�HŠH�V—]‘]×)Ñ)Ó+Ô,Ø×"Ñ"¤6§<¡<×0Õ0Ø×!Ñ! !Ô$÷ 1ð �L‰LŒNØ�L‰LŽN÷	 1×0ûð �L‰LŒNØ�L‰L�Nüs7   ‚AD'ÁAD Â3C/ÃD Ã"D'Ã/C?	Ã:D Ä"D$Ä$D'c              #  óú  a"  € V P                  4       x €w  op\        4       pSP                  VP                  4        SP	                  ^4       VP                  R4       V3R lpVSn        \        \        R4      ;_uu_ 4        VP                  4       x € RRR4       SP                  4        VP                  4        R#   + '       g   i     L2; i  SP                  4        TP                  4        i ; i5i)é   r  c                  óš   <€ \         P                  ! S P                  P                  4       4       S P                  P                  S 4       R # rF   )r)   rh   r’  r”  Ú	__class__Úread_from_fd)rµ  s   €r0   Úfake_read_from_fdÚJTestIOStreamMixin.test_async_read_error_logging.<locals>.fake_read_from_fdl  s0   ø€ Ü—’˜Ÿ™×-Ñ-Ó/Ô0Ø× Ñ ×-Ñ-¨fÖ5r/   zerror on readN)r­   r   rö   r÷   r€   r6   rÂ  r   r   rø   rh   )r8   r¶  r  rÃ  rµ  s   &   @r0   Útest_async_read_error_loggingÚ/TestIOStreamMixin.test_async_read_error_logging_  s³   øé € ð  $×6Ñ6Ó8Ñ8‰ˆ�Ü“ˆØ×!Ñ! &§*¡*Ô-ð	à×Ñ˜aÔ Ø�L‰L˜Ôõ6ð #4ˆFÔäœ7 O×4Õ4Ø—k‘k“mÒ#÷ 5ð �L‰LŒNØ�L‰LŽN÷	 5×4ûð �L‰LŒNØ�L‰L�Nüs5   ƒ;C;¿AC ÂCÂC Â!"C;ÃC	ÃC Ã"C8Ã8C;c              #  óÒ  aaaaa	"  € RRuoo^
pSS,          V,          o	V P                  S	R7      x €w  oo\        P                  VVV3R l4       p\        P                  VVV	3R l4       p \        V4       Uu. uF	  qB! 4       NK  	  upV! 4       .,           x € SP	                  4        SP	                  4        R# u upi   SP	                  4        SP	                  4        i ; i5i)z/
Test that write() Futures are never orphaned.
iˆ  rh  r>  c               3   ól   <"  € R S,          p \        S4       F  pSP                  V 4      x € K  	  R# 5i)ó   xN)râ   r6   )r|   rå   Úmrv  rµ  s     €€€r0   rr  Ú4TestIOStreamMixin.test_future_write.<locals>.produce„  s,   øé € à˜!•8ˆDÜ˜1–X�Ø—l‘l 4Ó(Ô(ó ùs   ƒ14c               3   óp   <"  € ^ p V S8  d(   SP                  S4      x €pV \        V4      ,          p K.  R# 5ira  )r€   rã   )Únreadrû   r¶  rÊ  Útotal_bytess     €€€r0   rx  Ú4TestIOStreamMixin.test_future_write.<locals>.consumeŠ  s9   øé € àˆEØ˜+Ô%Ø"×-Ñ-¨aÓ0Ñ0�Øœ˜S›Õ!’ñ &ùs   ƒ36N)r­   r   r}  râ   rh   )
r8   Ú
nproducersrr  rx  rå   r¶  rÊ  rv  rµ  rÎ  s
   &    @@@@@r0   Útest_future_writeÚ#TestIOStreamMixin.test_future_writex  sÄ   üé € ð �Tˆˆˆ1Øˆ
Ø˜!•e˜jÕ(ˆØ#×6Ñ6À{Ð6ÓSÑS‰ˆ�ä	�‰ö	)ó 
ð	)ô
 
�‰ö	"ó 
ð	"ð	Ü&+¨JÔ&7Ó8Ñ&7 �7–9Ñ&7Ñ8¹G»I¸;ÕFÒFà�L‰LŒNØ�L‰LŽNùò 9øà�L‰LŒNØ�L‰L�Nüs0   ‡A%C'Á-C Á:B=Â	C Â"C'Â=C Ã"C$Ã$C'r.   N)r;   r<   r=   r>   r†  rI   r   r}  r­   r   r¢  r°  r·  r   r¼  rÅ  rÑ  r?   r@   rA   s   @r0   r‚  r‚  ó  s¬   ø‡ € ò$ò$ð 	‡]�]ñ9ó ð9ð" ñXó ðXð  ñGó ðGð  ñó ðð Øñó ó ðð@ ñó ðð0 ñó ör/   r‚  c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚTestIOStreamWebHTTPi˜  c                ó>   € \        \        P                  ! 4       4      # rF   )r   r’  r7   s   &r0   rI   Ú)TestIOStreamWebHTTP._make_client_iostream™  s   € ÜœŸš›Ó(Ð(r/   c                ó"   € V P                  4       # rF   ©rN   r7   s   &r0   Úget_appÚTestIOStreamWebHTTP.get_appœ  ó   € Ø×!Ñ!Ó#Ð#r/   r.   N©r;   r<   r=   r>   rI   rÙ  r?   r@   rA   s   @r0   rÔ  rÔ  ˜  s   ø‡ € ò)÷$ð $r/   rÔ  c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚTestIOStreamWebHTTPSi   c                ór   € \        \        P                  ! 4       \        \        P                  R 7      R7      # )©Ú	cert_reqs©Ússl_options)r   r’  r(   ÚsslÚ	CERT_NONEr7   s   &r0   rI   Ú*TestIOStreamWebHTTPS._make_client_iostream¡  s   € Üœ6Ÿ=š=›?¼ÄsÇ}Á}Ô8UÔVÐVr/   c                ó"   € V P                  4       # rF   rØ  r7   s   &r0   rÙ  ÚTestIOStreamWebHTTPS.get_app¤  rÛ  r/   r.   NrÜ  rA   s   @r0   rÞ  rÞ     s   ø‡ € òW÷$ð $r/   rÞ  c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚTestIOStreami¨  c                ó   € \        V3/ VB # rF   ©r   r„  s   &&,r0   r†  Ú"TestIOStream._make_server_iostream©  ó   € Ü˜
Ñ- fÑ-Ð-r/   c                ó   € \        V3/ VB # rF   rì  r„  s   &&,r0   rI   Ú"TestIOStream._make_client_iostream¬  rî  r/   r.   N©r;   r<   r=   r>   r†  rI   r?   r@   rA   s   @r0   rê  rê  ¨  s   ø‡ € ò.÷.ð .r/   rê  c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚTestIOStreamSSLi°  c                ól   € \        \        4       R R7      pVP                  VR RR7      p\        V3/ VB # )T)Úserver_sideF©rõ  Údo_handshake_on_connect)r   r1   Úwrap_socketr   )r8   r…  r\   Ússl_ctxs   &&, r0   r†  Ú%TestIOStreamSSL._make_server_iostream±  sB   € Ü(Ô)<Ó)>ÈDÔQˆØ×(Ñ(ØØØ$)ð )ó 
ˆ
ô
 ˜:Ñ0¨Ñ0Ð0r/   c                óN   € \        V3R \        \        P                  R7      /VB # )rã  rà  )r   r(   rä  rå  r„  s   &&,r0   rI   Ú%TestIOStreamSSL._make_client_iostreamº  s+   € ÜØñ
Ü$(´3·=±=Ô$Að
ØEKñ
ð 	
r/   r.   Nrñ  rA   s   @r0   ró  ró  °  s   ø‡ € ò1÷
ð 
r/   ró  c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚTestIOStreamSSLContextiÃ  c                ó²  € \         P                  ! \         P                  P                  4      pVP	                  \
        P                  P                  \
        P                  P                  \        4      R 4      \
        P                  P                  \
        P                  P                  \        4      R4      4       \        WRRR7      p\        V3/ VB # )r$   r%   TFrö  )rä  Úcreate_default_contextÚPurposeÚCLIENT_AUTHÚload_cert_chainr)   r*   r+   r,   r-   r   r   ©r8   r…  r\   Úcontexts   &&, r0   r†  Ú,TestIOStreamSSLContext._make_server_iostreamÄ  s�   € Ü×,Ò,¬S¯[©[×-DÑ-DÓEˆØ×ÑÜ�G‰G�L‰LœŸ™Ÿ™¬Ó2°JÓ?Ü�G‰G�L‰LœŸ™Ÿ™¬Ó2°JÓ?ô	
ô %Ø¨TÈ5ô
ˆ
ô ˜:Ñ0¨Ñ0Ð0r/   c                ó²   € \         P                  ! \         P                  P                  4      pR Vn        \         P
                  Vn        \        V3RV/VB # )Frã  )rä  r   r  ÚSERVER_AUTHÚcheck_hostnamerå  Úverify_moder   r  s   &&, r0   rI   Ú,TestIOStreamSSLContext._make_client_iostreamÏ  sE   € Ü×,Ò,¬S¯[©[×-DÑ-DÓEˆØ!&ˆÔÜ!Ÿm™mˆÔÜ˜:ÑE°7ÐE¸fÑEÐEr/   r.   Nrñ  rA   s   @r0   rþ  rþ  Ã  s   ø‡ € ò	1÷Fð Fr/   rþ  c                   óà   a a€ ] tR tRt oV 3R ltV 3R ltR t]P                  R 4       t	]P                  R 4       t
RR ltRR lt]R	 4       t]R
 4       t]R 4       t]R 4       tRtVtV ;t# )ÚTestIOStreamStartTLSiÖ  c                ó�  <€  \         SV `  4        \        4       w  V n        V n        R V n        \        4       V n        \        P                  ! V P                  V P                  4       \        \        P                  ! 4       4      V n        V P                  P                  V P                  P!                  RV P                  34      V P"                  4       V P%                  4        V P                  P                  V P                  V P"                  4       V P%                  4        R #   \&         d   p\)        T4       h R p?ii ; i)Nrt   )ÚsuperÚsetUpr   r–  r—  r™  r   Úserver_acceptedr   r‘  Úacceptr   r’  r˜  rR  Ú
add_futurerw   rž  rø   Ú	ExceptionÚprint)r8   ÚerÁ  s   & €r0   r  ÚTestIOStreamStartTLS.setUp×  så   ø€ ð	Ü‰G‰MŒOÜ'7Ó'9Ñ$ˆDŒM˜4œ9Ø!%ˆDÔÜ#)£8ˆDÔ Ü×&Ò& t§}¡}°d·k±kÔBÜ!)Ü—’“ó"ˆDÔð �L‰L×#Ñ#Ø×"Ñ"×*Ñ*¨K¸¿¹Ð+CÓDÀdÇiÁiôð �I‰IŒKØ�L‰L×#Ñ# D×$8Ñ$8¸$¿)¹)ÔDØ�I‰IŽKøÜô 	Ü�!ŒHØûð	ús   ƒD$D) Ä)EÄ4E Å Ec                ó^  <€ V P                   e   V P                   P                  4        V P                  e   V P                  P                  4        V P                  P	                  V P
                  P                  4       4       V P
                  P                  4        \        SV `!  4        R # rF   )	r™  rh   r˜  rR  r“  r–  r”  r  ÚtearDown©r8   rÁ  s   &€r0   r  ÚTestIOStreamStartTLS.tearDownë  sy   ø€ Ø×ÑÒ)Ø×Ñ×$Ñ$Ô&Ø×ÑÒ)Ø×Ñ×$Ñ$Ô&Ø�‰×#Ñ# D§M¡M×$8Ñ$8Ó$:Ô;Ø�‰×ÑÔÜ‰ÑÖr/   c                óš   € V P                   e   V P                  R4       \        V4      V n         V P                  P	                  R 4       R # )Nzshould only get one connection)r™  Úfailr   r  rŒ  )r8   r…  r�  s   &&&r0   r  ÚTestIOStreamStartTLS.acceptô  s<   € Ø×ÑÒ)Ø�I‰IÐ6Ô7Ü% jÓ1ˆÔØ×Ñ×'Ñ'¨Ö-r/   c              #  óà   "  € V P                   f   Q hV P                   P                  V4       V P                  f   Q hV P                  P                  R4      x €pV P	                  W4       R # 5i©Nr“   )r˜  r6   r™  r—   r�   ©r8   ÚlineÚ	recv_lines   && r0   Úclient_send_lineÚ%TestIOStreamStartTLS.client_send_lineú  ód   é € à×!Ñ!Ò-Ð-Ð-Ø×Ñ× Ñ  Ô&Ø×!Ñ!Ò-Ð-Ð-Ø×,Ñ,×7Ñ7¸Ó@Ñ@ˆ	Ø×Ñ˜Ö)ùó   ‚A,A.c              #  óà   "  € V P                   f   Q hV P                   P                  V4       V P                  f   Q hV P                  P                  R4      x €pV P	                  W4       R # 5ir   )r™  r6   r˜  r—   r�   r!  s   && r0   Úserver_send_lineÚ%TestIOStreamStartTLS.server_send_line  r&  r'  c                ól   € V P                   f   Q hV P                   pR V n         VP                  RW4      # )NF)r˜  Ú	start_tls)r8   rã  Úserver_hostnamer˜  s   &&& r0   Úclient_start_tlsÚ%TestIOStreamStartTLS.client_start_tls
  s:   € Ø×!Ñ!Ò-Ð-Ð-Ø×*Ñ*ˆØ!ˆÔØ×&Ñ& u¨kÓKÐKr/   c                ól   € V P                   f   Q hV P                   pR V n         VP                  RV4      # )NT)r™  r,  )r8   rã  r™  s   && r0   Úserver_start_tlsÚ%TestIOStreamStartTLS.server_start_tls  s:   € Ø×!Ñ!Ò-Ð-Ð-Ø×*Ñ*ˆØ!ˆÔØ×&Ñ& t¨[Ó9Ð9r/   c              #  óŠ  "  € V P                  R 4      x € V P                  R4      x € V P                  R4      x € V P                  R4      x € V P                  R4      x € V P                  R4      x € V P                  \        \        P
                  R7      4      pV P                  \        4       4      pVx €V n        Vx €V n	        V P                  \        V P                  \        4      4       V P                  \        V P                  \        4      4       V P                  R4      x € V P                  R4      x € R# 5i)	s   220 mail.example.com ready
s   EHLO mail.example.com
s   250-mail.example.com welcome
s   250 STARTTLS
s
   STARTTLS
s   220 Go ahead
rà  s   250 mail.example.com welcome
N)r)  r$  r.  r(   rä  rå  r1  r1   r˜  r™  ry   rÞ   r   )r8   Úclient_futureÚserver_futures   &  r0   Útest_start_tls_smtpÚ(TestIOStreamStartTLS.test_start_tls_smtp  s  é € ð ×#Ñ#Ð$EÓFÒFØ×#Ñ#Ð$@ÓAÒAØ×#Ñ#Ð$GÓHÒHØ×#Ñ#Ð$7Ó8Ò8Ø×#Ñ# OÓ4Ò4Ø×#Ñ#Ð$7Ó8Ò8Ø×-Ñ-¬d¼S¿]¹]Ô.KÓLˆØ×-Ñ-Ô.AÓ.CÓDˆØ#0Ñ0ˆÔØ#0Ñ0ˆÔØ�‰œ
 4×#5Ñ#5´{ÓCÔDØ�‰œ
 4×#5Ñ#5´{ÓCÔDØ×#Ñ#Ð$@ÓAÒAØ×#Ñ#Ð$GÓHÔHùs   ‚EEc           	   #  ó
  "  € V P                  \        4       4      p\        \        R 4      ;_uu_ 4        V P	                  RR7      pV P                  \        P                  4      ;_uu_ 4        Vx € RRR4       V P                  \        P                  \        P                  34      ;_uu_ 4        Vx € RRR4       RRR4       R#   + '       g   i     L^; i  + '       g   i     L-; i  + '       g   i     R# ; i5i)ú	SSL Errorr¨  ©r-  N)
r1  r1   r   r   r.  r£   rä  ÚSSLErrorr’  rŸ  ©r8   r5  r4  s   &  r0   Útest_handshake_failÚ(TestIOStreamStartTLS.test_handshake_fail+  s¤   é € à×-Ñ-Ô.AÓ.CÓDˆä”w ×,Õ,Ø ×1Ñ1À+Ð1ÓNˆMØ×"Ñ"¤3§<¡<×0Õ0Ø#Ò#÷ 1à×"Ñ"¤C§L¡L´&·,±,Ð#?×@Õ@Ø#Ò#÷ A÷	 -Ñ,ç0×0úç@×@ú÷	 -×,Ð,üsL   ‚2D´:C/Á.C		Á3?C/Â2C	Â7C/Â?
DÃ	CÃC/ÃC,Ã'C/Ã/D 	Ã:	Dc           	   #  óþ  "  € V P                  \        4       4      p\        \        R 4      ;_uu_ 4        V P	                  \
        P                  ! 4       RR7      pV P                  \
        P                  4      ;_uu_ 4        Vx € RRR4       V P                  \        4      ;_uu_ 4        Vx € RRR4       RRR4       R#   + '       g   i     LD; i  + '       g   i     L-; i  + '       g   i     R# ; i5i)r9  rt   r:  N)
r1  r1   r   r   r.  rä  r   r£   r;  r  r<  s   &  r0   Útest_check_hostnameÚ(TestIOStreamStartTLS.test_check_hostname6  s°   é € ð ×-Ñ-Ô.AÓ.CÓDˆÜ”w ×,Õ,Ø ×1Ñ1Ü×*Ò*Ó,¸kð 2ó ˆMð ×"Ñ"¤3§<¡<×0Õ0à#Ò#÷ 1ð ×"Ñ"¤9×-Õ-à#Ò#÷ .÷ -Ñ,÷ 1×0ú÷ .×-ú÷ -×,Ð,üsM   ‚2C=´AC)ÂC	Â%C)Â,C	Â1C)Â9
C=ÃCÃC)ÃC&Ã!C)Ã)C:	Ã4	C=c              #  ód  "  € \        \        ^P4      4      P                  R4      pV P                  f   Q hV P                  P	                  V4      x € V P
                  f   Q hV P
                  P                  VP                  4      x €pV P                  \        V4      \        V4      4       R# 5i)r©  ÚLN)	r  rY  Úcastr™  r6   r˜  r€   ro  r�   )r8   rZ  Úrecvs   &  r0   Útest_typed_memoryviewÚ*TestIOStreamStartTLS.test_typed_memoryviewE  s�   é € ô œ˜r›Ó#×(Ñ(¨Ó-ˆØ×!Ñ!Ò-Ð-Ð-Ø× Ñ ×&Ñ& sÓ+Ò+Ø×!Ñ!Ò-Ð-Ð-à×'Ñ'×2Ñ2°3·:±:Ó>Ñ>ˆØ×Ñœ˜t›¤e¨C£jÖ1ùs   ‚B.B0)r˜  r–  r—  r  r™  )NNrF   )r;   r<   r=   r>   r  r  r  r   r}  r$  r)  r.  r1  r   r6  r=  r@  rF  r?   r@   Ú__classcell__©rÁ  rB   s   @@r0   r  r  Ö  s¦   ù‡ € õõ(ò.ð 	‡]�]ñ*ó ð*ð 	‡]�]ñ*ó ð*ôLô:ð ñIó ðIð( ñ$ó ð$ð ñ$ó ð$ð ñ2ó ÷2ð 2r/   r  c                   ót   a € ] tR tRt o ]P
                  R 4       t]R 4       t]R 4       t	]R 4       t
RtV tR# )ÚWaitForHandshakeTestiQ  c           	   #  ó  "  € R ;r# \        4       w  rEV! \        4       R7      pVP                  V4       \        P                  ! \        P
                  P                  4      pRVn        \        P                  Vn	        \        4       ;_uu_ 4        V;P                  \        \        R^ 4      ,          un        \        \        P                  ! 4       VR7      pR R R 4       VP                  RV34      x € V P!                  VP                  P#                  4       4       Ve   VP%                  4        Ve   VP'                  4        R # R #   + '       g   i     Lz; i  Te   TP%                  4        Te   TP'                  4        i i ; i5i)Nrâ  FÚOP_NO_TLSv1_3rt   )r   r1   Ú
add_socketrä  r   r  r  r	  rå  r
  r   ÚoptionsÚgetattrr   r’  rw   ÚassertIsNotNoneÚcipherrž  rh   )r8   Ú
server_clsrµ  r¶  Úsockr—  rù  s   &&     r0   Úconnect_to_serverÚ&WaitForHandshakeTest.connect_to_serverR  s!  é € àÐˆð	Ü)Ó+‰JˆDÙÔ,?Ó,AÔBˆFØ×Ñ˜dÔ#ä×0Ò0´·±×1HÑ1HÓIˆGØ%*ˆGÔ"Ü"%§-¡-ˆGÔô $×%Õ%Ø—’¤7¬3°ÀÓ#CÕC•Ü$¤V§]¢]£_À'ÔJ�÷ &ð —.‘. +¨tÐ!4Ó5Ò5Ø× Ñ  §¡×!5Ñ!5Ó!7Ô8àÒ!Ø—‘”ØÒ!Ø—‘–ñ "÷ &×%ûð Ò!Ø—‘”ØÒ!Ø—‘•ð "üs7   ‚F‡B
E ÂA	EÃAE Ä ,FÅE	ÅE Å+F
Æ
Fc              #  ó~   aa"  € V o\        4       o ! VV3R  lR\        4      pV P                  V4      x € Sx € R# 5i)c                   óX   <a € ] tR tRt o V3R lt]P                  V3R l4       tRtV t	R# )ÚGWaitForHandshakeTest.test_wait_for_handshake_future.<locals>.TestServerit  c                ó¦   <€ SP                  VP                  P                  4       4       SP                  P	                  V P
                  V4       R # rF   )ÚassertIsNoner’  rR  rR  Úspawn_callbackÚhandle_connection)r8   r{   r�  r³   s   &&&€r0   Úhandle_streamÚUWaitForHandshakeTest.test_wait_for_handshake_future.<locals>.TestServer.handle_streamu  s8   ø€ Ø×!Ñ! &§-¡-×"6Ñ"6Ó"8Ô9Ø—‘×+Ñ+¨D×,BÑ,BÀFÖKr/   c              3  óV   <"  € VP                  4       x € SP                  R 4       R # 5irF   ©Úwait_for_handshakerŒ  )r8   r{   Úhandshake_futures   &&€r0   r]  ÚYWaitForHandshakeTest.test_wait_for_handshake_future.<locals>.TestServer.handle_connectiony  s#   øé € à×/Ñ/Ó1Ò1Ø ×+Ñ+¨DÖ1ùs   ƒ&)r.   N)
r;   r<   r=   r>   r^  r   r}  r]  r?   r@   ©rB   rc  r³   s   @€€r0   Ú
TestServerrY  t  s#   ù‡ € õLð �]‰]ô2ó ö2r/   rf  N©r   r   rU  ©r8   rf  rc  r³   s   & @@r0   Útest_wait_for_handshake_futureÚ3WaitForHandshakeTest.test_wait_for_handshake_futureo  s=   ùé € àˆÜ!›8Ð÷	2ð 	2œô 	2ð ×$Ñ$ ZÓ0Ò0ØÔùó   „9=c              #  ó~   aa"  € V o\        4       o ! VV3R  lR\        4      pV P                  V4      x € Sx € R# 5i)c                   óN   <a € ] tR tRt o ]P
                  VV3R l4       tRtV tR# )ÚVWaitForHandshakeTest.test_wait_for_handshake_already_waiting_error.<locals>.TestServeri†  c              3  óš   <"  € VP                  4       pSP                  \        VP                   4       Vx € SP                  R 4       R # 5irF   )rb  r£   ÚRuntimeErrorrŒ  )r8   r{   r�  r  rc  r³   s   &&& €€r0   r^  ÚdWaitForHandshakeTest.test_wait_for_handshake_already_waiting_error.<locals>.TestServer.handle_stream‡  s=   øé € à×/Ñ/Ó1�Ø×!Ñ!¤,°×0IÑ0IÔJØ’	à ×+Ñ+¨DÖ1ùs   ƒAAr.   N©	r;   r<   r=   r>   r   r}  r^  r?   r@   re  s   @€€r0   rf  rn  †  s   ù‡ € Ø�]‰]õ2ó ö2r/   rf  Nrg  rh  s   & @@r0   Ú-test_wait_for_handshake_already_waiting_errorÚBWaitForHandshakeTest.test_wait_for_handshake_already_waiting_error�  s=   ùé € àˆÜ!›8Ð÷	2ð 	2œô 	2ð ×$Ñ$ ZÓ0Ò0ØÔùrk  c              #  óv   a"  € \        4       o ! V3R  lR\        4      pV P                  V4      x € Sx € R# 5i)c                   óL   <a € ] tR tRt o ]P
                  V3R l4       tRtV tR# )ÚRWaitForHandshakeTest.test_wait_for_handshake_already_connected.<locals>.TestServeri–  c              3  óz   <"  € VP                  4       x € VP                  4       x € SP                  R 4       R # 5irF   ra  )r8   r{   r�  rc  s   &&&€r0   r^  Ú`WaitForHandshakeTest.test_wait_for_handshake_already_connected.<locals>.TestServer.handle_stream—  s2   øé € à×/Ñ/Ó1Ò1Ø×/Ñ/Ó1Ò1Ø ×+Ñ+¨DÖ1ùs   ƒ8;r.   Nrr  )rB   rc  s   @€r0   rf  rw  –  s   ù‡ € Ø�]‰]ô2ó ö2r/   rf  Nrg  )r8   rf  rc  s   & @r0   Ú)test_wait_for_handshake_already_connectedÚ>WaitForHandshakeTest.test_wait_for_handshake_already_connected’  s3   øé € ä!›8Ð÷	2œô 	2ð ×$Ñ$ ZÓ0Ò0ØÔùs   ƒ69r.   N)r;   r<   r=   r>   r   r}  rU  r   ri  rs  rz  r?   r@   rA   s   @r0   rK  rK  Q  sW   ø‡ € Ø‡]�]ñó ðð8 ñó ðð" ñó ðð  ñó ör/   rK  c                   ón   a a€ ] tR tRt oV 3R ltV 3R lt]R 4       t]R 4       t]R 4       t	Rt
VtV ;t# )ÚTestIOStreamCheckHostnamei¡  c                ó´  <€ \         SV `  4        \        4       w  V n        V n        R  p\
        P                  ! V P                  V4       \        P                  ! \        P                  P                  4      V n        V P                  P                  \        P                  P                  \        P                  P!                  \"        4      R4      4       R# )c                 óÀ  € \         P                  ! \         P                  P                  4      pVP	                  \
        P                  P                  \
        P                  P                  \        4      R 4      \
        P                  P                  \
        P                  P                  \        4      R4      4       VP                  V RRR7      p \        V 4       R# )r$   r%   TFrö  N)rä  r   r  r  r  r)   r*   r+   r,   r-   rø  r   )r…  r�  rù  s   && r0   r�  Ú8TestIOStreamCheckHostname.setUp.<locals>.accept_callbackª  s’   € Ü×0Ò0´·±×1HÑ1HÓIˆGØ×#Ñ#Ü—‘—‘œRŸW™WŸ_™_¬XÓ6¸
ÓCÜ—‘—‘œRŸW™WŸ_™_¬XÓ6¸
ÓCôð !×,Ñ,ØØ Ø(-ð -ó ˆJô
 ˜
Ö#r/   r$   N)r  r  r   r–  r—  r   r‘  rä  r   r  r  Úclient_ssl_ctxÚload_verify_locationsr)   r*   r+   r,   r-   )r8   r�  rÁ  s   & €r0   r  ÚTestIOStreamCheckHostname.setUp¦  sŠ   ø€ Ü‰‰ŒÜ#3Ó#5Ñ ˆŒ�t”yò	$ô 	×"Ò" 4§=¡=°/ÔBô "×8Ò8¼¿¹×9PÑ9PÓQˆÔØ×Ñ×1Ñ1Ü�G‰G�L‰LœŸ™Ÿ™¬Ó2°JÓ?ö	
r/   c                ó¾   <€ V P                   P                  V P                  P                  4       4       V P                  P	                  4        \
        SV `  4        R # rF   )rR  r“  r–  r”  rh   r  r  r  s   &€r0   r  Ú"TestIOStreamCheckHostname.tearDownÀ  s=   ø€ Ø�‰×#Ñ# D§M¡M×$8Ñ$8Ó$:Ô;Ø�‰×ÑÔÜ‰ÑÖr/   c              ƒ  óÔ   "  € \        \        P                  ! 4       V P                  R 7      pVP                  RV P                  3RR7      G Rj  x€L
  VP                  4        R#  L5i)râ  rt   zfoo.example.comr:  N)r   r’  r�  rw   r—  rh   r¤   s   & r0   Ú
test_matchÚ$TestIOStreamCheckHostname.test_matchÅ  sW   é € äœVŸ]š]›_¸$×:MÑ:MÔNˆØ�n‰nØ˜$Ÿ)™)Ð$Ø-ð ó 
÷ 	
ð 	
ð 	�‰Žñ		
ùs   ‚AA(ÁA&ÁA(c              ƒ  óî  "  € \        \        P                  ! 4       V P                  R 7      p\        \        R\
        P                  \        P                  ! 4       R8g  R7      ;_uu_ 4        V P                  \        P                  4      ;_uu_ 4        \        \        R\
        P                  R7      ;_uu_ 4        VP                  RV P                  3RR7      G R	j  x€L
  R	R	R	4       R	R	R	4       \        P                  ! 4       R8w  d   \        P                  ! R
4      G R	j  x€L
  R	R	R	4       R	#  LV  + '       g   i     L\; i  + '       g   i     Lg; i L6  + '       g   i     R	# ; i5i)râ  z.*alert bad certificateÚWindows)r  rœ  z0.*(certificate verify failed: Hostname mismatch)r  rt   úbar.example.comr:  Nrê   )r   r’  r�  r   r   r!  ÚWARNINGrl   rm   r£   rä  ÚSSLCertVerificationErrorrw   r—  rì   rÓ   r¤   s   & r0   Útest_no_matchÚ'TestIOStreamCheckHostname.test_no_matchÎ  s  é € äœVŸ]š]›_¸$×:MÑ:MÔNˆÜÜØ%Ü—/‘/Ü—_’_Ó&¨)Ñ3÷	
ö 
ð ×"Ñ"¤3×#?Ñ#?×@Õ@ÜÜØFÜ!Ÿ/™/÷ö ð
 !Ÿ.™.Ø$ d§i¡iÐ0Ø(9ð )ó ÷ ð ÷÷ Aô �ŠÓ  IÔ-Ü—m’m CÓ(×(Ð(÷)
ñ 
ñ÷÷ ú÷ A×@úñ )÷)
÷ 
ð 
üsl   ‚A*E5Á,(E!Â)E	Â=#D9Ã D7Ã!D9Ã%E	Ã-;E!Ä(EÄ)E!Ä-
E5Ä7D9Ä9E	ÅE	ÅEÅ	E!Å!E2	Å,	E5c              ƒ  óÖ   "  € R V P                   n        \        \        P                  ! 4       V P                   R7      pVP	                  RV P
                  3RR7      G Rj  x€L
  R#  L5i)Frâ  rt   r‹  r:  N)r�  r	  r   r’  rw   r—  r¤   s   & r0   Útest_check_disabledÚ-TestIOStreamCheckHostname.test_check_disabledç  sW   é € ð .3ˆ×ÑÔ*ÜœVŸ]š]›_¸$×:MÑ:MÔNˆØ�n‰nØ˜$Ÿ)™)Ð$Ø-ð ó 
÷ 	
ô 	
ùs   ‚AA)Á A'Á!A))r�  r–  r—  )r;   r<   r=   r>   r  r  r   r‡  rŽ  r‘  r?   r@   rH  rI  s   @@r0   r}  r}  ¡  sP   ù‡ € õ

õ4ð
 ñó ðð ñ)ó ð)ð0 ñ
ó ÷
ð 
r/   r}  c                   ód   a € ] tR tRt o ]P
                  R 4       t]R 4       t]R 4       t	Rt
V tR# )ÚTestPipeIOStreamió  c                ó`   € \         P                  ! 4       w  r#\        V3/ VB \        V3/ VB 3# rF   )r)   Úpiper	   )r8   r\   rq  Úws   &,  r0   r­   Ú#TestPipeIOStream.make_iostream_pairõ  s.   € ä�wŠw‹y‰ˆä˜AÑ( Ñ(¬,°qÑ*C¸FÑ*CÐCÐCr/   c              #  ó–  "  € V P                  4       x €w  rVP                  R 4       VP                  R4       VP                  R4      x €pV P                  VR4       VP	                  ^4      x €pV P                  VR4       VP                  4        VP                  4       x €pV P                  VR4       VP                  4        R# 5i)s   hels   lo worldó    s   hello r  s   ldN)r­   r6   r—   r�   r€   rh   rx   rÔ   s   &   r0   Útest_pipe_iostreamÚ#TestPipeIOStream.test_pipe_iostreamû  s¥   é € à×.Ñ.Ó0Ñ0‰ˆà
�‰�ÔØ
�‰�Ôà—]‘] 4Ó(Ñ(ˆØ×Ñ˜˜yÔ)à—]‘] 1Ó%Ñ%ˆØ×Ñ˜˜vÔ&à
�‰Œ
à×(Ñ(Ó*Ñ*ˆØ×Ñ˜˜uÔ%à
�‰Ž
ùs   ‚CC	c              #  ó  "  € V P                  4       x €w  rR pVP                  RV,          4       VP                  V4      x €pV P                  VRV,          4       VP	                  4        VP	                  4        R# 5i)r¢   rË   N)r­   r6   r€   r�   rh   )r8   rÅ   rÆ   Ú	NUM_BYTESr|   s   &    r0   Útest_pipe_iostream_big_writeÚ-TestPipeIOStream.test_pipe_iostream_big_write  sh   é € à×.Ñ.Ó0Ñ0‰ˆàˆ	ð 	�‰�˜	Õ!Ô"à—]‘] 9Ó-Ñ-ˆØ×Ñ˜˜t iÕ/Ô0à
�‰Œ
Ø
�‰Ž
ùs   ‚A=A?r.   N)r;   r<   r=   r>   r   r}  r­   r   r›  rŸ  r?   r@   rA   s   @r0   r”  r”  ó  sE   ø‡ € à‡]�]ñDó ðDð
 ñó ðð& ñó ör/   r”  c                   óR   a € ] tR tRt o RtR tR tRR ltR tR t	R t
R	 tR
tV tR# )ÚTestStreamBufferi  z1
Unit tests for the private _StreamBuffer class.
c                ó<   € \         P                  ! ^*4      V n         R# )rf  N)ru  rz  r7   s   &r0   r  ÚTestStreamBuffer.setUp$  s   € Ü—m’m BÓ'ˆŽr/   c                ó²   € \        V\        \        34      '       d   \        V4      # \        V\        4      '       d   VP	                  4       # \        V4      hrF   )rÞ   rY  rV  r  ÚtobytesÚ	TypeError)r8   Úbs   &&r0   Úto_bytesÚTestStreamBuffer.to_bytes'  s@   € Ü�aœ%¤Ð+×,Ò,Ü˜“8ˆOÜ˜œ:×&Ò&Ø—9‘9“;Ðä˜A“,Ðr/   c                óN   € \        4       pVP                  '       g   Q hWn        V# rF   )r   Ú_large_buf_threshold)r8   Úlarge_buf_thresholdrZ  s   && r0   Úmake_streambufferÚ"TestStreamBuffer.make_streambuffer/  s&   € Ü‹oˆØ×'×'Ð'Ð'Ð'Ø#6Ô Øˆ
r/   c                óF  € ^pV^\        V4      ,          8  dˆ   V P                  VP                  V4      4      pV P                  V4       V P	                  \        V4      V4       V P                  VP                  V4      W$34       V^,          ^,           ^,          pKž  R# )r¿  N)rã   r©  Úpeekry   ÚassertLessEqualrz   )r8   rZ  Úexpectedrn  Úgots   &&&  r0   Ú
check_peekÚTestStreamBuffer.check_peek5  s€   € ØˆØ�Qœ˜X›Õ&Ô&Ø—-‘- §¡¨£Ó/ˆCØ�O‰O˜CÔ Ø× Ñ ¤ S£¨4Ô0Ø�O‰O˜H×/Ñ/°Ó4°x°oÔFØ˜1•H˜q•L QÕ&ŠDñ 'r/   c                ó0  € V P                  \        V4      ^ 4       RpV FW  pWE,          pVP                  V! V4      4       V P                  \        V4      \        V4      4       V P                  W4       KY  	  V'       dy   V P                  P                  ^\        V4      ^,           4      pWFR pVP                  V4       V P                  \        V4      \        V4      4       V P                  W4       K€  V P                  \        V4      ^ 4       R# )r   r/   N)r�   rã   rŠ   rµ  ru  Ú	randrangeÚadvance)r8   rZ  ÚobjsÚ
input_typer³  Úorv  s   &&&&   r0   Úcheck_append_all_then_skip_allÚ/TestStreamBuffer.check_append_all_then_skip_all>  sÐ   € Ø×Ñœ˜S› 1Ô%àˆãˆAØ�MˆHØ�J‰J‘z !“}Ô%Ø×ÑœS ›X¤s¨8£}Ô5Ø�O‰O˜CÖ*ñ	 ÷ Ø—‘×%Ñ% a¬¨X«¸Õ):Ó;ˆAØ �|ˆHØ�K‰K˜ŒNØ×ÑœS ›X¤s¨8£}Ô5Ø�O‰O˜CÖ*à×Ñœ˜S› 1Ö%r/   c                óB  € . ROpV P                  4       pV P                  W!\        4       V P                  4       pV P                  W!\        4       V P                  4       pV P                  W!\        4       V P                  ^
4      p\        ^	4       F  pVP                  R4       K  	  V P                  \        VP                  4      ^4       \        ^	4       F  pVP                  R4       K  	  V P                  \        VP                  4      ^4       VP                  ^
4       V P                  \        VP                  4      ^4       VP                  ^4       V P                  \        VP                  4      ^ 4       V P                  \        V4      ^ 4       R# )rÊ   rÉ  N)rÊ   s   345s   67s   89aó   bcdes   fghs   ijklmn©r®  r½  rY  rV  r  râ   rŠ   r�   rã   Ú_buffersr¹  ©r8   rº  rZ  rå   s   &   r0   Ú
test_smallÚTestStreamBuffer.test_smallR  s5  € ÚIˆà×$Ñ$Ó&ˆØ×+Ñ+¨C´uÔ=à×$Ñ$Ó&ˆØ×+Ñ+¨C´yÔAà×$Ñ$Ó&ˆØ×+Ñ+¨C´zÔBð ×$Ñ$ RÓ(ˆÜ�q–ˆAØ�J‰J�tÖñ à×Ñœ˜SŸ\™\Ó*¨AÔ.Ü�q–ˆAØ�J‰J�tÖñ à×Ñœ˜SŸ\™\Ó*¨AÔ.Ø�‰�BŒØ×Ñœ˜SŸ\™\Ó*¨AÔ.Ø�‰�AŒØ×Ñœ˜SŸ\™\Ó*¨AÔ.Ø×Ñœ˜S› 1Ö%r/   c                óŠ  € . ROpV P                  4       pV P                  W!\        4       V P                  4       pV P                  W!\        4       V P                  4       pV P                  W!\        4       V P                  ^
4      p\        ^4       F  pVP                  R4       K  	  V P                  \        VP                  4      ^4       VP                  R4       V P                  \        VP                  4      ^4       VP                  R4       V P                  \        VP                  4      ^4       VP                  ^!4       V P                  \        VP                  4      ^4       VP                  ^4       V P                  \        VP                  4      ^ 4       V P                  \        V4      ^ 4       R# )rÊ   ó   yó   zN)s
   1212121212s   345345s(   6767676767676767676767676767676767676767s$   89a89a89a89a89a89a89a89a89a89a89a89arÀ  s   fghfghfghfghfghfghfghs   ijklmnijklmns   xxxxxxxxxxxrÁ  rÃ  s   &   r0   Ú
test_largeÚTestStreamBuffer.test_largel  sP  € ò
ˆð ×$Ñ$Ó&ˆØ×+Ñ+¨C´uÔ=à×$Ñ$Ó&ˆØ×+Ñ+¨C´yÔAà×$Ñ$Ó&ˆØ×+Ñ+¨C´zÔBð ×$Ñ$ RÓ(ˆÜ�q–ˆAØ�J‰J�yÖ!ñ à×Ñœ˜SŸ\™\Ó*¨AÔ.Ø�
‰
�4ÔØ×Ñœ˜SŸ\™\Ó*¨AÔ.Ø�
‰
�4ÔØ×Ñœ˜SŸ\™\Ó*¨AÔ.Ø�‰�BŒØ×Ñœ˜SŸ\™\Ó*¨AÔ.Ø�‰�AŒØ×Ñœ˜SŸ\™\Ó*¨AÔ.Ø×Ñœ˜S› 1Ö%r/   )ru  N)r=  )r;   r<   r=   r>   Ú__doc__r  r©  r®  rµ  r½  rÄ  rÉ  r?   r@   rA   s   @r0   r¢  r¢    s2   ø‡ € ñò(òôò'ò&ò(&÷4!&ð !&r/   r¢  )IÚtornado.concurrentr   Útornador   r   Útornado.ioloopr   Útornado.iostreamr   r   r	   r
   r   Útornado.httpclientr   r   Útornado.httputilr   Útornado.locksr   r   Útornado.logr   Útornado.netutilr   r   Útornado.platform.asyncior   Útornado.tcpserverr   Útornado.testingr   r   r   r   r   r   Útornado.test.utilr   r   r   r   Útornado.webr    r!   rì   r®  r{  r!  r)   rl   ru  r’  rä  r_   rà   r"   r1   r3   rD   r«   r‚  rÔ  rÞ  rê  ró  rþ  r  rK  r}  r”  ÚTestCaser¢  r.   r/   r0   Ú<module>rÛ     s‡  ðÝ %Ý Ý Ý !÷õ ÷ =Ý (ß *Ý ß CÝ ?Ý '÷÷ ÷ó ÷ 4Û Û Û Û Û 	Û Û Û Û 
Û Ý Û òô�>ô ð
 ôG!˜=ó G!ó ðG!ðT ôh˜ó hó ðhðV ôaÐ*ó aó ðaôH$Ð+Ð-Aô $ô$Ð-Ð/Cô $ô.Ð$ô .ô
Ð'ô 
ô&FÐ.ô Fô&x2˜=ô x2ôvM˜=ô Mô`O
 ô O
ðd ô(Ð)¨=ó (ó ð(ôVn&�x×(Ñ(ö n&r/   