+
    -IëjÒ  ã                   ó0  € ^ RI HtHt ^ RIHtHtHtHtHtH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHtHtHtHt ^ RIHt ^ RIHt ^ R	IHtHt ^ R
IHt ^ RIHtH t H!t!H"t"H#t# ^ RI$H%t% ^ RI&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I7t7^ RI8t9^ RI:t:^ RI;H<t< ^ RI=t=]=P|                  '       d	   ^ RI=H?t?H@t@ R tA ! R R]4      tB ! R R](4      tC ! R R] 4      tD ! R R]7PŠ                  4      tF ! R R](4      tG ! R R]4      tH ! R R ](4      tI ! R! R"](4      tJ ! R# R$](4      tK ! R% R&]K4      tL ! R' R(]4      tM ! R) R*]4      tN ! R+ R,]B4      tO ! R- R.] ]B4      tP ! R/ R0]B4      tQ]% ! R1 R2]!4      4       tR]7P¦                  ! ]T! ]2R34      '       * ;'       g    ]4Pª                  R48H  R54       ! R6 R7]R4      4       tV]7P¦                  ! ]T! ]2R34      ;'       d    ]4Pª                  P¯                  R84      '       * R94       ! R: R;]R4      4       tX ! R< R=]4      tY ! R> R?]4      tZ ! R@ RA]Z]4      t[ ! RB RC]Z]4      t\ ! RD RE]4      t] ! RF RG]4      t^ ! RH RI]4      t_ ! RJ RK]4      t` ! RL RM]4      ta ! RN RO]4      tbR# )Pé    )ÚgenÚnetutil)Újson_decodeÚjson_encodeÚutf8Ú_unicodeÚrecursive_unicodeÚ
native_str)ÚHTTP1Connection)Ú	HTTPError)Ú
HTTPServer)ÚHTTPHeadersÚHTTPMessageDelegateÚHTTPServerConnectionDelegateÚResponseStartLine)ÚIOStream)ÚEvent)Úgen_logÚapp_log©ÚSimpleAsyncHTTPClient)ÚAsyncHTTPTestCaseÚAsyncHTTPSTestCaseÚAsyncTestCaseÚ	ExpectLogÚgen_test)Úabstract_base_test)ÚApplicationÚRequestHandlerÚstream_request_body)ÚclosingÚcontextmanagerN)ÚBytesIO)ÚDictÚListc              ƒ  óä   aa"  € . o ! VV3R lR\         4      p\        V R4      oV! 4       pSP                  V4      G Rj  x€L
  VP                  VP                  RP                  S4      3#  L,5i)z]Reads an HTTP response from `stream` and returns a tuple of its
start_line, headers and body.c                   ó@   <a € ] tR t^<t o R tV3R ltV3R ltRtV tR# )Ú"read_stream_body.<locals>.Delegatec                ó   € W n         Wn        R # ©N©ÚheadersÚ
start_line©Úselfr-   r,   s   &&&Ú>/usr/lib/python3/dist-packages/tornado/test/httpserver_test.pyÚheaders_receivedÚ3read_stream_body.<locals>.Delegate.headers_received=   s   € Ø"ŒLØ(ŽOó    c                ó*   <€ SP                  V4       R # r*   )Úappend)r/   ÚchunkÚchunkss   &&€r0   Údata_receivedÚ0read_stream_body.<locals>.Delegate.data_receivedA   s   ø€ Ø�M‰M˜%Ö r3   c                ó(   <€ SP                  4        R # r*   )Údetach©r/   Úconns   &€r0   ÚfinishÚ)read_stream_body.<locals>.Delegate.finishD   s   ø€ Ø�K‰KŽMr3   r+   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r1   r8   r>   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__r7   r=   s   @€€r0   ÚDelegater(   <   s   ù‡ € ò	)õ	!÷	ó 	r3   rG   TNr3   )r   r   Úread_responser-   r,   Újoin)ÚstreamrG   Údelegater7   r=   s   &  @@r0   Úread_stream_bodyrL   7   so   ùé € ð €F÷	ð 	Ô&ô 	ô ˜6 4Ó(€DÙ‹z€HØ
×
Ñ
˜XÓ
&×&Ð&Ø×Ñ × 0Ñ 0°#·(±(¸6Ó2BÐBÐBñ 'ùs   „=A0ÁA.Á-A0c                   ó0   a € ] tR t^Mt o RtR tR tRtV tR# )ÚHandlerBaseTestCaseNc                óF   € \        R V P                  P                  3.4      # ©Ú/)r   Ú	__class__ÚHandler©r/   s   &r0   Úget_appÚHandlerBaseTestCase.get_appP   s   € Ü˜S $§.¡.×"8Ñ"8Ð9Ð:Ó;Ð;r3   c                óp   € V P                   ! V/ VB pVP                  4        \        VP                  4      # r*   )ÚfetchÚrethrowr   Úbody)r/   ÚargsÚkwargsÚresponses   &*, r0   Ú
fetch_jsonÚHandlerBaseTestCase.fetch_jsonS   s0   € Ø—:’:˜tÐ. vÑ.ˆØ×ÑÔÜ˜8Ÿ=™=Ó)Ð)r3   © )	r@   rA   rB   rC   rS   rU   r^   rD   rE   ©rF   s   @r0   rN   rN   M   s   ø‡ € Ø€Gò<÷*ð *r3   rN   c                   ó6   a € ] tR t^Yt o RR ltR tR tRtV tR# )ÚHelloWorldRequestHandlerc                ó   € Wn         R # r*   ©Úexpected_protocol)r/   Úprotocols   &&r0   Ú
initializeÚ#HelloWorldRequestHandler.initializeZ   s   € Ø!)Ör3   c                óˆ   € V P                   P                  V P                  8w  d   \        R 4      hV P	                  R4       R# )zunexpected protocolúHello worldN)Úrequestrg   rf   Ú	Exceptionr>   rT   s   &r0   ÚgetÚHelloWorldRequestHandler.get]   s2   € Ø�<‰<× Ñ  D×$:Ñ$:Ô:ÜÐ1Ó2Ð2Ø�‰�MÖ"r3   c                óp   € V P                  R \        V P                  P                  4      ,          4       R# )zGot %d bytes in POSTN)r>   Úlenrl   rZ   rT   s   &r0   ÚpostÚHelloWorldRequestHandler.postb   s#   € Ø�‰Ð*¬S°·±×1BÑ1BÓ-CÕCÖDr3   re   N)Úhttp)	r@   rA   rB   rC   rh   rn   rr   rD   rE   ra   s   @r0   rc   rc   Y   s   ø‡ € ô*ò#÷
Eð Er3   rc   c                   óD   a € ] tR t^ft o R tR tR tR tR tR t	Rt
V tR# )	ÚSSLTestc                ó<   € \        R \        \        RR7      3.4      # )rQ   Úhttps©rg   )r   rc   ÚdictrT   s   &r0   rU   ÚSSLTest.get_appg   s   € Ü˜SÔ":¼DÈ'Ô<RÐSÐTÓUÐUr3   c                ó^   € \        RR \        P                  /\        P                  ! 4       B # )Ússl_versionr`   )rz   ÚsslÚPROTOCOL_TLS_SERVERr   Údefault_ssl_optionsrT   s   &r0   Úget_ssl_optionsÚSSLTest.get_ssl_optionsj   s.   € Üñ 
Ü×/Ñ/ð
ä ×4Ò4Ó6ñ
ð 	
r3   c                ó`   € V P                  R 4      pV P                  VP                  R4       R# )rQ   ó   Hello worldN©rX   ÚassertEqualrZ   ©r/   r]   s   & r0   Útest_sslÚSSLTest.test_sslp   s#   € Ø—:‘:˜c“?ˆØ×Ñ˜Ÿ™¨Ö7r3   c                ót   € V P                  R RRR,          R7      pV P                  VP                  R4       R# )rQ   ÚPOSTÚAiˆ  ©ÚmethodrZ   s   Got 5000 bytes in POSTNr…   r‡   s   & r0   Útest_large_postÚSSLTest.test_large_postt   s/   € Ø—:‘:˜c¨&°s¸Tµz�:ÓBˆØ×Ñ˜Ÿ™Ð(AÖBr3   c                óÂ  € \        \        R 4      ;_uu_ 4        \        \        RRR7      ;_uu_ 4        V P                  \        \        34      ;_uu_ 4        V P                  V P                  R4      P                  RR4      RRRR	7       R
R
R
4       R
R
R
4       R
R
R
4       R
#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R
# ; i)z(SSL Error|uncaught exception)úUncaught exceptionF©ÚrequiredrQ   úhttps:úhttp:é  T)Úrequest_timeoutÚconnect_timeoutÚraise_errorN)r   r   ÚassertRaisesÚIOErrorr   rX   Úget_urlÚreplacerT   s   &r0   Útest_non_ssl_requestÚSSLTest.test_non_ssl_requestx   s�   € ô ”wÐ @×AÕAÜœ7Ð$8À5×IÖIØ×&Ñ&¬´Ð';×<Õ<Ø—J‘JØŸ™ SÓ)×1Ñ1°(¸GÓDØ(,Ø(,Ø$(ð	 ô ÷ =÷ J÷ BÑAç<×<ú÷ J×Iú÷ B×AÐAús:   ™C´$B:	Á5B'ÂB:	ÂCÂ'B7Â2B:	Â:C
ÃCÃC	c           
     ó†  € \        \        R 4      ;_uu_ 4       pV P                  \        \        34      ;_uu_ 4        V P                  V P                  R4      P                  RR4      RR7       RRR4       RRR4       V P                  XP                  4       R#   + '       g   i     L5; i  + '       g   i     L@; i)z	SSL ErrorrQ   r•   r–   T)rš   N)
r   r   r›   rœ   r   rX   r�   rž   ÚassertFalseÚlogged_stack)r/   Ú
expect_logs   & r0   Útest_error_loggingÚSSLTest.test_error_logging†   s…   € ä”w ×,Ô,°
Ø×"Ñ"¤G¬YÐ#7×8Õ8Ø—
‘
Ø—L‘L Ó%×-Ñ-¨h¸Ó@Èdð ô ÷ 9÷ -ð
 	×Ñ˜×0Ñ0Ö1÷	 9×8ú÷ -×,ús"   ™$B0½3B	Á0B0ÂB-Â(B0Â0C 	r`   N)r@   rA   rB   rC   rU   r�   rˆ   r�   rŸ   r¥   rD   rE   ra   s   @r0   rv   rv   f   s*   ø‡ € òVò
ò8òCò÷2ð 2r3   rv   c                   ó,   a € ] tR t^�t o R tR tRtV tR# )ÚBadSSLOptionsTestc                óX   € \        4       pV P                  \        \        VR R/R7       R# )Úkeyfilez/__missing__.crt©Ússl_optionsN)r   r›   ÚKeyErrorr   )r/   Úapplications   & r0   Útest_missing_argumentsÚ(BadSSLOptionsTest.test_missing_arguments‘   s.   € Ü!“mˆØ×ÑÜÜØØ"Ð$6Ð7ð	 	ö 	
r3   c           	     óš  € \        4       p\        P                  P                  \        4      p\        P                  P                  VR4      p\        P                  P                  VR4      pV P                  \        \        3\        VRR/R7       V P                  \        \        3\        VRVRR/R7       \        VRVRV/R7       R# )	z6A missing SSL key should cause an immediate exception.ztest.crtztest.keyÚcertfilez/__mising__.crtr«   rª   z/__missing__.keyN)
r   ÚosÚpathÚdirnameÚ__file__rI   r›   Ú
ValueErrorrœ   r   )r/   r®   Ú
module_dirÚexisting_certificateÚexisting_keys   &    r0   Útest_missing_keyÚ"BadSSLOptionsTest.test_missing_keyš   s¾   € ô "“mˆÜ—W‘W—_‘_¤XÓ.ˆ
Ü!Ÿw™wŸ|™|¨J¸
ÓCÐÜ—w‘w—|‘| J°
Ó;ˆà×ÑÜœÐ!ÜØØ#Ð%6Ð7ð	 	ô 	
ð 	×ÑÜœÐ!ÜØàÐ0ØÐ-ðð	 	ô 	
ô 	ØØ#Ð%9¸9ÀlÐS÷	
r3   r`   N)r@   rA   rB   rC   r¯   r»   rD   rE   ra   s   @r0   r¨   r¨   �   s   ø‡ € ò
÷
ð 
r3   r¨   c                   ó&   a € ] tR t^¹t o R tRtV tR# )ÚMultipartTestHandlerc                óH  € V P                  R V P                  P                  R,          RV P                  R4      RV P                  P                  R,          ^ ,          P
                  R\        V P                  P                  R,          ^ ,          R,          4      /4       R# )ÚheaderzX-Header-Encoding-TestÚargumentÚfilenameÚfilesÚfilebodyrZ   N)r>   rl   r,   Úget_argumentrÃ   rÂ   r   rT   s   &r0   rr   ÚMultipartTestHandler.postº   sz   € Ø�‰à˜$Ÿ,™,×.Ñ.Ð/GÕHØ˜D×-Ñ-¨jÓ9Ø˜DŸL™L×.Ñ.¨wÕ7¸Õ:×CÑCØœH T§\¡\×%7Ñ%7¸Õ%@ÀÕ%CÀFÕ%KÓLð	ö	
r3   r`   N©r@   rA   rB   rC   rr   rD   rE   ra   s   @r0   r¾   r¾   ¹   s   ø‡ € ÷
ð 
r3   r¾   c                   óR   a € ] tR t^Æt o R tR tR	R ltR tR t]	R 4       t
RtV tR# )
ÚHTTPConnectionTestc                ó"   € R \         3R\        3.# )z
/multipartú/hello)r¾   rc   rT   s   &r0   Úget_handlersÚHTTPConnectionTest.get_handlersÇ   s   € àÔ/Ð0ØÔ/Ð0ð
ð 	
r3   c                ó4   € \        V P                  4       4      # r*   )r   rÌ   rT   s   &r0   rU   ÚHTTPConnectionTest.get_appÍ   s   € Ü˜4×,Ñ,Ó.Ó/Ð/r3   c                óÖ  a a€ \        \        \        P                  ! 4       4      4      ;_uu_ 4       oS P                  P	                  V V3R  l4       SP                  VP                  V\        R\        V4      ,          4      .,           4      V,           V,           V,           4       S P                  P	                  V3R l4      w  rApVuuRRR4       #   + '       g   i     R# ; i)c                  óF   <€ SP                  R S P                  4       34      # ©ú	127.0.0.1)ÚconnectÚget_http_port©r/   rJ   s   €€r0   Ú<lambda>Ú.HTTPConnectionTest.raw_fetch.<locals>.<lambda>Ó   s   ø€ ˜Ÿ™¨°T×5GÑ5GÓ5IÐ'JÔKr3   zContent-Length: %dc                  ó   <€ \        S 4      # r*   )rL   ©rJ   s   €r0   r×   rØ   Ü   s   ø€ Ô(¨Ô0r3   N)	r!   r   ÚsocketÚio_loopÚrun_syncÚwriterI   r   rq   )r/   r,   rZ   Únewliner-   rJ   s   f&&& @r0   Ú	raw_fetchÚHTTPConnectionTest.raw_fetchÐ   s­   ù€ Ü”XœfŸmšm›oÓ.×/Ô/°6Ø�L‰L×!Ñ!ÝKôð �L‰LØ—‘˜W¬Ð-AÄCÈÃIÕ-MÓ(NÐ'OÕOÓPØõàõð õôð )-¯©×(=Ñ(=Ü0ó)Ñ%ˆJ ð ÷ 0×/×/Ó/ús   ²BCÃC(	c                ó�  € V P                  . RORP                  RRRP                  4       RRP                  4       RRP                  4       RR.	4      4      p\        V4      pV P	                  R	VR
,          4       V P	                  RVR,          4       V P	                  RVR,          4       V P	                  RVR,          4       R# )ó   POST /multipart HTTP/1.0ó   
s-   Content-Disposition: form-data; name=argumentr3   ô   Ã¡s   --1234567890u;   Content-Disposition: form-data; name="files"; filename="Ã³"ô   Ãºs   --1234567890--ô   Ã©rÀ   rÁ   ô   Ã³rÂ   rÄ   N)rã   s6   Content-Type: multipart/form-data; boundary=1234567890s   X-Header-encoding-test: é)rà   rI   Úencoder   r†   ©r/   r]   Údatas   &  r0   Útest_multipart_formÚ&HTTPConnectionTest.test_multipart_formà   s»   € ð —>‘>òð
 �L‰LàDØØ—O‘OÓ%Ø#ØU×\Ñ\Ó^ØØ—O‘OÓ%Ø%Øð
óó
ˆô( ˜8Ó$ˆØ×Ñ˜ 4¨¥>Ô2Ø×Ñ˜ 4¨
Õ#3Ô4Ø×Ñ˜ 4¨
Õ#3Ô4Ø×Ñ˜ 4¨
Õ#3Ö4r3   c                óf   € R F*  pV P                  R.RVR7      pV P                  VR4       K,  	  R# )rä   s   GET /hello HTTP/1.0r3   )rß   r„   N)rä   ó   
)rà   r†   )r/   rß   r]   s   &  r0   Útest_newlinesÚ HTTPConnectionTest.test_newlinesý   s4   € ã'ˆGØ—~‘~Ð'=Ð&>ÀÈW�~ÓUˆHØ×Ñ˜X ~Ö6ó (r3   c              #  óÖ  "  € \        \        P                  ! 4       4      pVP                  R V P                  4       34      x € VP	                  RP                  . R	O4      4      x € VP                  R4      x €pV P                  VP                  R4      V4       VP	                  R
4       VP                  R4      x €pV P                  VP                  R4      V4       VP                  R4      x €p\        P                  ! \        VP                  R4      4      4      pVP                  \        VR,          4      4      x €pV P                  VR4       VP!                  4        R# 5i)rÓ   rä   ó   

s   HTTP/1.1 100 ó   HTTP/1.1 200Úlatin1úContent-Lengths   Got 1024 bytes in POSTN)s   POST /hello HTTP/1.1s   Host: 127.0.0.1s   Content-Length: 1024s   Expect: 100-continues   Connection: closerä   s   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)r   rÛ   rÔ   rÕ   rÞ   rI   Ú
read_untilÚ
assertTrueÚ
startswithr   Úparser
   ÚdecodeÚ
read_bytesÚintr†   Úclose)r/   rJ   rë   Ú
first_lineÚheader_datar,   rZ   s   &      r0   Útest_100_continueÚ$HTTPConnectionTest.test_100_continue  s&  é € ô
 œ&Ÿ-š-›/Ó*ˆØ�n‰n˜k¨4×+=Ñ+=Ó+?Ð@ÓAÒAØ�l‰lØ�L‰Lòó	ó
ò 	
ð ×&Ñ& {Ó3Ñ3ˆØ�‰˜Ÿ™Ð(8Ó9¸4Ô@Ø�‰�[Ô!Ø!×,Ñ,¨WÓ5Ñ5ˆ
Ø�‰˜
×-Ñ-¨oÓ>À
ÔKØ"×-Ñ-¨kÓ:Ñ:ˆÜ×#Ò#¤J¨{×/AÑ/AÀ(Ó/KÓ$LÓMˆØ×&Ñ&¤s¨7Ð3CÕ+DÓ'EÓFÑFˆØ×Ñ˜Ð8Ô9Ø�‰Žùs   ‚E'E)r`   N)rä   )r@   rA   rB   rC   rÌ   rU   rà   rì   rð   r   r  rD   rE   ra   s   @r0   rÉ   rÉ   Æ   s2   ø‡ € ò
ò0ôò 5ò:7ð ñó ör3   rÉ   c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚEchoHandleri"  c                ób   € V P                  \        V P                  P                  4      4       R # r*   ©rÞ   r	   rl   Ú	argumentsrT   s   &r0   rn   ÚEchoHandler.get#  ó   € Ø�
‰
Ô$ T§\¡\×%;Ñ%;Ó<Ö=r3   c                ób   € V P                  \        V P                  P                  4      4       R # r*   r  rT   s   &r0   rr   ÚEchoHandler.post&  r	  r3   r`   N©r@   rA   rB   rC   rn   rr   rD   rE   ra   s   @r0   r  r  "  s   ø‡ € ò>÷>ð >r3   r  c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )ÚTypeCheckHandleri*  c           	     óz  € / V n         R \        3R\        3R\        3R\        3R\        3R\        3R\        3R\        3.pV F,  w  r#V P                  V\        V P                  V4      V4       K.  	  V P                  R\        V P                  P                  P                  4       4      ^ ,          \        4       V P                  R	\        V P                  P                  P                  4       4      ^ ,          \        4       V P                  R
\        V P                  P                  P                  4       4      ^ ,          \        4       V P                  R\        V P                  P                  P                  4       4      ^ ,          P                  \        4       V P                  R\        V P                  P                  P                  4       4      ^ ,          \        4       V P                  R\        V P                  P                  P                  4       4      ^ ,          ^ ,          \        4       R# )rŽ   ÚuriÚversionÚ	remote_iprg   Úhostr´   ÚqueryÚ
header_keyÚheader_valueÚ
cookie_keyÚcookie_valueÚarg_keyÚ	arg_valueN)ÚerrorsÚstrÚ
check_typeÚgetattrrl   Úlistr,   ÚkeysÚvaluesÚcookiesÚvaluer  Úbytes)r/   ÚfieldsÚfieldÚexpected_types   &   r0   ÚprepareÚTypeCheckHandler.prepare+  s—  € ØˆŒà”sˆOØ”CˆLØœÐØœ#ÐØœÐØ”SˆMØ”SˆMØ”cˆNð	
ˆó %+Ñ ˆEØ�O‰O˜E¤7¨4¯<©<¸Ó#?ÀÖOñ %+ð 	�‰˜¤d¨4¯<©<×+?Ñ+?×+DÑ+DÓ+FÓ&GÈÕ&JÌCÔPØ�‰˜¬¨T¯\©\×-AÑ-A×-HÑ-HÓ-JÓ(KÈAÕ(NÔPSÔTà�‰˜¤d¨4¯<©<×+?Ñ+?×+DÑ+DÓ+FÓ&GÈÕ&JÌCÔPØ�‰ØœD §¡×!5Ñ!5×!<Ñ!<Ó!>Ó?ÀÕB×HÑHÌ#ô	
ð
 	�‰˜	¤4¨¯©×(>Ñ(>×(CÑ(CÓ(EÓ#FÀqÕ#IÌ3ÔOØ�‰˜¤T¨$¯,©,×*@Ñ*@×*GÑ*GÓ*IÓ%JÈ1Õ%MÈaÕ%PÔRWÖXr3   c                ó’   € V P                  R V P                  P                  \        4       V P	                  V P
                  4       R# )rZ   N)r  rl   rZ   r$  rÞ   r  rT   s   &r0   rr   ÚTypeCheckHandler.postF  s,   € Ø�‰˜ §¡× 1Ñ 1´5Ô9Ø�
‰
�4—;‘;Ör3   c                ó<   € V P                  V P                  4       R # r*   )rÞ   r  rT   s   &r0   rn   ÚTypeCheckHandler.getJ  s   € Ø�
‰
�4—;‘;Ör3   c                óV   € \        V4      pW48w  d   R V RV 2V P                  V&   R# R# )z	expected z, got N)Útyper  )r/   ÚnameÚobjr'  Úactual_types   &&&& r0   r  ÚTypeCheckHandler.check_typeM  s1   € Ü˜3“iˆØÔ'Ø"+¨M¨?¸&ÀÀÐ NˆD�K‰K˜Óñ (r3   )r  N)
r@   rA   rB   rC   r(  rr   rn   r  rD   rE   ra   s   @r0   r  r  *  s!   ø‡ € òYò6 ò ÷Oð Or3   r  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚPostEchoHandleriS  c                óZ   € V P                  \        V P                  R 4      R7      4       R# )rë   )ÚechoN)rÞ   rz   rÅ   )r/   Ú	path_argss   &*r0   rr   ÚPostEchoHandler.postT  s   € Ø�
‰
”4˜T×.Ñ.¨vÓ6Ô7Ö8r3   r`   NrÇ   ra   s   @r0   r5  r5  S  s   ø‡ € ÷9ð 9r3   r5  c                   ó*   a € ] tR tRt o RR ltRtV tR# )ÚPostEchoGBKHandleriX  Nc                ój   €  VP                  R 4      #   \         d    \        RRT,          4      hi ; i)Úgbké�  zinvalid gbk bytes: %r)rû   rm   r   )r/   r#  r0  s   &&&r0   Údecode_argumentÚ"PostEchoGBKHandler.decode_argumentY  s;   € ð	BØ—<‘< Ó&Ð&øÜô 	BÜ˜CÐ!8¸5Õ!@ÓAÐAð	Bús   ‚ “2r`   r*   )r@   rA   rB   rC   r?  rD   rE   ra   s   @r0   r;  r;  X  s   ø‡ € ÷Bò Br3   r;  c                   óJ   a € ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )ÚHTTPServerTesti`  c                ó^   € \        R \        3R\        3R\        3R\        3R\        3.4      # )ú/echoú
/typecheckú//doubleslashz
/post_utf8z	/post_gbk)r   r  r  r5  r;  rT   s   &r0   rU   ÚHTTPServerTest.get_appa  s>   € Üàœ+Ð&ØÔ/Ð0Ø ¤+Ð.ØœÐ/ØÔ0Ð1ðó
ð 	
r3   c                ó|   € V P                  R 4      p\        VP                  4      pV P                  VRR./4       R# )z/echo?foo=%C3%A9Úfoorç   N©rX   r   rZ   r†   rê   s   &  r0   Útest_query_string_encodingÚ)HTTPServerTest.test_query_string_encodingl  s6   € Ø—:‘:Ð0Ó1ˆÜ˜8Ÿ=™=Ó)ˆØ×Ñ˜ ¨ zÐ2Ö3r3   c                ó~   € V P                  R 4      p\        VP                  4      pV P                  VRRR./4       R# )z/echo?foo=&foo=rI  Ú NrJ  rê   s   &  r0   Útest_empty_query_stringÚ&HTTPServerTest.test_empty_query_stringq  s8   € Ø—:‘:Ð/Ó0ˆÜ˜8Ÿ=™=Ó)ˆØ×Ñ˜ ¨¨B xÐ0Ö1r3   c                óˆ   € V P                  R RRR7      p\        VP                  4      pV P                  VRR.RR./4       R# )rD  r‹   z	foo=&bar=r�   rI  rN  ÚbarNrJ  rê   s   &  r0   Útest_empty_post_parametersÚ)HTTPServerTest.test_empty_post_parametersv  sA   € Ø—:‘:˜g¨f¸;�:ÓGˆÜ˜8Ÿ=™=Ó)ˆØ×Ñ˜ ¨ t¨U°R°DÐ9Ö:r3   c                óú   € R R/pV P                  RVR7      p\        VP                  4      pV P                  V/ 4       V P                  RRRVR7      p\        VP                  4      pV P                  V/ 4       R# )ÚCookieúfoo=barz/typecheck?foo=bar©r,   rE  r‹   ©rŽ   rZ   r,   NrJ  )r/   r,   r]   rë   s   &   r0   Ú
test_typesÚHTTPServerTest.test_types{  sy   € Ø˜YÐ'ˆØ—:‘:Ð2¸G�:ÓDˆÜ˜8Ÿ=™=Ó)ˆØ×Ñ˜˜rÔ"à—:‘:Ø ¨iÀð ó 
ˆô ˜8Ÿ=™=Ó)ˆØ×Ñ˜˜rÖ"r3   c                óª   € V P                  R 4      pV P                  ^ÈVP                  4       V P                  \        VP                  4      / 4       R# )rF  N)rX   r†   Úcoder   rZ   r‡   s   & r0   Útest_double_slashÚ HTTPServerTest.test_double_slash‡  s?   € ð —:‘:˜oÓ.ˆØ×Ñ˜˜hŸm™mÔ,Ø×Ñœ X§]¡]Ó3°RÖ8r3   c                óÆ  € R R/pRpR FÀ  pR F·  pV P                  W4R7      ;_uu_ 4        VP                  V4      pV'       d/   \        P                  P	                  V4      P                  R4      pV P                  RV,           RVRV,           R7      pV P                  \        VP                  4      R	V/4       R
R
R
4       K¹  	  KÂ  	  R
#   + '       g   i     KÒ  ; i)zContent-Typez!application/x-www-form-urlencodedu   chinese: å¼ ä¸‰)ÚencÚquoteÚasciiz/post_r‹   s   data=)rŽ   r,   rZ   r7  N)r   r=  )TF)	ÚsubTestré   Úurllibrú   rb  rX   r†   r   rZ   )r/   r,   Úuni_textra  rb  Úbin_textr]   s   &      r0   Útest_post_encodingsÚ"HTTPServerTest.test_post_encodings�  sÁ   € Ø!Ð#FÐGˆØ*ˆÛ"ˆCÛ&�Ø—\‘\ c�\×7Õ7Ø'Ÿ™¨sÓ3�HßÜ#)§<¡<×#5Ñ#5°hÓ#?×#FÑ#FÀwÓ#O˜Ø#Ÿz™zØ  3�Ø%Ø 'Ø&¨Õ1ð	  *ó  �Hð ×$Ñ$¤[°·±Ó%?À&È(ÐASÔT÷ 8Ñ7ó 'ó #ç7×7Ð7ús   «BC	ÃC r`   N)r@   rA   rB   rC   rU   rK  rO  rS  rZ  r^  rh  rD   rE   ra   s   @r0   rB  rB  `  s/   ø‡ € ò	
ò4ò
2ò
;ò

#ò9÷Uð Ur3   rB  c                   ó¦   a a€ ] tR tRt oR tV 3R ltV 3R ltR tR tR t	R t
R	 tR
 tR tR tR tR tR t]R 4       t]R 4       tRtVtV ;t# )ÚHTTPServerRawTesti¡  c                ó&   € \        R \        3.4      # )rD  ©r   r  rT   s   &r0   rU   ÚHTTPServerRawTest.get_app¢  s   € Ü˜W¤kÐ2Ð3Ó4Ð4r3   c                óª   <a € \         SS `  4        \        \        P                  ! 4       4      S n        S P
                  P                  V 3R  l4       R# )c                  óZ   <€ S P                   P                  R S P                  4       34      # rÒ   )rJ   rÔ   rÕ   rT   s   €r0   r×   Ú)HTTPServerRawTest.setUp.<locals>.<lambda>©  s"   ø€ �D—K‘K×'Ñ'¨°d×6HÑ6HÓ6JÐ(KÔLr3   N)ÚsuperÚsetUpr   rÛ   rJ   rÜ   rÝ   ©r/   rR   s   f€r0   rs  ÚHTTPServerRawTest.setUp¥  s3   ù€ Ü‰‰ŒÜœvŸ}š}›Ó/ˆŒØ�‰×ÑÜLö	
r3   c                óX   <€ V P                   P                  4        \        SV `  4        R # r*   )rJ   rþ   rr  ÚtearDownrt  s   &€r0   rw  ÚHTTPServerRawTest.tearDown¬  s   ø€ Ø�‰×ÑÔÜ‰ÑÖr3   c                óÐ   € V P                   P                  4        V P                  P                  \        P
                  ! R R7      V P                  4       V P                  4        R# )çü©ñÒMbP?©ÚsecondsN)rJ   rþ   rÜ   Úadd_timeoutÚdatetimeÚ	timedeltaÚstopÚwaitrT   s   &r0   Útest_empty_requestÚ$HTTPServerRawTest.test_empty_request°  s>   € Ø�‰×ÑÔØ�‰× Ñ ¤×!3Ò!3¸EÔ!BÀDÇIÁIÔNØ�	‰	Žr3   c                ó´  a € \        \        R \        P                  R7      ;_uu_ 4        S P                  P                  R4       S P                  P                  V 3R l4      w  rpS P                  RVP                  4       S P                  RVP                  4       S P                  RVP                  4       RRR4       R#   + '       g   i     R# ; i)ú.*Malformed HTTP request line©Úleveló   asdf

c                  ó.   <€ \        S P                  4      # r*   ©rL   rJ   rT   s   €r0   r×   ÚFHTTPServerRawTest.test_malformed_first_line_response.<locals>.<lambda>¹  ó   ø€ Ô(¨¯©Ô5r3   úHTTP/1.1r>  úBad RequestN©r   r   ÚloggingÚINFOrJ   rÞ   rÜ   rÝ   r†   r  r]  Úreason©r/   r-   r,   r]   s   f   r0   Ú"test_malformed_first_line_responseÚ4HTTPServerRawTest.test_malformed_first_line_responseµ  s—   ø€ Ü”wÐ ?ÄwÇ|Á|×TÖTØ�K‰K×Ñ˜oÔ.Ø,0¯L©L×,AÑ,AÜ5ó-Ñ)ˆJ ð ×Ñ˜Z¨×);Ñ);Ô<Ø×Ñ˜S *§/¡/Ô2Ø×Ñ˜]¨J×,=Ñ,=Ô>÷ U×T×TÒTúó   ªBCÃC	c                ó\  € \        \        R \        P                  R7      ;_uu_ 4        V P                  P                  R4       V P                  P                  \        P                  ! RR7      V P                  4       V P                  4        RRR4       R#   + '       g   i     R# ; i)r…  r†  rˆ  çš™™™™™©?r{  N©r   r   r�  r‘  rJ   rÞ   rÜ   r}  r~  r  r€  r�  rT   s   &r0   Útest_malformed_first_line_logÚ/HTTPServerRawTest.test_malformed_first_line_log¿  sf   € Ü”wÐ ?ÄwÇ|Á|×TÖTØ�K‰K×Ñ˜oÔ.ð �L‰L×$Ñ$¤X×%7Ò%7ÀÔ%EÀtÇyÁyÔQØ�I‰IŒK÷ U×T×TÒTúó   ©A'BÂB+	c                ó\  € \        \        R \        P                  R7      ;_uu_ 4        V P                  P                  R4       V P                  P                  \        P                  ! RR7      V P                  4       V P                  4        RRR4       R#   + '       g   i     R# ; i)z1.*Malformed HTTP message.*no colon in header liner†  s   GET / HTTP/1.0
asdf

r˜  r{  Nr™  rT   s   &r0   Útest_malformed_headersÚ(HTTPServerRawTest.test_malformed_headersÇ  sr   € ÜÜØ?Ü—,‘,÷
ö 
ð
 �K‰K×ÑÐ?Ô@Ø�L‰L×$Ñ$¤X×%7Ò%7ÀÔ%EÀtÇyÁyÔQØ�I‰IŒK÷
÷ 
÷ 
ò 
úrœ  c                ó´  a € \        \        R \        P                  R7      ;_uu_ 4        S P                  P                  R4       S P                  P                  V 3R l4      w  rpS P                  RVP                  4       S P                  RVP                  4       S P                  RVP                  4       RRR4       R#   + '       g   i     R# ; i)z-.*Malformed HTTP message.*Invalid Host headerr†  s!   GET / HTTP/1.0
Host: foo bar

c                  ó.   <€ \        S P                  4      # r*   rŠ  rT   s   €r0   r×   ÚLHTTPServerRawTest.test_invalid_host_header_with_whitespace.<locals>.<lambda>×  rŒ  r3   r�  r>  rŽ  Nr�  r“  s   f   r0   Ú(test_invalid_host_header_with_whitespaceÚ:HTTPServerRawTest.test_invalid_host_header_with_whitespaceÑ  s¤   ø€ ÜÜÐDÌGÏLÉL÷
ö 
ð �K‰K×ÑÐHÔIØ,0¯L©L×,AÑ,AÜ5ó-Ñ)ˆJ ð ×Ñ˜Z¨×);Ñ);Ô<Ø×Ñ˜S *§/¡/Ô2Ø×Ñ˜]¨J×,=Ñ,=Ô>÷
÷ 
÷ 
ò 
úr–  c                óÞ   a € S P                   P                  R P                  RR4      4       S P                  P	                  V 3R l4      w  rpS P                  \        V4      RR./4       R# )s€   POST /echo HTTP/1.1
Host: 127.0.0.1
Transfer-Encoding: chunked
Content-Type: application/x-www-form-urlencoded

4
foo=
3
bar
0

rï   rä   c                  ó.   <€ \        S P                  4      # r*   rŠ  rT   s   €r0   r×   Ú=HTTPServerRawTest.test_chunked_request_body.<locals>.<lambda>ò  ó   ø€ Ô$ T§[¡[Ô1r3   rI  rR  N©rJ   rÞ   rž   rÜ   rÝ   r†   r   r“  s   f   r0   Útest_chunked_request_bodyÚ+HTTPServerRawTest.test_chunked_request_bodyÝ  ói   ø€ ð 	�‰×Ñð÷ �GØ�wóô	
ð" )-¯©×(=Ñ(=Ü1ó)
Ñ%ˆ
˜Xð 	×Ñœ XÓ.°¸¸Ð0@ÖAr3   c                óÞ   a € S P                   P                  R P                  RR4      4       S P                  P	                  V 3R l4      w  rpS P                  \        V4      RR./4       R# )s€   POST /echo HTTP/1.1
Host: 127.0.0.1
Transfer-Encoding: Chunked
Content-Type: application/x-www-form-urlencoded

4
foo=
3
bar
0

rï   rä   c                  ó.   <€ \        S P                  4      # r*   rŠ  rT   s   €r0   r×   ÚBHTTPServerRawTest.test_chunked_request_uppercase.<locals>.<lambda>  r¨  r3   rI  rR  Nr©  r“  s   f   r0   Útest_chunked_request_uppercaseÚ0HTTPServerRawTest.test_chunked_request_uppercaseö  r¬  r3   c                ób  a € S P                   P                  R P                  RR4      4       \        \        R\
        P                  R7      ;_uu_ 4        S P                  P                  V 3R l4      w  rpRRR4       S P                  RXP                  4       R#   + '       g   i     L.; i)sb   POST /echo HTTP/1.1
Host: 127.0.0.1
Transfer-Encoding: chunked

1_a
1234567890abcdef1234567890
0

rï   rä   z.*invalid chunk sizer†  c                  ó.   <€ \        S P                  4      # r*   rŠ  rT   s   €r0   r×   ÚJHTTPServerRawTest.test_chunked_request_body_invalid_size.<locals>.<lambda>"  rŒ  r3   Nr>  )rJ   rÞ   rž   r   r   r�  r‘  rÜ   rÝ   r†   r]  r“  s   f   r0   Ú&test_chunked_request_body_invalid_sizeÚ8HTTPServerRawTest.test_chunked_request_body_invalid_size  s…   ø€ ð 	�‰×Ñð	÷ �GØ�wóô	
ô ”wÐ 6¼g¿l¹l×KÖKØ,0¯L©L×,AÑ,AÜ5ó-Ñ)ˆJ ÷ Lð 	×Ñ˜˜jŸo™oÖ.÷	 L×Kús   Á#BÂB.	c                óB  a € S P                   P                  R 4       \        \        R\        P
                  R7      ;_uu_ 4        S P                  P                  V 3R l4      w  rpRRR4       S P                  RXP                  4       R#   + '       g   i     L.; i)sc   POST /echo HTTP/1.1
Host: 127.0.0.1
Transfer-Encoding: chunked
Transfer-encoding: chunked

2
ok
0

z/.*Unsupported Transfer-Encoding chunked,chunkedr†  c                  ó.   <€ \        S P                  4      # r*   rŠ  rT   s   €r0   r×   ÚNHTTPServerRawTest.test_chunked_request_body_duplicate_header.<locals>.<lambda><  rŒ  r3   Nr>  ©
rJ   rÞ   r   r   r�  r‘  rÜ   rÝ   r†   r]  r“  s   f   r0   Ú*test_chunked_request_body_duplicate_headerÚ<HTTPServerRawTest.test_chunked_request_body_duplicate_header&  s|   ø€ ð 	�‰×Ñð
ô	
ô ÜØ=Ü—,‘,÷
ö 
ð
 -1¯L©L×,AÑ,AÜ5ó-Ñ)ˆJ ÷
ð 	×Ñ˜˜jŸo™oÖ.÷
÷ 
úó   Á#BÂB	c                óB  a € S P                   P                  R 4       \        \        R\        P
                  R7      ;_uu_ 4        S P                  P                  V 3R l4      w  rpRRR4       S P                  RXP                  4       R#   + '       g   i     L.; i)sN   POST /echo HTTP/1.1
Host: 127.0.0.1
Transfer-Encoding: gzip, chunked

2
ok
0

z-.*Unsupported Transfer-Encoding gzip, chunkedr†  c                  ó.   <€ \        S P                  4      # r*   rŠ  rT   s   €r0   r×   Ú[HTTPServerRawTest.test_chunked_request_body_unsupported_transfer_encoding.<locals>.<lambda>R  rŒ  r3   Nr>  rº  r“  s   f   r0   Ú7test_chunked_request_body_unsupported_transfer_encodingÚIHTTPServerRawTest.test_chunked_request_body_unsupported_transfer_encoding@  sy   ø€ à�‰×Ñð	ô	
ô ÜÐDÌGÏLÉL÷
ö 
ð -1¯L©L×,AÑ,AÜ5ó-Ñ)ˆJ ÷
ð 	×Ñ˜˜jŸo™oÖ.÷
÷ 
úr½  c                óB  a € S P                   P                  R 4       \        \        R\        P
                  R7      ;_uu_ 4        S P                  P                  V 3R l4      w  rpRRR4       S P                  RXP                  4       R#   + '       g   i     L.; i)sZ   POST /echo HTTP/1.1
Host: 127.0.0.1
Transfer-Encoding: chunked
Content-Length: 2

2
ok
0

z8.*Message with both Transfer-Encoding and Content-Lengthr†  c                  ó.   <€ \        S P                  4      # r*   rŠ  rT   s   €r0   r×   ÚbHTTPServerRawTest.test_chunked_request_body_transfer_encoding_and_content_length.<locals>.<lambda>k  rŒ  r3   Nr>  rº  r“  s   f   r0   Ú>test_chunked_request_body_transfer_encoding_and_content_lengthÚPHTTPServerRawTest.test_chunked_request_body_transfer_encoding_and_content_lengthV  sz   ø€ à�‰×Ñð
ô	
ô ÜØFÜ—,‘,÷
ö 
ð
 -1¯L©L×,AÑ,AÜ5ó-Ñ)ˆJ ÷
ð 	×Ñ˜˜jŸo™oÖ.÷
÷ 
úr½  c              #  ó¬  "  € . R
OpV EF	  w  r#V P                  VR7      ;_uu_ 4        \        \        \        P                  ! 4       4      4      ;_uu_ 4       p\	        \
        R\        P                  R7      ;_uu_ 4        VP                  RV P                  4       34      x € VP                  \        \        P                  ! RV R24      P                  RR4      4      4       VP                  4       x € R	R	R	4       R	R	R	4       R	R	R	4       EK  	  R	#   + '       g   i     L'; i  + '       g   i     L2; i  + '       g   i     EKH  ; i5i)Ú
alphabetic)r0  z(.*Only integer Content-Length is allowedr†  rÓ   zˆ                            POST /echo HTTP/1.1
                            Host: 127.0.0.1
                            Content-Length: zs
                            Connection: close

                            1234567890
                            Ú
z
N))rÉ  rI  )úleading plusú+10)zinternal underscoreÚ1_0)rd  r!   r   rÛ   r   r   r�  r‘  rÔ   rÕ   rÞ   r   ÚtextwrapÚdedentrž   Úread_until_close)r/   Ú
test_casesr0  r#  rJ   s   &    r0   Útest_invalid_content_lengthÚ-HTTPServerRawTest.test_invalid_content_lengtho  s   é € ò

ˆ
ô
 &‰KˆDØ—‘ 4�×(Õ(¬'´(¼6¿=º=»?Ó2K×*LÔ*LÐPVÜÜØ>Ü!Ÿ,™,÷ö ð
 !Ÿ.™.¨+°t×7IÑ7IÓ7KÐ)LÓMÒMØ—L‘LÜÜ$ŸOšOð%-ð .3¨Gð 4ð! ó	÷ &™g d¨FÓ3óôð !×1Ñ1Ó3Ò3÷)÷ +M×(Ò(ó &÷÷ ú÷ +M×*Lú×(×(Ñ(üsM   ‚'E©0D?Á)D,ÂA8DÃ:D,ÄD?Ä
EÄD)Ä$D,Ä,D<Ä7D?Ä?EÅ

Ec              #  óø  "  € RR.pV EF/  w  r#pVe"   \        \        V\        P                  R7      pM\        R 4       pV! 4       pV P                  VR7      ;_uu_ 4        \        \        \        P                  ! 4       4      4      ;_uu_ 4       pV;_uu_ 4        VP                  RV P                  4       34      x € VP                  \        V R24      4       VP                  R4      x €pV P                  VP                  RV,          4      R	V R
V: 24       RRR4       RRR4       RRR4       EK2  	  R#   + '       g   i     L'; i  + '       g   i     L2; i  + '       g   i     EKn  ; i5i)ÚFOONr†  c               3   ó   "  € R x € R # 5ir*   r`   r`   r3   r0   Únoop_contextÚ<HTTPServerRawTest.test_invalid_methods.<locals>.noop_contextŸ  s   é € åùs   ‚	)rŽ   rÓ   z# /echo HTTP/1.1
Host:127.0.0.1

ró   s   HTTP/1.1 %dzexpected status code z in )rÕ  i•  N)zFOO,BARr>  r…  )r   r   r�  r‘  r"   rd  r!   r   rÛ   rÔ   rÕ   rÞ   r   r÷   rø   rù   )	r/   rÑ  rŽ   r]  Úlog_msgr¤   r×  rJ   Úresps	   &        r0   Útest_invalid_methodsÚ&HTTPServerRawTest.test_invalid_methods‘  s,  é € ð Ø=ð
ˆ
ô &0Ñ!ˆF˜'ØÒ"Ü&¤w°¼w¿|¹|ÔL‘
ô  ñó  ðñ *›^�
à—‘ F�×+Õ+Üœ¤§¢£Ó1×2Ô2°fß’
à—n‘n k°4×3EÑ3EÓ3GÐ%HÓIÒIØ—‘œT V HÐ,UÐ"VÓWÔXØ#×.Ñ.¨{Ó;Ñ;�Ø—‘Ø—O‘O N°TÕ$9Ó:Ø+¨D¨6°°d±XÐ>ô÷ ÷ 3÷ ,Ò+ó &0÷ —
ú÷ 3×2ú÷ ,×+Ñ+üsO   ‚A E:Á"0E%ÂEÂBD?Ä EÄ(E%Ä0E:Ä?EÅ
EÅE"ÅE%Å%E7Å0
E:rÚ   )r@   rA   rB   rC   rU   rs  rw  r‚  r”  rš  rž  r£  rª  r°  rµ  r»  rÁ  rÆ  r   rÒ  rÛ  rD   rE   Ú__classcell__©rR   rF   s   @@r0   rk  rk  ¡  s{   ù‡ € ò5õ
õòò
?òòò
?òBò2Bò2/ò./ò4/ò,/ð2 ñ4ó ð4ðB ñó ÷ð r3   rk  c                   óN   a € ] tR tRt o  ! R R]4      tR tR tR tR t	Rt
V tR	# )
ÚXHeaderTesti²  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚXHeaderTest.Handleri³  c                óÚ   € V P                  R V P                  P                  4       V P                  \	        V P                  P
                  V P                  P                  R7      4       R# )úrequest-version)r  Úremote_protocolN)Ú
set_headerrl   r  rÞ   rz   r  rg   rT   s   &r0   rn   ÚXHeaderTest.Handler.get´  sI   € Ø�O‰OÐ-¨t¯|©|×/CÑ/CÔDØ�J‰JÜØ"Ÿl™l×4Ñ4Ø$(§L¡L×$9Ñ$9ôör3   r`   N©r@   rA   rB   rC   rn   rD   rE   ra   s   @r0   rS   râ  ³  s   ø‡ € ÷	ð 	r3   rS   c                ó   € \        R R.R7      # )Tz5.5.5.5)ÚxheadersÚtrusted_downstream©rz   rT   s   &r0   Úget_httpserver_optionsÚ"XHeaderTest.get_httpserver_options½  s   € Ü˜T°y°kÔBÐBr3   c                óÚ  € V P                  V P                  R 4      R,          R4       RR/pV P                  V P                  R VR7      R,          R4       RR/pV P                  V P                  R VR7      R,          R4       RR/pV P                  V P                  R VR7      R,          R4       RR	/pV P                  V P                  R VR7      R,          R4       RR
/pV P                  V P                  R VR7      R,          R4       RR/pV P                  V P                  R VR7      R,          R4       RR/pV P                  V P                  R VR7      R,          R4       R# )rQ   r  rÓ   z	X-Real-IPú4.4.4.4rX  úX-Forwarded-Forz127.0.0.1, 4.4.4.4z2620:0:1cfe:face:b00c::3z::1, 2620:0:1cfe:face:b00c::3z4.4.4.4<script>z4.4.4.4, 5.5.5.5<script>zwww.google.comN©r†   r^   )r/   Ú
valid_ipv4Úvalid_ipv4_listÚ
valid_ipv6Úvalid_ipv6_listÚinvalid_charsÚinvalid_chars_listÚinvalid_hosts   &       r0   Útest_ip_headersÚXHeaderTest.test_ip_headersÀ  s  € Ø×Ñ˜Ÿ™¨Ó-¨kÕ:¸KÔHà! 9Ð-ˆ
Ø×ÑØ�O‰O˜C¨ˆOÓ4°[ÕAÀ9ô	
ð -Ð.BÐCˆØ×ÑØ�O‰O˜C¨ˆOÓ9¸+ÕFÈ	ô	
ð "Ð#=Ð>ˆ
Ø×ÑØ�O‰O˜C¨ˆOÓ4°[ÕAØ&ô	
ð
 -Ð.MÐNˆØ×ÑØ�O‰O˜C¨ˆOÓ9¸+ÕFØ&ô	
ð
 %Ð&7Ð8ˆØ×ÑØ�O‰O˜C¨ˆOÓ7¸ÕDÀkô	
ð 0Ð1KÐLÐØ×ÑØ�O‰O˜CÐ);ˆOÓ<¸[ÕIÈ;ô	
ð $Ð%5Ð6ˆØ×ÑØ�O‰O˜C¨ˆOÓ6°{ÕCÀ[ö	
r3   c                ó  € R R/pV P                  RVR7      pVP                  R,          P                  R4      '       d   V P                  R4       \	        VP
                  4      pV P                  VR,          R4       R	# )
rñ  z127.0.0.1, 4.4.4.4, 5.5.5.5rQ   rX  rä  zHTTP/2úrequires HTTP/1.xr  rð  N)rX   r,   rù   ÚskipTestr   rZ   r†   )r/   rô  rÚ  Úresults   &   r0   Útest_trusted_downstreamÚ#XHeaderTest.test_trusted_downstreamè  sl   € Ø,Ð.KÐLˆØ�z‰z˜# ˆzÓ7ˆØ�<‰<Ð)Õ*×5Ñ5°h×?Ò?ð �M‰MÐ-Ô.Ü˜TŸY™YÓ'ˆØ×Ñ˜ Õ,¨iÖ8r3   c                ó"  € V P                  V P                  R 4      R,          R4       RR/pV P                  V P                  R VR7      R,          R4       RR/pV P                  V P                  R VR7      R,          R4       RR/pV P                  V P                  R VR7      R,          R4       RR/pV P                  V P                  R VR7      R,          R4       RR	/pV P                  V P                  R VR7      R,          R4       R
# )rQ   rå  rt   úX-Schemerx   rX  zX-Forwarded-Protozhttps , httpz
http,httpsÚunknownNrò  )r/   Úhttps_schemeÚhttps_forwardedÚhttps_multi_forwardedÚhttp_multi_forwardedÚbad_forwardeds   &     r0   Útest_scheme_headersÚXHeaderTest.test_scheme_headersò  s  € Ø×Ñ˜Ÿ™¨Ó-Ð.?Õ@À&ÔIà" GÐ,ˆØ×ÑØ�O‰O˜C¨ˆOÓ6Ð7HÕIÈ7ô	
ð /°Ð8ˆØ×ÑØ�O‰O˜C¨ˆOÓ9Ð:KÕLÈgô	
ð "5°nÐ EÐØ×ÑØ�O‰O˜CÐ)>ˆOÓ?Ð@QÕRØô	
ð
 !4°\ÐBÐØ×ÑØ�O‰O˜CÐ)=ˆOÓ>Ð?PÕQØô	
ð
 -¨iÐ8ˆØ×ÑØ�O‰O˜C¨ˆOÓ7Ð8IÕJÈFö	
r3   r`   N)r@   rA   rB   rC   r   rS   rí  rú  r   r
  rD   rE   ra   s   @r0   rà  rà  ²  s,   ø‡ € ô�.ô òCò&
òP9÷
ð 
r3   rà  c                   ó>   a a€ ] tR tRt oR tV 3R ltR tRtVtV ;t	# )ÚSSLXHeaderTesti  c                ó:   € \        R \        P                  3.4      # rP   )r   rà  rS   rT   s   &r0   rU   ÚSSLXHeaderTest.get_app  s   € Ü˜S¤+×"5Ñ"5Ð6Ð7Ó8Ð8r3   c                ó.   <€ \         SV `  4       pR VR&   V# )Trê  )rr  rí  )r/   ÚoutputrR   s   & €r0   rí  Ú%SSLXHeaderTest.get_httpserver_options  s   ø€ Ü‘Ñ/Ó1ˆØ!ˆˆzÑØˆr3   c                ó  € V P                  V P                  R 4      R,          R4       RR/pV P                  V P                  R VR7      R,          R4       RR/pV P                  V P                  R VR7      R,          R4       R# )rQ   rå  rx   r  rt   rX  r  Nrò  )r/   Úhttp_schemeÚ
bad_schemes   &  r0   Útest_request_without_xprotocolÚ-SSLXHeaderTest.test_request_without_xprotocol  sƒ   € Ø×Ñ˜Ÿ™¨Ó-Ð.?Õ@À'ÔJà! 6Ð*ˆØ×ÑØ�O‰O˜C¨ˆOÓ5Ð6GÕHÈ&ô	
ð ! )Ð,ˆ
Ø×ÑØ�O‰O˜C¨ˆOÓ4Ð5FÕGÈö	
r3   r`   )
r@   rA   rB   rC   rU   rí  r  rD   rE   rÝ  rÞ  s   @@r0   r  r    s   ù‡ € ò9õ÷

ò 
r3   r  c                   óB   a € ] tR tRt o  ! R R]4      tR tR tRtV t	R# )ÚManualProtocolTesti(  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚManualProtocolTest.Handleri)  c                ód   € V P                  \        V P                  P                  R 7      4       R# )ry   N)rÞ   rz   rl   rg   rT   s   &r0   rn   ÚManualProtocolTest.Handler.get*  s   € Ø�J‰J”t T§\¡\×%:Ñ%:Ô;Ö<r3   r`   Nrè  ra   s   @r0   rS   r  )  s   ø‡ € ÷	=ð 	=r3   rS   c                ó   € \        R R7      # )rx   ry   rì  rT   s   &r0   rí  Ú)ManualProtocolTest.get_httpserver_options-  s   € Ü˜WÔ%Ð%r3   c                óV   € V P                  V P                  R 4      R,          R4       R# )rQ   rg   rx   Nrò  rT   s   &r0   Útest_manual_protocolÚ'ManualProtocolTest.test_manual_protocol0  s    € Ø×Ñ˜Ÿ™¨Ó-¨jÕ9¸7ÖCr3   r`   N)
r@   rA   rB   rC   r   rS   rí  r!  rD   rE   ra   s   @r0   r  r  (  s"   ø‡ € ô=�.ô =ò&÷Dð Dr3   r  c                   óf   a a€ ] tR tRt oRtRtV 3R ltV 3R lt]R 4       t	]R 4       t
RtVtV ;t# )	ÚUnixSocketTesti4  am  HTTPServers can listen on Unix sockets too.

Why would you want to do this?  Nginx can proxy to backends listening
on unix sockets, for one thing (and managing a namespace for unix
sockets can be easier than managing a bunch of TCP port numbers).

Unfortunately, there's no way to specify a unix socket in a url for
an HTTP client, so we have to test this by hand.
rN  c                óÚ   <€ \         SV `  4        \        R \        3.4      p\	        V4      V n        V P
                  P                  \        P                  ! V P                  4      4       R# )rË   N)
rr  rs  r   rc   r   ÚserverÚ
add_socketr   Úbind_unix_socketÚaddress)r/   ÚapprR   s   & €r0   rs  ÚUnixSocketTest.setUpB  sK   ø€ Ü‰‰ŒÜ˜HÔ&>Ð?Ð@ÓAˆÜ  “oˆŒØ�‰×Ñœw×7Ò7¸¿¹ÓEÖFr3   c                ó¶   <€ V P                   P                  V P                  P                  4       V P                  P	                  4        \
        SV `  4        R # r*   )rÜ   rÝ   r&  Úclose_all_connectionsr€  rr  rw  rt  s   &€r0   rw  ÚUnixSocketTest.tearDownH  s:   ø€ Ø�‰×Ñ˜dŸk™k×?Ñ?Ô@Ø�‰×ÑÔÜ‰ÑÖr3   c              #  ó@  "  € \        \        \        P                  ! \        P                  4      4      4      ;_uu_ 4       pVP	                  V P
                  4       VP                  R 4       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P                  \        VR,          4      4      x €pV P                  VR4       RRR4       R#   + '       g   i     R# ; i5i)s   GET /hello HTTP/1.0

rä   s   HTTP/1.1 200 OK
ró   rõ   rö   r„   N)r!   r   rÛ   ÚAF_UNIXrÔ   r)  rÞ   r÷   r†   r   rú   rû   rü   rý   )r/   rJ   r]   r   r,   rZ   s   &     r0   Útest_unix_socketÚUnixSocketTest.test_unix_socketM  sÏ   é € ä”XœfŸmšm¬F¯N©NÓ;Ó<×=Ô=ÀØ�N‰N˜4Ÿ<™<Ô(Ø�L‰LÐ7Ô8Ø#×.Ñ.¨wÓ7Ñ7ˆHØ×Ñ˜XÐ'=Ô>Ø &× 1Ñ 1°+Ó >Ñ>ˆKÜ!×'Ò'¨×(:Ñ(:¸8Ó(DÓEˆGØ×*Ñ*¬3¨wÐ7GÕ/HÓ+IÓJÑJˆDØ×Ñ˜T >Ô2÷ >×=×=Ò=üs   ‚?DÁB?D
Ä 
DÄ
D	Ä	Dc           	   #  óê  "  € \        \        R \        P                  R7      ;_uu_ 4        \	        \        \        P                  ! \        P                  4      4      4      ;_uu_ 4       pVP                  V P                  4       VP                  R4       VP                  4       x €pRRR4       RRR4       V P                  XR4       R#   + '       g   i     L,; i  + '       g   i     L7; i5i)zMalformed HTTP message fromr†  s   garbage

Nó   HTTP/1.1 400 Bad Request

)r   r   r�  r‘  r!   r   rÛ   r0  rÔ   r)  rÞ   rÐ  r†   ©r/   rJ   r]   s   &  r0   Útest_unix_socket_bad_requestÚ+UnixSocketTest.test_unix_socket_bad_requestY  sš   é € ô ”wÐ =ÄWÇ\Á\×RÖRÜœ¤&§-¢-´·±Ó"?Ó@×AÔAÀVØ—‘˜tŸ|™|Ô,Ø—‘Ð/Ô0Ø!'×!8Ñ!8Ó!:Ñ:�÷ B÷ Sð
 	×Ñ˜Ð#FÖG÷	 B×Aú÷ S×Rüs4   ‚)C3«?C Á*?C	Â)C Â1C3ÃCÃC Ã C0	Ã+C3)r&  )r@   rA   rB   rC   Ú__doc__r)  rs  rw  r   r1  r6  rD   rE   rÝ  rÞ  s   @@r0   r$  r$  4  sL   ù‡ € ñð €GõGõð
 ñ	3ó ð	3ð ñHó ÷Hð Hr3   r$  r0  Úcygwinz+unix sockets not supported on this platformc                   ó>   a a€ ] tR tRt oV 3R ltV 3R ltRtVtV ;t# )ÚUnixSocketTestFileie  c                ó¶   <€ \         P                  ! 4       V n        \        P                  P                  V P                  R 4      V n        \        SV `!  4        R# )z	test.sockN)	ÚtempfileÚmkdtempÚtmpdirr³   r´   rI   r)  rr  rs  rt  s   &€r0   rs  ÚUnixSocketTestFile.setUpj  s6   ø€ Ü×&Ò&Ó(ˆŒÜ—w‘w—|‘| D§K¡K°Ó=ˆŒÜ‰‰Žr3   c                ód   <€ \         SV `  4        \        P                  ! V P                  4       R # r*   )rr  rw  ÚshutilÚrmtreer?  rt  s   &€r0   rw  ÚUnixSocketTestFile.tearDowno  s   ø€ Ü‰ÑÔÜ�Š�d—k‘kÖ"r3   )r)  r?  )	r@   rA   rB   rC   rs  rw  rD   rE   rÝ  rÞ  s   @@r0   r;  r;  e  s   ù‡ € õ
÷
#õ #r3   r;  Úlinuxz>abstract namespace unix sockets not supported on this platformc                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )ÚUnixSocketTestAbstractit  c                óz   <€ R \         P                  ! 4       P                  ,           V n        \        SV `  4        R# )Ú N)ÚuuidÚuuid4Úhexr)  rr  rs  rt  s   &€r0   rs  ÚUnixSocketTestAbstract.setUpy  s$   ø€ ØœdŸjšj›l×.Ñ.Õ.ˆŒÜ‰‰Žr3   )r)  )r@   rA   rB   rC   rs  rD   rE   rÝ  rÞ  s   @@r0   rG  rG  t  s   ù‡ € ÷
õ r3   rG  c                   ój  a a€ ] tR tRt oRtR tV 3R ltV 3R lt]P                  R 4       t
]P                  R 4       t]P                  R 4       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tVtV ;t# )ÚKeepAliveTesti~  z™Tests various scenarios for HTTP 1.1 keep-alive support.

These tests don't use AsyncHTTPClient because we want to control
connection reuse and closing.
c                óð   €  ! R  R\         4      p ! R R\         4      p ! R R\         4      p ! R R\         4      p\        4       V n        \        RV3R	V3R
V3RV\	        V P                  R7      3.4      # )c                   ó,   a € ] tR tRt o R tR tRtV tR# )Ú+KeepAliveTest.get_app.<locals>.HelloHandleri†  c                ó(   € V P                  R 4       R# ©rk   N©r>   rT   s   &r0   rn   Ú/KeepAliveTest.get_app.<locals>.HelloHandler.get‡  ó   € Ø—‘˜MÖ*r3   c                ó(   € V P                  R 4       R# rT  rU  rT   s   &r0   rr   Ú0KeepAliveTest.get_app.<locals>.HelloHandler.postŠ  rW  r3   r`   Nr  ra   s   @r0   ÚHelloHandlerrR  †  s   ø‡ € ò+÷+ð +r3   rZ  c                   ó&   a € ] tR tRt o R tRtV tR# )Ú+KeepAliveTest.get_app.<locals>.LargeHandleri�  c                óf   € V P                  R P                  R \        R4       4       4      4       R# )rN  c              3   óT   "  € T F  p\        VR ,          4      R,          x € K   	  R# 5i)é   é   N)Úchr)Ú.0Úis   & r0   Ú	<genexpr>ÚBKeepAliveTest.get_app.<locals>.LargeHandler.get.<locals>.<genexpr>‘  s    é € Ð"KÁ
¸1¤3 q¨3¥w£<°$×#6Ò#6Ã
ùó   ‚&(i   N)rÞ   rI   ÚrangerT   s   &r0   rn   Ú/KeepAliveTest.get_app.<locals>.LargeHandler.getŽ  s#   € ð —
‘
˜2Ÿ7™7Ñ"KÄÀcÄ
Ó"KÓKÖLr3   r`   Nrè  ra   s   @r0   ÚLargeHandlerr\  �  s   ø‡ € ÷Mð Mr3   ri  c                   óD   a € ] tR tRt o ]P
                  R 4       tRtV tR# )Ú=KeepAliveTest.get_app.<locals>.TransferEncodingChunkedHandleri“  c              3  óT   "  € V P                  R 4       V P                  4       x € R# 5irT  )rÞ   ÚflushrT   s   &r0   ÚheadÚBKeepAliveTest.get_app.<locals>.TransferEncodingChunkedHandler.head”  s   é € à—
‘
˜=Ô)Ø—j‘j“lÔ"ùrf  r`   N)	r@   rA   rB   rC   r   Ú	coroutinern  rD   rE   ra   s   @r0   ÚTransferEncodingChunkedHandlerrk  “  s   ø‡ € Ø�]‰]ñ#ó ö#r3   rq  c                   óP   a € ] tR tRt o R t]P                  R 4       tR tRt	V t
R# )Ú3KeepAliveTest.get_app.<locals>.FinishOnCloseHandleri™  c                ó   € Wn         R # r*   ©Úcleanup_event)r/   rv  s   &&r0   rh   Ú>KeepAliveTest.get_app.<locals>.FinishOnCloseHandler.initializeš  s   € Ø%2Ö"r3   c              3  óf   "  € V P                  4        V P                  P                  4       x € R # 5ir*   )rm  rv  r�  rT   s   &r0   rn   Ú7KeepAliveTest.get_app.<locals>.FinishOnCloseHandler.get�  s#   é € à—
‘
”Ø×(Ñ(×-Ñ-Ó/Ô/ùs   ‚/1c                ó(   € V P                  R 4       R# )ÚclosedNrU  rT   s   &r0   Úon_connection_closeÚGKeepAliveTest.get_app.<locals>.FinishOnCloseHandler.on_connection_close¢  s   € ð —‘˜HÖ%r3   ru  N)r@   rA   rB   rC   rh   r   rp  rn   r|  rD   rE   ra   s   @r0   ÚFinishOnCloseHandlerrs  ™  s,   ø‡ € ò3ð �]‰]ñ0ó ð0÷&ð &r3   r~  rQ   z/largez/chunkedz/finish_on_closeru  )r   r   rv  r   rz   )r/   rZ  ri  rq  r~  s   &    r0   rU   ÚKeepAliveTest.get_app…  s„   € ô	+œ>ô 	+ô	Mœ>ô 	Mô	#¬^ô 	#ô	&¤>ô 	&ô #›WˆÔÜà�lÐ#Ø˜<Ð(ØÐ;Ð<à&Ø(Ü t×'9Ñ'9Ô:ðð		ó
ð 	
r3   c                ó2   <€ \         SV `  4        R V n        R# )s   HTTP/1.1N)rr  rs  Úhttp_versionrt  s   &€r0   rs  ÚKeepAliveTest.setUp¶  s   ø€ Ü‰‰ŒØ'ˆÖr3   c                ó  <€ V P                   P                  \        P                  ! R R7      V P                  4       V P                  4        \        V R4      '       d   V P                  P                  4        \        SV `)  4        R# )rz  r{  rJ   N)rÜ   r}  r~  r  r€  r�  ÚhasattrrJ   rþ   rr  rw  rt  s   &€r0   rw  ÚKeepAliveTest.tearDownº  sY   ø€ ð 	�‰× Ñ ¤×!3Ò!3¸EÔ!BÀDÇIÁIÔNØ�	‰	Œä�4˜×"Ò"Ø�K‰K×ÑÔÜ‰ÑÖr3   c              #  ó®   "  € \        \        P                  ! 4       4      V n        V P                  P                  R V P	                  4       34      x € R# 5i)rÓ   N)r   rÛ   rJ   rÔ   rÕ   rT   s   &r0   rÔ   ÚKeepAliveTest.connectÅ  s:   é € äœvŸ}š}›Ó/ˆŒØ�k‰k×!Ñ! ;°×0BÑ0BÓ0DÐ"EÓFÔFùs   ‚AAc              #  ó6  "  € V P                   P                  R 4      x €pV P                  VP                  R4      V4       V P                   P                  R4      x €p\        P
                  ! VP                  R4      4      p\        P                  ! V4      h5i)rä   rô   ró   rõ   )	rJ   r÷   rø   rù   r   rú   rû   r   ÚReturn)r/   rÿ   Úheader_bytesr,   s   &   r0   Úread_headersÚKeepAliveTest.read_headersÊ  sv   é € àŸ;™;×1Ñ1°'Ó:Ñ:ˆ
Ø�‰˜
×-Ñ-¨oÓ>À
ÔKØ!Ÿ[™[×3Ñ3°KÓ@Ñ@ˆÜ×#Ò# L×$7Ñ$7¸Ó$AÓBˆÜ�jŠj˜Ó!Ð!ùs   ‚BBc              #  óÎ   "  € V P                  4       x €V n        V P                  P                  \	        V P                  R ,          4      4      x €pV P                  RV4       R# 5i)rö   r„   N)r‹  r,   rJ   rü   rý   r†   )r/   rZ   s   & r0   rH   ÚKeepAliveTest.read_responseÒ  sN   é € à!×.Ñ.Ó0Ñ0ˆŒØ—[‘[×+Ñ+¬C°·±Ð=MÕ0NÓ,OÓPÑPˆØ×Ñ˜¨Ö.ùs   ‚A#A%c                ó>   € V P                   P                  4        V = R # r*   )rJ   rþ   rT   s   &r0   rþ   ÚKeepAliveTest.closeØ  s   € Ø�‰×ÑÔØŠKr3   c              #  ó  "  € V P                  4       x € V P                  P                  R 4       V P                  4       x € V P                  P                  R 4       V P                  4       x € V P	                  4        R# 5i)s"   GET / HTTP/1.1
Host:127.0.0.1

N©rÔ   rJ   rÞ   rH   rþ   rT   s   &r0   Útest_two_requestsÚKeepAliveTest.test_two_requestsÜ  s^   é € à�l‰l‹nÒØ�‰×ÑÐEÔFØ× Ñ Ó"Ò"Ø�‰×ÑÐEÔFØ× Ñ Ó"Ò"Ø�
‰
Žùó   ‚A?Bc              #  óV  "  € V P                  4       x € V P                  P                  R 4       V P                  4       x € V P                  P	                  4       x €pV P                  V'       * 4       V P                  V P                  R,          R4       V P                  4        R# 5i)s5   GET / HTTP/1.1
Host:127.0.0.1
Connection: close

Ú
Connectionrþ   N)	rÔ   rJ   rÞ   rH   rÐ  rø   r†   r,   rþ   ©r/   rë   s   & r0   Útest_request_closeÚ KeepAliveTest.test_request_closeå  s|   é € à�l‰l‹nÒØ�‰×ÑØLô	
ð × Ñ Ó"Ò"Ø—[‘[×1Ñ1Ó3Ñ3ˆØ�‰˜DœÔ!Ø×Ñ˜Ÿ™ lÕ3°WÔ=Ø�
‰
Žùó   ‚B'B)c              #  óL  "  € R V n         V P                  4       x € V P                  P                  R4       V P	                  4       x € V P                  P                  4       x €pV P                  V4       V P                  RV P                  4       V P                  4        R# 5i)ó   HTTP/1.0s   GET / HTTP/1.0

r—  N)
r�  rÔ   rJ   rÞ   rH   rÐ  r¢   ÚassertNotInr,   rþ   r˜  s   & r0   Útest_http10ÚKeepAliveTest.test_http10ò  s{   é € à'ˆÔØ�l‰l‹nÒØ�‰×ÑÐ3Ô4Ø× Ñ Ó"Ò"Ø—[‘[×1Ñ1Ó3Ñ3ˆØ×Ñ˜ÔØ×Ñ˜ t§|¡|Ô4Ø�
‰
Žùs   ‚B"B$c              #  ó   "  € R V n         V P                  4       x € V P                  P                  R4       V P	                  4       x € V P                  V P                  R,          R4       V P                  P                  R4       V P	                  4       x € V P                  V P                  R,          R4       V P                  4        R# 5i)r�  ó*   GET / HTTP/1.0
Connection: keep-alive

r—  ú
Keep-AliveN©r�  rÔ   rJ   rÞ   rH   r†   r,   rþ   rT   s   &r0   Útest_http10_keepaliveÚ#KeepAliveTest.test_http10_keepaliveý  s˜   é € à'ˆÔØ�l‰l‹nÒØ�‰×ÑÐMÔNØ× Ñ Ó"Ò"Ø×Ñ˜Ÿ™ lÕ3°\ÔBØ�‰×ÑÐMÔNØ× Ñ Ó"Ò"Ø×Ñ˜Ÿ™ lÕ3°\ÔBØ�
‰
Žùó   ‚CCc              #  ó   "  € R V n         V P                  4       x € V P                  P                  R4       V P	                  4       x € V P                  V P                  R,          R4       V P                  P                  R4       V P	                  4       x € V P                  V P                  R,          R4       V P                  4        R# 5i)r�  s,   GET / HTTP/1.0
Connection: keep-alive


r—  r£  r¢  Nr¤  rT   s   &r0   Ú test_http10_keepalive_extra_crlfÚ.KeepAliveTest.test_http10_keepalive_extra_crlf	  s˜   é € à'ˆÔØ�l‰l‹nÒØ�‰×ÑÐQÔRØ× Ñ Ó"Ò"Ø×Ñ˜Ÿ™ lÕ3°\ÔBØ�‰×ÑÐMÔNØ× Ñ Ó"Ò"Ø×Ñ˜Ÿ™ lÕ3°\ÔBØ�
‰
Žùr§  c              #  óÐ   "  € V P                  4       x € V P                  P                  R 4       V P                  4       x € V P                  4       x € V P	                  4        R# 5i©sD   GET / HTTP/1.1
Host:127.0.0.1

GET / HTTP/1.1
Host:127.0.0.1

Nr’  rT   s   &r0   Útest_pipelined_requestsÚ%KeepAliveTest.test_pipelined_requests  sO   é € à�l‰l‹nÒØ�‰×ÑØ_ô	
ð × Ñ Ó"Ò"Ø× Ñ Ó"Ò"Ø�
‰
Žùs   ‚A$A&c              #  ó¬   "  € V P                  4       x € V P                  P                  R 4       V P                  4       x € V P	                  4        R# 5ir¬  r’  rT   s   &r0   Útest_pipelined_cancelÚ#KeepAliveTest.test_pipelined_cancel  s@   é € à�l‰l‹nÒØ�‰×ÑØ_ô	
ð × Ñ Ó"Ò"Ø�
‰
Žùs   ‚AAc              #  óæ   "  € V P                  4       x € V P                  P                  R 4       V P                  4       x € V P                  P	                  R4      x € V P                  4        R# 5i)s'   GET /large HTTP/1.1
Host:127.0.0.1

r`  N)rÔ   rJ   rÞ   r‹  rü   rþ   rT   s   &r0   Útest_cancel_during_downloadÚ)KeepAliveTest.test_cancel_during_download)  sQ   é € à�l‰l‹nÒØ�‰×ÑÐJÔKØ×ÑÓ!Ò!Ø�k‰k×$Ñ$ TÓ*Ò*Ø�
‰
Žùs   ‚A/A1c              #  óà   "  € V P                  4       x € V P                  P                  R 4       V P                  4       x € V P	                  4        V P
                  P                  4        R# 5i)s1   GET /finish_on_close HTTP/1.1
Host:127.0.0.1

N)rÔ   rJ   rÞ   r‹  rþ   rv  ÚsetrT   s   &r0   Útest_finish_while_closedÚ&KeepAliveTest.test_finish_while_closed1  sN   é € à�l‰l‹nÒØ�‰×ÑÐTÔUØ×ÑÓ!Ò!Ø�
‰
Œà×Ñ×ÑÖ ùs   ‚A,A.c              #  ó   "  € R V n         V P                  4       x € V P                  P                  R4       V P	                  4       x € V P                  V P                  R,          R4       V P                  P                  R4       V P	                  4       x € V P                  V P                  R,          R4       V P                  4        R# 5i)r�  sL   POST / HTTP/1.0
Connection: keep-alive
Transfer-Encoding: chunked

0

r—  r£  r¢  Nr¤  rT   s   &r0   Útest_keepalive_chunkedÚ$KeepAliveTest.test_keepalive_chunked:  sž   é € à'ˆÔØ�l‰l‹nÒØ�‰×Ñðô	
ð × Ñ Ó"Ò"Ø×Ñ˜Ÿ™ lÕ3°\ÔBØ�‰×ÑÐMÔNØ× Ñ Ó"Ò"Ø×Ñ˜Ÿ™ lÕ3°\ÔBØ�
‰
Žùr§  c              #  ó  "  € V P                  4       x € V P                  P                  R 4       V P                  4       x € V P                  P                  R 4       V P                  4       x € V P	                  4        R# 5i)s*   HEAD /chunked HTTP/1.1
Host:127.0.0.1

N)rÔ   rJ   rÞ   r‹  rþ   rT   s   &r0   Ú#test_keepalive_chunked_head_no_bodyÚ1KeepAliveTest.test_keepalive_chunked_head_no_bodyM  s^   é € à�l‰l‹nÒØ�‰×ÑÐMÔNØ×ÑÓ!Ò!à�‰×ÑÐMÔNØ×ÑÓ!Ò!Ø�
‰
Žùr•  )rv  r,   r�  rJ   )r@   rA   rB   rC   r8  rU   rs  rw  r   rp  rÔ   r‹  rH   rþ   r   r“  r™  rŸ  r¥  r©  r­  r°  r³  r·  rº  r½  rD   rE   rÝ  rÞ  s   @@r0   rO  rO  ~  sJ  ù‡ € ñò/
õb(õð 	‡]�]ñGó ðGð 	‡]�]ñ"ó ð"ð 	‡]�]ñ/ó ð/ò
ð ñó ðð ñ	ó ð	ð ñó ðð ñ	ó ð	ð ñ	ó ð	ð ñó ðð ñó ðð ñó ðð ñ!ó ð!ð ñó ðð$ ñó ÷ð r3   rO  c                   ó2   a € ] tR tRt o R tR tR tRtV tR# )ÚGzipBaseTestiX  c                ó&   € \        R \        3.4      # rP   rm  rT   s   &r0   rU   ÚGzipBaseTest.get_appY  s   € Ü˜S¤+Ð.Ð/Ó0Ð0r3   c                óè   € \        4       p\        P                  ! R VR7      pVP                  \	        V4      4       VP                  4        VP                  4       pV P                  RRVRR/R7      # )Úw©ÚmodeÚfileobjrQ   r‹   úContent-EncodingÚgziprY  )r#   rÉ  ÚGzipFilerÞ   r   rþ   ÚgetvaluerX   )r/   rZ   ÚbytesioÚ	gzip_fileÚcompressed_bodys   &&   r0   Ú	post_gzipÚGzipBaseTest.post_gzip\  sh   € Ü“)ˆÜ—M’M s°GÔ<ˆ	Ø�‰œ˜T›
Ô#Ø�‰ÔØ!×*Ñ*Ó,ˆØ�z‰zØØØ Ø'¨Ð0ð	 ó 
ð 	
r3   c                ó~   € V P                  R RRR7      pV P                  \        VP                  4      RR./4       R# )rQ   r‹   rW  r�   rI  rR  N)rX   r†   r   rZ   r‡   s   & r0   Útest_uncompressedÚGzipBaseTest.test_uncompressedi  s6   € Ø—:‘:˜c¨&°y�:ÓAˆØ×Ñœ X§]¡]Ó3°e¸e¸WÐ5EÖFr3   r`   N)	r@   rA   rB   rC   rU   rÏ  rÒ  rD   rE   ra   s   @r0   rÀ  rÀ  X  s   ø‡ € ò1ò
÷Gð Gr3   rÀ  c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )ÚGzipTestin  c                ó   € \        R ^dR7      # )T)Údecompress_requestÚmax_body_sizerì  rT   s   &r0   rí  ÚGzipTest.get_httpserver_optionso  s   € Ü t¸3Ô?Ð?r3   c                óx   € V P                  R 4      pV P                  \        VP                  4      RR./4       R# )rW  rI  rR  N)rÏ  r†   r   rZ   r‡   s   & r0   Ú	test_gzipÚGzipTest.test_gzipr  s0   € Ø—>‘> )Ó,ˆØ×Ñœ X§]¡]Ó3°e¸e¸WÐ5EÖFr3   c                ó<  € \        4       p\        P                  ! R VR7      pVP                  \	        R4      4       VP                  4        VP                  4       pV P                  RRVRR/R7      pV P                  \        VP                  4      RR	./4       R
# )rÄ  rÅ  rW  rQ   r‹   rÈ  ÚGZIPrY  rI  rR  N)r#   rÉ  rÊ  rÞ   r   rþ   rË  rX   r†   r   rZ   )r/   rÌ  rÍ  rÎ  r]   s   &    r0   Útest_gzip_case_insensitiveÚ#GzipTest.test_gzip_case_insensitivev  s‡   € ä“)ˆÜ—M’M s°GÔ<ˆ	Ø�‰œ˜Y›Ô(Ø�‰ÔØ!×*Ñ*Ó,ˆØ—:‘:ØØØ Ø'¨Ð0ð	 ó 
ˆð 	×Ñœ X§]¡]Ó3°e¸e¸WÐ5EÖFr3   c                ó²   € \        \        R \        P                  R7      ;_uu_ 4        V P	                  R4       RRR4       R#   + '       g   i     R# ; i)z.*decompressed body too larger†  NÚexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r   r   r�  r‘  rÏ  rT   s   &r0   Útest_size_limitÚGzipTest.test_size_limit…  s2   € Ü”wÐ ?ÄwÇ|Á|×TÖTØ�N‰N˜9Ô%÷ U×T×TÒTús   ©AÁA	r`   N)
r@   rA   rB   rC   rí  rÛ  rß  rã  rD   rE   ra   s   @r0   rÕ  rÕ  n  s!   ø‡ € ò@òGòG÷&ð &r3   rÕ  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚGzipUnsupportedTestiŠ  c                óÈ   € \        \        R 4      ;_uu_ 4        V P                  R4      pRRR4       V P                  XP                  R4       R#   + '       g   i     L.; i)z.*Unsupported Content-EncodingrW  Nr>  )r   r   rÏ  r†   r]  r‡   s   & r0   Útest_gzip_unsupportedÚ)GzipUnsupportedTest.test_gzip_unsupported‹  sD   € ô ”wÐ @×AÕAØ—~‘~ iÓ0ˆH÷ Bà×Ñ˜Ÿ™¨Ö,÷ B×Aús   ™AÁA!	r`   N)r@   rA   rB   rC   rè  rD   rE   ra   s   @r0   ræ  ræ  Š  s   ø‡ € ÷-ð -r3   ræ  c                   ót   a € ] tR tRt o Rt^tR tR t ! R R]4      t	R t
R tR	 tR
 tR tR tR tRtV tR# )ÚStreamingChunkSizeTesti”  s2   01234567890123456789012345678901234567890123456789c                ó   € \        4       # r*   r   rT   s   &r0   Úget_http_clientÚ&StreamingChunkSizeTest.get_http_client™  ó   € ô %Ó&Ð&r3   c                ó0   € \        V P                  R R7      # )T)Ú
chunk_sizer×  )rz   Ú
CHUNK_SIZErT   s   &r0   rí  Ú-StreamingChunkSizeTest.get_httpserver_optionsž  s   € Ü˜tŸ™À4ÔHÐHr3   c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )Ú&StreamingChunkSizeTest.MessageDelegatei¡  c                ó   € Wn         R # r*   ©Ú
connection©r/   rø  s   &&r0   Ú__init__Ú/StreamingChunkSizeTest.MessageDelegate.__init__¢  ó   € Ø(ŽOr3   c                ó   € . V n         R # r*   )Úchunk_lengthsr.   s   &&&r0   r1   Ú7StreamingChunkSizeTest.MessageDelegate.headers_received¥  s
   € Ø!#ˆDÖr3   c                óN   € V P                   P                  \        V4      4       R # r*   )rþ  r5   rq   )r/   r6   s   &&r0   r8   Ú4StreamingChunkSizeTest.MessageDelegate.data_received¨  s   € Ø×Ñ×%Ñ%¤c¨%£jÖ1r3   c                ó4  € \        \        V P                  4      4      pV P                  P	                  \        R ^ÈR4      \        R\        \        V4      4      /4      4       V P                  P                  V4       V P                  P                  4        R# )r�  ÚOKrö   N)r   r   rþ  rø  Úwrite_headersr   r   r  rq   rÞ   r>   )r/   Úresponse_bodys   & r0   r>   Ú-StreamingChunkSizeTest.MessageDelegate.finish«  sq   € Ü ¤¨T×-?Ñ-?Ó!@ÓAˆMØ�O‰O×)Ñ)Ü! *¨c°4Ó8ÜÐ-¬s´3°}Ó3EÓ/FÐGÓHôð �O‰O×!Ñ! -Ô0Ø�O‰O×"Ñ"Ö$r3   )rþ  rø  N)
r@   rA   rB   rC   rú  r1   r8   r>   rD   rE   ra   s   @r0   ÚMessageDelegaterõ  ¡  s   ø‡ € ò	)ò	$ò	2÷	%ð 	%r3   r  c                ó.   €  ! R  R\         4      pV! 4       # )c                   ó&   a € ] tR tRt o R tRtV tR# )Ú+StreamingChunkSizeTest.get_app.<locals>.Appiµ  c                ó,   € \         P                  V4      # r*   )rë  r  ©r/   Úserver_connÚrequest_conns   &&&r0   Ústart_requestÚ9StreamingChunkSizeTest.get_app.<locals>.App.start_request¶  s   € Ü-×=Ñ=¸lÓKÐKr3   r`   N©r@   rA   rB   rC   r  rD   rE   ra   s   @r0   ÚAppr
  µ  s   ø‡ € ÷Lð Lr3   r  ©r   ©r/   r  s   & r0   rU   ÚStreamingChunkSizeTest.get_app´  s   € ô	LÔ.ô 	Lñ ‹uˆr3   c           	     ó„  € V P                   ! RRR/VB pVP                  4        \        VP                  4      pV P	                  \        V P                  4      \        V4      4       V FR  pV P                  W@P                  R\        V4      ,           4       V P                  V^ R\        V4      ,           4       KT  	  V# )rQ   rŽ   r‹   zoversized chunk: zempty chunk: rP   )rX   rY   r   rZ   r†   rq   ÚBODYÚsumÚassertLessEqualrò  r  ÚassertGreater)r/   r\   r]   r7   rñ  s   &,   r0   Úfetch_chunk_sizesÚ(StreamingChunkSizeTest.fetch_chunk_sizes»  s�   € Ø—:’:Ñ;¨&Ð;°FÑ;ˆØ×ÑÔÜ˜XŸ]™]Ó+ˆØ×Ñœ˜TŸY™Y›¬¨V«Ô5Û ˆJØ× Ñ ØŸO™OÐ-@Ä3ÀvÃ;Õ-Nôð ×Ñ˜z¨1¨oÄÀFÃÕ.KÖLñ	 !ð
 ˆr3   c                óô   € \        4       p\        P                  ! R VR7      pVP                  V4       VP	                  4        VP                  4       p\        V4      \        V4      8¼  d   \        R4      hV# )rÄ  rÅ  z#body did not shrink when compressed)r#   rÉ  rÊ  rÞ   rþ   rË  rq   rm   )r/   rZ   rÌ  ÚgzfileÚ
compresseds   &&   r0   ÚcompressÚStreamingChunkSizeTest.compressÇ  s^   € Ü“)ˆÜ—’ C°Ô9ˆØ�‰�TÔØ�‰ŒØ×%Ñ%Ó'ˆ
Üˆz‹?œc $›iÔ'ÜÐAÓBÐBØÐr3   c                óf   € V P                  V P                  R 7      pV P                  . ROV4       R# ))rZ   N)é   r#  r#  é   )r  r  r†   )r/   r7   s   & r0   Útest_regular_bodyÚ(StreamingChunkSizeTest.test_regular_bodyÑ  s)   € Ø×'Ñ'¨T¯Y©YÐ'Ó7ˆà×Ñš¨&Ö1r3   c                ób   € V P                  V P                  V P                  4      R R/R7       R# )rÈ  rÉ  )rZ   r,   N)r  r   r  rT   s   &r0   Útest_compressed_bodyÚ+StreamingChunkSizeTest.test_compressed_bodyÖ  s-   € Ø×ÑØ—‘˜tŸy™yÓ)Ð4FÈÐ3Oð 	ö 	
r3   c                ó`   a € V 3R  lpS P                  VR7      pS P                  . ROV4       R# )c                 ól   <€ V ! SP                   R ,          4       V ! SP                   R,          4       R# ©:Né   N:r-  NNN)r  )rÞ   r/   s   &€r0   Úbody_producerÚ?StreamingChunkSizeTest.test_chunked_body.<locals>.body_producerÞ  s#   ø€ Ù�$—)‘)˜C•.Ô!Ù�$—)‘)˜C•.Ö!r3   )r.  N)r#  é   r#  é   )r  r†   )r/   r.  r7   s   f  r0   Útest_chunked_bodyÚ(StreamingChunkSizeTest.test_chunked_bodyÝ  s-   ø€ õ	"ð ×'Ñ'°mÐ'ÓDˆà×Ñš¨&Ö1r3   c                óª   a€ V P                  V P                  4      oV P                  \        S4      ^4       V3R lpV P	                  VRR/R7       R# )r-  c                 óD   <€ V ! SR ,          4       V ! SR,          4       R# r,  r`   )rÞ   r  s   &€r0   r.  ÚEStreamingChunkSizeTest.test_chunked_compressed.<locals>.body_producerê  s   ø€ Ù�*˜S•/Ô"Ù�*˜S•/Ö"r3   rÈ  rÉ  )r.  r,   N)r   r  r  rq   r  )r/   r.  r  s   & @r0   Útest_chunked_compressedÚ.StreamingChunkSizeTest.test_chunked_compressedæ  sN   ø€ Ø—]‘] 4§9¡9Ó-ˆ
Ø×Ñœ3˜z›?¨BÔ/õ	#ð 	×ÑØ'Ð2DÀfÐ1Mð 	ö 	
r3   r`   N)r@   rA   rB   rC   r  rò  rí  rí  r   r  rU   r  r   r%  r(  r2  r7  rD   rE   ra   s   @r0   rë  rë  ”  sO   ø‡ € à@€DØ€Jò'ò
Iô%Ð-ô %ò&ò
òò2ò

ò2÷

ð 

r3   rë  c                   óB   a € ] tR tRt o  ! R R]4      tR tR tRtV t	R# )ÚInvalidOutputContentLengthTestió  c                   ó,   a € ] tR tRt o R tR tRtV tR# )Ú.InvalidOutputContentLengthTest.MessageDelegateiô  c                ó   € Wn         R # r*   r÷  rù  s   &&r0   rú  Ú7InvalidOutputContentLengthTest.MessageDelegate.__init__õ  rü  r3   c           	     ó  € R RRRRRRR/pV P                   P                  \        R^ÈR	4      \        R
W2R,          ,          /4      4       V P                   P	                  R4       V P                   P                  4        R# )ÚnormalÚ10rÉ  rI  rË  rÌ  Ú
underscorerÍ  r�  r  rö   úx-testó
   1234567890N)rø  r  r   r   rÞ   r>   )r/   r-   r,   Úcontent_lengthss   &&& r0   r1   Ú?InvalidOutputContentLengthTest.MessageDelegate.headers_receivedø  sw   € à˜$Ø˜eØ Ø˜eð	ˆOð �O‰O×)Ñ)Ü! *¨c°4Ó8ÜÐ-¨ÀxÕ?PÕ/QÐRÓSôð �O‰O×!Ñ! -Ô0Ø�O‰O×"Ñ"Ö$r3   r÷  N)r@   rA   rB   rC   rú  r1   rD   rE   ra   s   @r0   r  r<  ô  s   ø‡ € ò	)÷	%ð 	%r3   r  c                ó.   €  ! R  R\         4      pV! 4       # )c                   ó&   a € ] tR tRt o R tRtV tR# )Ú3InvalidOutputContentLengthTest.get_app.<locals>.Appi  c                ó,   € \         P                  V4      # r*   )r:  r  r  s   &&&r0   r  ÚAInvalidOutputContentLengthTest.get_app.<locals>.App.start_request  s   € Ü5×EÑEÀlÓSÐSr3   r`   Nr  ra   s   @r0   r  rI    s   ø‡ € ÷Tð Tr3   r  r  r  s   & r0   rU   Ú&InvalidOutputContentLengthTest.get_app  s   € ô	TÔ.ô 	Tñ ‹uˆr3   c                óx  € V P                  R 4      ;_uu_ 4        V P                  RRRR /R7      pVP                  4        V P                  VP                  R4       RRR4       R F‚  pV P                  V4      ;_uu_ 4        \        \        R4      ;_uu_ 4        V P                  \        4      ;_uu_ 4        V P                  RRRV/R7       RRR4       RRR4       RRR4       K„  	  R#   + '       g   i     Lš; i  + '       g   i     L9; i  + '       g   i     LD; i  + '       g   i     KÒ  ; i)	r@  rQ   ÚGETrC  )rŽ   r,   rD  Nr’   )rÉ  rË  rB  )	rd  rX   rY   r†   rZ   r   r   r›   r   )r/   r]   Útests   &  r0   Ú"test_invalid_output_content_lengthÚAInvalidOutputContentLengthTest.test_invalid_output_content_length  sÝ   € Ø�\‰\˜(×#Õ#Ø—z‘z #¨e¸hÈÐ=Q�zÓRˆHØ×ÑÔØ×Ñ˜XŸ]™]¨MÔ:÷ $ó AˆDØ—‘˜d×#Õ#ô œwÐ(<×=Õ=Ø×*Ñ*¬9×5Õ5ØŸ
™
 3¨u¸xÈÐ>N˜
ÔO÷ 6÷ >÷ $Ñ#ó A÷	 $×#ú÷ 6×5ú÷ >×=ú÷ $×#Ð#úsH   šAC/ÂD(ÂDÂ:DÃDÃD(Ã/C?	ÄDÄDÄD%Ä D(Ä(D9r`   N)
r@   rA   rB   rC   r   r  rU   rP  rD   rE   ra   s   @r0   r:  r:  ó  s#   ø‡ € ô%Ð-ô %ò$÷Pð Pr3   r:  c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )ÚMaxHeaderSizeTesti  c                ó&   € \        R \        3.4      # rP   ©r   rc   rT   s   &r0   rU   ÚMaxHeaderSizeTest.get_app  ó   € Ü˜SÔ":Ð;Ð<Ó=Ð=r3   c                ó   € \        R R7      # )r`  )Úmax_header_sizerì  rT   s   &r0   rí  Ú(MaxHeaderSizeTest.get_httpserver_options  s   € Ü DÔ)Ð)r3   c                óˆ   € V P                  R RR/R7      pVP                  4        V P                  VP                  R4       R# )rQ   úX-FillerrX  r„   NÚdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)rX   rY   r†   rZ   r‡   s   & r0   Útest_small_headersÚ$MaxHeaderSizeTest.test_small_headers"  s9   € Ø—:‘:˜c¨J¸	Ð+B�:ÓCˆØ×ÑÔØ×Ñ˜Ÿ™¨Ö7r3   c                ó\  € \        \        R RR7      ;_uu_ 4         V P                  RRR	/RR7       V P                  R4       RRR4       R#   \         d?   pTP
                  e'   T P                  TP
                  P                  R
4        Rp?LNRp?ii ; i  + '       g   i     R# ; i)zUnsatisfiable readFr“   rQ   r\  T)r,   rš   z did not raise expected exceptionNÁè  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)i¯  iW  )r   r   rX   Úfailr   r]   ÚassertInr]  )r/   Úes   & r0   Útest_large_headersÚ$MaxHeaderSizeTest.test_large_headers'  s†   € Ü”wÐ 4¸u×EÖEð?Ø—
‘
˜3¨°ZÐ(@Èd�
ÔSØ—	‘	Ð<Ô=÷ FÑEøô ô ?ð —:‘:Ò)Ø—M‘M !§*¡*§/¡/°:Ô>ÿøð?ú÷	 F×EÐEús.   ›B�'AÁBÁ4BÂBÂBÂBÂB+	r`   N)
r@   rA   rB   rC   rU   rí  r^  re  rD   rE   ra   s   @r0   rS  rS    s   ø‡ € ò>ò*ò8÷

?ð 
?r3   rS  c                   óŽ   a a€ ] tR tRt oR tR tV 3R ltV 3R lt]P                  R 4       t
]R 4       t]R 4       tR	tVtV ;t# )
ÚIdleTimeoutTesti4  c                ó&   € \        R \        3.4      # rP   rU  rT   s   &r0   rU   ÚIdleTimeoutTest.get_app5  rW  r3   c                ó   € \        R R7      # )gš™™™™™¹?)Úidle_connection_timeoutrì  rT   s   &r0   rí  Ú&IdleTimeoutTest.get_httpserver_options8  s   € Ü¨CÔ0Ð0r3   c                ó2   <€ \         SV `  4        . V n        R # r*   )rr  rs  Ústreamsrt  s   &€r0   rs  ÚIdleTimeoutTest.setUp;  s   ø€ Ü‰‰ŒØˆŽr3   c                ój   <€ \         SV `  4        V P                   F  pVP                  4        K  	  R # r*   )rr  rw  ro  rþ   )r/   rJ   rR   s   & €r0   rw  ÚIdleTimeoutTest.tearDown?  s%   ø€ Ü‰ÑÔØ—l”lˆFØ�L‰LŽNó #r3   c              #  óî   "  € \        \        P                  ! 4       4      pVP                  R V P                  4       34      x € V P                  P                  V4       \        P                  ! V4      h5irÒ   )r   rÛ   rÔ   rÕ   ro  r5   r   r‰  rÖ   s   & r0   rÔ   ÚIdleTimeoutTest.connectD  sS   é € äœ&Ÿ-š-›/Ó*ˆØ�n‰n˜k¨4×+=Ñ+=Ó+?Ð@ÓAÒAØ�‰×Ñ˜FÔ#Ü�jŠj˜Ó Ð ùs   ‚A3A5c              #  ó    "  € V P                  4       x €p\        4       pVP                  VP                  4       VP	                  4       x € R # 5ir*   )rÔ   r   Úset_close_callbackr¶  r�  )r/   rJ   Úevents   &  r0   Útest_unused_connectionÚ&IdleTimeoutTest.test_unused_connectionK  s8   é € à—|‘|“~Ñ%ˆÜ“ˆØ×!Ñ! %§)¡)Ô,Ø�j‰j‹lÔùs   ‚AAc              #  óV  "  € V P                  4       x €p\        4       pVP                  VP                  4       \	        ^4       FL  pVP                  R4       VP                  R4      x € VP                  ^4      x €pV P                  VR4       KN  	  VP                  4       x € R# 5i)r$  s#   GET / HTTP/1.1
Host: 127.0.0.1

ró   r„   N)
rÔ   r   rv  r¶  rg  rÞ   r÷   rü   r†   r�  )r/   rJ   rw  rc  rë   s   &    r0   Útest_idle_after_useÚ#IdleTimeoutTest.test_idle_after_useR  s‹   é € à—|‘|“~Ñ%ˆÜ“ˆØ×!Ñ! %§)¡)Ô,ô �q–ˆAØ�L‰LÐEÔFØ×#Ñ# KÓ0Ò0Ø×*Ñ*¨2Ó.Ñ.ˆDØ×Ñ˜T >Ö2ñ	 ð �j‰j‹lÔùr›  )ro  )r@   rA   rB   rC   rU   rí  rs  rw  r   rp  rÔ   r   rx  r{  rD   rE   rÝ  rÞ  s   @@r0   rh  rh  4  s^   ù‡ € ò>ò1õõð
 	‡]�]ñ!ó ð!ð ñó ðð ñó ÷ð r3   rh  c                   ó  a € ] tR tRt o R tR tR tR tR t]	P                  ! ]P                  R8H  R4      R	 4       tR
 t]	P                  ! ]P                  R8H  R4      R 4       tR tR t]R 4       t]R 4       tRtV tR# )ÚBodyLimitsTestic  c                ór   €  ! R  R\         4      p\         ! R R\         4      4       p\        RV3RV3.4      # )c                   ó&   a € ] tR tRt o R tRtV tR# )Ú/BodyLimitsTest.get_app.<locals>.BufferedHandlerie  c                ót   € V P                  \        \        V P                  P                  4      4      4       R # r*   )rÞ   r  rq   rl   rZ   rT   s   &r0   ÚputÚ3BodyLimitsTest.get_app.<locals>.BufferedHandler.putf  s"   € Ø—
‘
œ3œs 4§<¡<×#4Ñ#4Ó5Ó6Ö7r3   r`   N)r@   rA   rB   rC   rƒ  rD   rE   ra   s   @r0   ÚBufferedHandlerr�  e  s   ø‡ € ÷8ð 8r3   r…  c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )Ú0BodyLimitsTest.get_app.<locals>.StreamingHandlerii  c                ó   € ^ V n         R# )r   N©Ú
bytes_readrT   s   &r0   rh   Ú;BodyLimitsTest.get_app.<locals>.StreamingHandler.initializek  s	   € Ø"#�–r3   c                óx  € \         P                  ! \        V P                  P                  4      pR V P                  P
                  9   d*   VP                  \        V P                  R 4      4      4       RV P                  P
                  9   d,   VP                  \        V P                  R4      4      4       R# R# )Úexpected_sizeÚbody_timeoutN)ÚtypingÚcastr   rl   rø  r  Úset_max_body_sizerý   rÅ   Úset_body_timeoutÚfloatr<   s   & r0   r(  Ú8BodyLimitsTest.get_app.<locals>.StreamingHandler.preparen  s�   € Ü—{’{¤?°D·L±L×4KÑ4KÓL�Ø" d§l¡l×&<Ñ&<Ô<Ø×*Ñ*¬3¨t×/@Ñ/@ÀÓ/QÓ+RÔSØ! T§\¡\×%;Ñ%;Ô;Ø×)Ñ)¬%°×0AÑ0AÀ.Ó0QÓ*RÖSñ <r3   c                óJ   € V ;P                   \        V4      ,          un         R # r*   )rŠ  rq   r˜  s   &&r0   r8   Ú>BodyLimitsTest.get_app.<locals>.StreamingHandler.data_receivedu  s   € Ø—’¤3 t£9Õ,—r3   c                óN   € V P                  \        V P                  4      4       R # r*   )rÞ   r  rŠ  rT   s   &r0   rƒ  Ú4BodyLimitsTest.get_app.<locals>.StreamingHandler.putx  s   € Ø—
‘
œ3˜tŸ™Ó/Ö0r3   r‰  N)
r@   rA   rB   rC   rh   r(  r8   rƒ  rD   rE   ra   s   @r0   ÚStreamingHandlerr‡  i  s   ø‡ € ò$òTò-÷1ð 1r3   r™  ú	/bufferedú
/streaming)r   r    r   )r/   r…  r™  s   &  r0   rU   ÚBodyLimitsTest.get_appd  sK   € ô	8œnô 	8ô 
ô	1œ~ó 	1ó 
ð	1ô" Ø˜?Ð+¨lÐ<LÐ-MÐNó
ð 	
r3   c                ó   € \        R RR7      # )r—   i   )rŽ  rØ  rì  rT   s   &r0   rí  Ú%BodyLimitsTest.get_httpserver_options  s   € Ü °TÔ:Ð:r3   c                ó   € \        4       # r*   r   rT   s   &r0   rí  ÚBodyLimitsTest.get_http_client‚  rï  r3   c                óÆ   € V P                  R RRR7      pV P                  VP                  R4       V P                  RRRR7      pV P                  VP                  R4       R# )rš  ÚPUTr�   s   4096r›  Ns   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar…   r‡   s   & r0   Útest_small_bodyÚBodyLimitsTest.test_small_body‡  sR   € Ø—:‘:˜k°%¸k�:ÓJˆØ×Ñ˜Ÿ™¨Ô0Ø—:‘:˜l°5¸{�:ÓKˆØ×Ñ˜Ÿ™¨Ö0r3   c                óü   € \        \        R \        P                  R7      ;_uu_ 4        V P	                  RRRR,          R7      pRRR4       V P                  XP                  R4       R#   + '       g   i     L.; i)	ú.*Content-Length too longr†  rš  r¢  ó   aé (  r�   Nr>  ©r   r   r�  r‘  rX   r†   r]  r‡   s   & r0   Útest_large_body_bufferedÚ'BodyLimitsTest.test_large_body_buffered�  sR   € Ü”wÐ ;Ä7Ç<Á<×PÖPØ—z‘z +°eÀ$ÈÅ,�zÓOˆH÷ Qà×Ñ˜Ÿ™¨Ö,÷ Q×Púó   ©A+Á+A;	Úntzflaky on windowsc                óð   € \        \        R \        P                  R7      ;_uu_ 4        V P	                  RRR R7      pRRR4       V P                  XP                  R4       R#   + '       g   i     L.; i)ú.*chunked body too larger†  rš  r¢  c                 ó    € V ! R R,          4      # ©r§  r¨  r`   ©rÞ   s   &r0   r×   ÚABodyLimitsTest.test_large_body_buffered_chunked.<locals>.<lambda>™  ó   € ©E°$¸µ,Ô,?r3   ©rŽ   r.  Nr>  r©  r‡   s   & r0   Ú test_large_body_buffered_chunkedÚ/BodyLimitsTest.test_large_body_buffered_chunked’  sZ   € ô ”wÐ :Ä'Ç,Á,×OÖOØ—z‘zØØÙ?ð "ó ˆH÷ Pð 	×Ñ˜Ÿ™¨Ö,÷ P×Oúó   ©A%Á%A5	c                óü   € \        \        R \        P                  R7      ;_uu_ 4        V P	                  RRRR,          R7      pRRR4       V P                  XP                  R4       R#   + '       g   i     L.; i)	r¦  r†  r›  r¢  r§  r¨  r�   Nr>  r©  r‡   s   & r0   Útest_large_body_streamingÚ(BodyLimitsTest.test_large_body_streaming�  sR   € Ü”wÐ ;Ä7Ç<Á<×PÖPØ—z‘z ,°uÀ4È%Å<�zÓPˆH÷ Qà×Ñ˜Ÿ™¨Ö,÷ Q×Púr¬  c                óð   € \        \        R \        P                  R7      ;_uu_ 4        V P	                  RRR R7      pRRR4       V P                  XP                  R4       R#   + '       g   i     L.; i)r¯  r†  r›  r¢  c                 ó    € V ! R R,          4      # r±  r`   r²  s   &r0   r×   ÚBBodyLimitsTest.test_large_body_streaming_chunked.<locals>.<lambda>¨  r´  r3   rµ  Nr>  r©  r‡   s   & r0   Ú!test_large_body_streaming_chunkedÚ0BodyLimitsTest.test_large_body_streaming_chunked¢  sX   € ä”wÐ :Ä'Ç,Á,×OÖOØ—z‘zØØÙ?ð "ó ˆH÷ Pð 	×Ñ˜Ÿ™¨Ö,÷ P×Oúr¸  c                ót   € V P                  R RRR,          R7      pV P                  VP                  R4       R# )ú/streaming?expected_size=10240r¢  r§  r¨  r�   ó   10240Nr…   r‡   s   & r0   Ú"test_large_body_streaming_overrideÚ1BodyLimitsTest.test_large_body_streaming_override¬  s6   € Ø—:‘:Ø,°UÀÈÅð ó 
ˆð 	×Ñ˜Ÿ™¨Ö1r3   c                óh   € V P                  R RR R7      pV P                  VP                  R4       R# )rÂ  r¢  c                 ó    € V ! R R,          4      # r±  r`   r²  s   &r0   r×   ÚKBodyLimitsTest.test_large_body_streaming_chunked_override.<locals>.<lambda>¶  s   € ©¨d°U­lÔ(;r3   rµ  rÃ  Nr…   r‡   s   & r0   Ú*test_large_body_streaming_chunked_overrideÚ9BodyLimitsTest.test_large_body_streaming_chunked_override²  s4   € Ø—:‘:Ø,ØÙ;ð ó 
ˆð
 	×Ñ˜Ÿ™¨Ö1r3   c              #  óÎ  "  € \        \        P                  ! 4       4      p VP                  R V P                  4       34      x € VP	                  R4       \        \        R\        P                  R7      ;_uu_ 4        VP                  4       x €pRRR4       V P                  XR4       VP                  4        R#   + '       g   i     L4; i  TP                  4        i ; i5i)rÓ   s@   PUT /streaming?body_timeout=0.1 HTTP/1.0
Content-Length: 42

zTimeout reading bodyr†  Nr3   )r   rÛ   rÔ   rÕ   rÞ   r   r   r�  r‘  rÐ  r†   rþ   r5  s   &  r0   Útest_timeoutÚBodyLimitsTest.test_timeoutº  s¥   é € äœ&Ÿ-š-›/Ó*ˆð	Ø—.‘. +¨t×/AÑ/AÓ/CÐ!DÓEÒEð �L‰Lð.ôô œ7Ð$:Ä'Ç,Á,×OÖOØ!'×!8Ñ!8Ó!:Ñ:�÷ Pà×Ñ˜X sÔ+à�L‰LŽN÷	 P×Oûð �L‰L�Nüs5   ‚C%¢AC Á>B=ÂC Â+C%Â=C	ÃC ÃC"Ã"C%c              #  ód  "  € \        \        P                  ! 4       4      p VP                  R V P                  4       34      x € VP	                  R4       VP	                  RR,          4       \        V4      x €w  r#pV P                  VR4       VP	                  R4       \        \        R\        P                  R7      ;_uu_ 4        VP                  4       x €pRRR4       V P                  XR	4       VP                  4        R#   + '       g   i     L4; i  TP                  4        i ; i5i)
rÓ   sW   PUT /streaming?expected_size=10240 HTTP/1.1
Host: 127.0.0.1
Content-Length: 10240

r§  r¨  rÃ  sC   PUT /streaming HTTP/1.1
Host: 127.0.0.1
Content-Length: 10240

r¦  r†  Nr4  )r   rÛ   rÔ   rÕ   rÞ   rL   r†   r   r   r�  r‘  rÐ  rþ   )r/   rJ   r-   r,   r]   rë   s   &     r0   Útest_body_size_override_resetÚ,BodyLimitsTest.test_body_size_override_resetË  së   é € ô œ&Ÿ-š-›/Ó*ˆð	Ø—.‘. +¨t×/AÑ/AÓ/CÐ!DÓEÒEà�L‰Lð1ôð
 �L‰L˜ �Ô&Ü2BÀ6Ó2JÑ,JÑ)ˆJ Ø×Ñ˜X xÔ0à�L‰Lð1ôô
 œ7Ð$?ÄwÇ|Á|×TÖTØ#×4Ñ4Ó6Ñ6�÷ Uà×Ñ˜TÐ#FÔGà�L‰LŽN÷	 U×Tûð �L‰L�Nüs5   ‚D0¢B'D Ã	DÃD Ã6D0ÄD	ÄD ÄD-Ä-D0r`   N)r@   rA   rB   rC   rU   rí  rí  r£  rª  ÚunittestÚskipIfr³   r0  r¶  rº  r¿  rÄ  rÉ  r   rÌ  rÏ  rD   rE   ra   s   @r0   r~  r~  c  s¥   ø‡ € ò
ò6;ò'ò
1ò-ð
 ‡_‚_�R—W‘W ‘_Ð&8Ó9ñ-ó :ð-ò-ð
 ‡_‚_�R—W‘W ‘_Ð&8Ó9ñ-ó :ð-ò2ò2ð ñó ðð  ñó ör3   r~  c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚLegacyInterfaceTestiç  c                ó   a € V 3R  lpV# )c                 óØ  <€ V P                   P                  R 4      Sn        SP                  '       gL   V P                  P	                  \        R^ÈR4      \        4       4       V P                  P                  4        R# RpV P                  P                  \        R\        V4      ,          4      4       V P                  P                  V4       V P                  P                  4        R# )zHTTP/1.rN  r  Nr„   z'HTTP/1.1 200 OK
Content-Length: %d

)r  rù   Úhttp1rø  r  r   r   r>   rÞ   r   rq   )rl   Úmessager/   s   & €r0   Úhandle_requestÚ3LegacyInterfaceTest.get_app.<locals>.handle_requestì  s²   ø€ Ø Ÿ™×3Ñ3°IÓ>ˆDŒJØ—:—:�:ð ×"Ñ"×0Ñ0Ü% b¨#¨tÓ4´k³môð ×"Ñ"×)Ñ)Ô+ÙØ$ˆGØ×Ñ×$Ñ$ÜÐGÌ#ÈgË,ÕVÓWôð ×Ñ×$Ñ$ WÔ-Ø×Ñ×%Ñ%Ö'r3   r`   )r/   rÙ  s   f r0   rU   ÚLegacyInterfaceTest.get_appè  s   ø€ õ	(ð" Ðr3   c                ó¦   € V P                  R 4      pV P                  '       g   V P                  R4       V P                  VP                  R4       R# )rQ   rý  r„   N)rX   r×  rþ  r†   rZ   r‡   s   & r0   Útest_legacy_interfaceÚ)LegacyInterfaceTest.test_legacy_interfaceÿ  s9   € Ø—:‘:˜c“?ˆØ�z�zˆzØ�M‰MÐ-Ô.Ø×Ñ˜Ÿ™¨Ö7r3   )r×  N)r@   rA   rB   rC   rU   rÝ  rD   rE   ra   s   @r0   rÔ  rÔ  ç  s   ø‡ € ò÷.8ð 8r3   rÔ  )cÚtornador   r   Útornado.escaper   r   r   r   r	   r
   Útornado.http1connectionr   Útornado.httpclientr   Útornado.httpserverr   Útornado.httputilr   r   r   r   Útornado.iostreamr   Útornado.locksr   Útornado.logr   r   Útornado.simple_httpclientr   Útornado.testingr   r   r   r   r   Útornado.test.utilr   Útornado.webr   r   r    Ú
contextlibr!   r"   r~  rÉ  r�  r³   rB  rÛ   r~   Úsysr=  rÎ  rÑ  Úurllib.parsere  rJ  Úior#   r�  ÚTYPE_CHECKINGr$   r%   rL   rN   rc   rv   ÚTestCaser¨   r¾   rÉ   r  r  r5  r;  rB  rk  rà  r  r  r$  rÒ  r„  Úplatformr;  rù   rG  rO  rÀ  rÕ  ræ  rë  r:  rS  rh  r~  rÔ  r`   r3   r0   Ú<module>ró     s¯  ðß  ÷÷ õ 4Ý (Ý )÷ó õ &Ý ß (Ý ;÷õ õ 1ß HÑ Hç .Û Û Û Û 	Û Û Û 
Û 
Û Û Û Û Û Ý ã à	××Ðß!òCô,	*Ð+ô 	*ô
E˜~ô 
Eô'2Ð ô '2ôT&
˜×)Ñ)ô &
ôR	
˜>ô 	
ôYÐ*ô Yôx>�.ô >ô&O�~ô &OôR9�nô 9ô
B˜ô Bô>UÐ&ô >UôBNÐ)ô Nôb\
Ð%ô \
ô~
Ð'Ð)<ô 
ô.	DÐ,ô 	Dð ô-H�]ó -Hó ð-Hð` 
‡‚Ù�˜	Ó"Ô"×>Ð> c§l¡l°hÑ&>Ø1óô#˜ó #ó	ð#ð 
‡‚Ù	�˜Ó	#×	HÐ	H¨¯©×(?Ñ(?ÀÓ(HÔIØDóô˜^ó ó	ðôWÐ%ô WôtGÐ$ô Gô,&ˆ|Ð.ô &ô8-˜,Ð(9ô -ô\
Ð.ô \
ô~%PÐ%6ô %PôP?Ð)ô ?ô2,Ð'ô ,ô^AÐ&ô AôH8Ð+ö 8r3   