+
    -Iëj`•  ã                   óè  € R t ^ RIt^ RIt^ RIt^ RIt^ RIHtHtHt ^ RI	H
t
Ht ^ RI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HtHt ]P:                  ! R
4      t ! R R]4      t  ! R R4      t! ! R R4      t" ! R R]PF                  4      t$ ! R R]PJ                  4      t& ! R R4      t']P:                  ! R4      t(]P:                  ! R4      t)R R lt*R R lt+R R lt,R# )zFClient and server implementations of HTTP/1.x.

.. versionadded:: 4.0
N)ÚFutureÚfuture_add_done_callbackÚ"future_set_result_unless_cancelled)Ú
native_strÚutf8)Úgen)Úhttputil)Úiostream)Úgen_logÚapp_log)ÚGzipDecompressor)ÚcastÚOptionalÚTypeÚ	AwaitableÚCallableÚUnionÚTuples   |
c                   ó2   a € ] tR t^,t o V 3R lR ltRtV tR# )Ú_QuietExceptionc                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnN© )ÚformatÚ__classdict__s   "€Ú9/usr/lib/python3/dist-packages/tornado/http1connection.pyÚ__annotate__Ú_QuietException.__annotate__-   s   ø€ ÷ ñ ˜$ñ ó    c                ó   € R # ©Nr   ©Úselfs   &r   Ú__init__Ú_QuietException.__init__-   ó   € Ùr    r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r%   Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r   ,   s   ø‡ € ÷ö r    r   c                   óZ   a € ] tR t^1t o RtV 3R lR ltV 3R lR ltV 3R lR ltRtV t	R	# )
Ú_ExceptionLoggingContextz¤Used with the ``with`` statement when calling delegate methods to
log any exceptions with the given logger.  Any exceptions caught are
converted to _QuietException
c                ó8   <€ V ^8„  d   QhRS[ P                  RR/# )r   Úloggerr   N)ÚloggingÚLogger)r   r   s   "€r   r   Ú%_ExceptionLoggingContext.__annotate__7   s   ø€ ÷ ñ ™wŸ~™~ð °$ñ r    c                ó   € Wn         R # r"   ©r2   )r$   r2   s   &&r   r%   Ú!_ExceptionLoggingContext.__init__7   s   € ØŽr    c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r5   :   s   ø€ ÷ ñ ˜4ñ r    c                ó   € R # r"   r   r#   s   &r   Ú	__enter__Ú"_ExceptionLoggingContext.__enter__:   r'   r    c                óR   <€ V ^8„  d   QhRRRS[ S[,          RS[P                  RR/# )r   ÚtypzOptional[Type[BaseException]]ÚvalueÚtbr   N)r   ÚBaseExceptionÚtypesÚTracebackType)r   r   s   "€r   r   r5   =   s>   ø€ ÷ "ñ "à,ð"ñ ™Õ&ð"ñ ×Ñð	"ð
 
ñ"r    c                ó¨   € VeN   Vf   Q h\        V\        P                  4      '       d   R # V P                  P	                  RWV3R7       \
        hR # )NúUncaught exception©Úexc_info)Ú
isinstancer   ÚHTTPInputErrorr2   Úerrorr   )r$   r>   r?   r@   s   &&&&r   Ú__exit__Ú!_ExceptionLoggingContext.__exit__=   sR   € ð ÒØ’?Ð"�?ä˜%¤×!8Ñ!8×9Ò9ÙØ�K‰K×ÑÐ2¸cÈ"Ð=MÐÔNÜ!Ð!ñ r    r7   N)
r(   r)   r*   r+   Ú__doc__r%   r;   rK   r,   r-   r.   s   @r   r0   r0   1   s(   ø‡ € ñ÷
ð ÷ð ÷"ö "r    r0   c                   ó:   a € ] tR t^Lt o RtRV 3R lR lltRtV tR# )ÚHTTP1ConnectionParametersz?Parameters for `.HTTP1Connection` and `.HTTP1ServerConnection`.Nc                ó˜   <€ V ^8„  d   QhRS[ RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[S[,          RS[ RR	/# )
r   Úno_keep_aliveÚ
chunk_sizeÚmax_header_sizeÚheader_timeoutÚmax_body_sizeÚbody_timeoutÚ
decompressr   N)Úboolr   ÚintÚfloat)r   r   s   "€r   r   Ú&HTTP1ConnectionParameters.__annotate__O   so   ø€ ÷ %ñ %áð%ñ ™S•Mð%ñ "¡#�ð	%ñ
 !¡�ð%ñ  ¡•}ð%ñ ™u•oð%ñ ð%ð 
ñ%r    c                ó†   € Wn         T;'       g    RV n        T;'       g    RV n        W@n        WPn        W`n        Wpn        R# )aë  
:arg bool no_keep_alive: If true, always close the connection after
    one request.
:arg int chunk_size: how much data to read into memory at once
:arg int max_header_size:  maximum amount of data for HTTP headers
:arg float header_timeout: how long to wait for all headers (seconds)
:arg int max_body_size: maximum amount of data for body
:arg float body_timeout: how long to wait while reading body (seconds)
:arg bool decompress: if true, decode incoming
    ``Content-Encoding: gzip``
i   N)rQ   rR   rS   rT   rU   rV   rW   )r$   rQ   rR   rS   rT   rU   rV   rW   s   &&&&&&&&r   r%   Ú"HTTP1ConnectionParameters.__init__O   s@   € ð* +ÔØ$×-Ð-¨ˆŒØ.×7Ð7°%ˆÔØ,ÔØ*ÔØ(ÔØ$Žr    )rV   rR   rW   rT   rU   rS   rQ   )FNNNNNF)r(   r)   r*   r+   rM   r%   r,   r-   r.   s   @r   rO   rO   L   s   ø‡ € ÙI÷%÷ %ð %r    rO   c                   ó¸  a € ] tR t^mt o RtR0V 3R lR lltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltR1V 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR  ltV 3R! lR" ltV 3R# lR$ ltV 3R% lR& ltV 3R' lR( ltV 3R) lR* ltV 3R+ lR, ltV 3R- lR. ltR/tV tR# )2ÚHTTP1ConnectionzyImplements the HTTP/1.x protocol.

This class can be on its own for clients, or via `HTTP1ServerConnection`
for servers.
Nc          
      ój   <€ V ^8„  d   QhRS[ P                  RS[RS[S[,          RS[S[,          RR/# )r   ÚstreamÚ	is_clientÚparamsÚcontextr   N)r	   ÚIOStreamrX   r   rO   Úobject)r   r   s   "€r   r   ÚHTTP1Connection.__annotate__t   sN   ø€ ÷ 7#ñ 7#á×!Ñ!ð7#ñ ð7#ñ Ñ2Õ3ð	7#ñ
 ™&Õ!ð7#ð 
ñ7#r    c                óø  € W n         Wn        Vf   \        4       pW0n        W@n        VP
                  V n        V P                  P                  e   V P                  P                  MV P                  P                  V n        V P                  P                  V n
        RV n        RV n        \        4       V n        RV n        V P!                  4        RV n        RV n        RV n        RV n        RV n        RV n        R# )zë
:arg stream: an `.IOStream`
:arg bool is_client: client or server
:arg params: a `.HTTP1ConnectionParameters` instance or ``None``
:arg context: an opaque application-defined object that can be accessed
    as ``connection.context``.
NF)rb   ra   rO   rc   rd   rQ   rU   Úmax_buffer_sizeÚ_max_body_sizerV   Ú_body_timeoutÚ_write_finishedÚ_read_finishedr   Ú_finish_futureÚ_disconnect_on_finishÚ_clear_callbacksÚ_request_start_lineÚ_response_start_lineÚ_request_headersÚ_chunking_outputÚ_expected_content_remainingÚ_pending_write)r$   ra   rb   rc   rd   s   &&&&&r   r%   ÚHTTP1Connection.__init__t   så   € ð #ŒØŒØŠ>Ü.Ó0ˆFØŒØŒØ#×1Ñ1ˆÔð
 �{‰{×(Ñ(Ò4ð �K‰K×%Ò%à—‘×,Ñ,ð 	Ôð
 "Ÿ[™[×5Ñ5ˆÔð  %ˆÔà#ˆÔô %›hˆÔð &+ˆÔ"Ø×ÑÔð $(ˆÔ Ø$(ˆÔ!Ø $ˆÔà %ˆÔð ,0ˆÔ(à"ˆÖr    c                óJ   <€ V ^8„  d   QhRS[ P                  RS[S[,          /# ©r   Údelegater   )r   ÚHTTPMessageDelegater   rX   )r   r   s   "€r   r   rg   ­   s&   ø€ ÷ ,ñ ,¡h×&BÑ&Bð ,ÁyÑQUÅñ ,r    c                ó°   € V P                   P                  '       d+   \        WP                   P                  V P                  4      pV P                  V4      # )aJ  Read a single HTTP response.

Typical client-mode usage is to write a request using `write_headers`,
`write`, and `finish`, and then call ``read_response``.

:arg delegate: a `.HTTPMessageDelegate`

Returns a `.Future` that resolves to a bool after the full response has
been read. The result is true if the stream is still open.
)rc   rW   Ú_GzipMessageDelegaterR   rj   Ú_read_message)r$   rz   s   &&r   Úread_responseÚHTTP1Connection.read_response­   sF   € ð �;‰;×!×!Ð!Ü+ØŸ+™+×0Ñ0°$×2EÑ2EóˆHð ×!Ñ! (Ó+Ð+r    c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# ry   )r   r{   rX   )r   r   s   "€r   r   rg   ¾   s%   ø€ ÷ xñ x©H×,HÑ,Hð xÉTñ xr    c           	   ƒ  óú  "  € R p V P                   P                  RV P                  P                  R7      pV P                  P                  f   VG Rj  x€L
 pMm \
        P                  ! V P                   P                  P                  4       V P                  P                  ,           V\        P                  R7      G Rj  x€L
 pV P#                  V4      w  rVV P$                  '       d'   \&        P(                  ! V4      pWpn        TpR V n        M?\&        P.                  ! V4      p	W�n        W`n        T	pV P5                  W–4      '       * V n        Rp\        \        4      ;_uu_ 4        VP7                  W†4      p
V
e   V
G Rj  x€L
  RRR4       V P                   fP   R p V'       d1   \        \        4      ;_uu_ 4        VP                  4        RRR4       RpV P!                  4        R # R pV P$                  '       dº   \9        V\&        P:                  4      '       g   Q hV P0                  e   V P0                  P<                  R8X  d   RpVP>                  pVR8X  d   Rp^dTu;8:  d   ^È8  dH   M MˆRV9   g   R	V9   d   \&        P@                  ! R
V,          4      hV PC                  V4      G Rj  x€L
  MCVPE                  R4      R8X  d.   V PF                  '       g   V P                   PI                  R4       V'       g±   T PK                  V P$                  '       d   XP>                  M^ Wa4      pVe}   V PL                  f   VG Rj  x€L
  Mc \
        P                  ! V P                   P                  P                  4       V PL                  ,           V\        P                  R7      G Rj  x€L
  RV n*        V PF                  '       d   V P$                  '       d3   R p\        \        4      ;_uu_ 4        VPW                  4        RRR4       V PX                  P[                  4       '       gh   V P                   eZ   V P                   P]                  4       '       g:   V P                   P_                  V P`                  4       V PX                  G Rj  x€L
  V P$                  '       d#   V P,                  '       d   V P                  4        V P                   fN    V'       d1   \        \        4      ;_uu_ 4        VP                  4        RRR4       RpV P!                  4        R #  T'       d1   \        \        4      ;_uu_ 4        TP                  4        RRR4       RpT P!                  4        R#  EL# EL¸  \
        P                   ds    T P                  4         T'       dE   \        \        4      ;_uu_ 4        TP                  4        RRR4       M  + '       g   i     M; iRpT P!                  4        R # i ; i EL‚  + '       g   i     EL‰; i  + '       g   i     ELT; i EL| ELç EL†  \
        P                   dž    \N        PP                  ! RT PR                  4       T P                   P                  4         T'       dE   \        \        4      ;_uu_ 4        TP                  4        RRR4       M  + '       g   i     M; iRpT P!                  4        R # i ; i  + '       g   i     ELí; i ELn  + '       g   i     EL; i  \&        P@                   dÒ   p\N        PP                  ! RT PR                  T4       T P$                  '       g%   T P                   PI                  R4      G Rj  x€L 
  T P                  4         Rp?T'       dE   \        \        4      ;_uu_ 4        TP                  4        RRR4       M  + '       g   i     M; iRpT P!                  4        R # Rp?ii ; i  + '       g   i     EL²; i  T'       dE   \        \        4      ;_uu_ 4        TP                  4        RRR4       M  + '       g   i     M; iRpT P!                  4        i ; i5i)Fs   ?
?
©Ú	max_bytesN)Úquiet_exceptionsTÚHEADé0  úContent-LengthúTransfer-Encodingz!Response code %d cannot have bodyÚExpectz100-continues   HTTP/1.1 100 (Continue)

zTimeout reading body from %sz"Malformed HTTP message from %s: %ss   HTTP/1.1 400 Bad Request

)1ra   Úread_until_regexrc   rS   rT   r   Úwith_timeoutÚio_loopÚtimer	   ÚStreamClosedErrorÚTimeoutErrorÚcloser0   r   Úon_connection_closerp   Ú_parse_headersrb   r   Úparse_response_start_linerr   ro   Úparse_request_start_linerq   rs   Ú_can_keep_aliveÚheaders_receivedrH   ÚResponseStartLineÚmethodÚcoderI   r~   Úgetrl   ÚwriteÚ
_read_bodyrk   r
   Úinford   rm   Úfinishrn   ÚdoneÚclosedÚset_close_callbackÚ_on_connection_close)r$   rz   Úneed_delegate_closeÚheader_futureÚheader_dataÚstart_line_strÚheadersÚresp_start_lineÚ
start_lineÚreq_start_lineÚheader_recv_futureÚ	skip_bodyrš   Úbody_futureÚes   &&             r   r~   ÚHTTP1Connection._read_message¾   sO  é € Ø#Ððu	$Ø ŸK™K×8Ñ8Ø¨¯©×)DÑ)Dð 9ó ˆMð �{‰{×)Ñ)Ò1Ø$1×1‘ð!Ü(+×(8Ò(8ØŸ™×+Ñ+×0Ñ0Ó2°T·[±[×5OÑ5OÕOØ%Ü)1×)CÑ)Cô)÷ #�Kð '+×&9Ñ&9¸+Ó&FÑ#ˆNØ�~�~ˆ~Ü"*×"DÒ"DÀ^Ó"T�Ø,;Ô)à#ð ð .3�Õ*ä!)×!BÒ!BÀ>Ó!R�Ø+9Ô(Ø(/Ô%Ø+�
Ø15×1EÑ1EØ"ó2ô .�Ô*ð #'ÐÜ)¬'×2Õ2Ø%-×%>Ñ%>¸zÓ%SÐ"Ø%Ò1Ø,×,Ð,÷ 3ð �{‰{Ò"à&+Ð#Ø÷P #Ü-¬g×6Õ6Ø×0Ñ0Ô2÷ 7à ˆMØ×!Ñ!Ö#ðW ˆIØ�~�~ˆ~Ü! *¬h×.HÑ.H×IÒIÐIÐIà×,Ñ,Ò8Ø×0Ñ0×7Ñ7¸6ÔAà $�IØ!—‘�Ø˜3”;ð !%�IØ˜$Ö$ ×$ð (¨7Ô2Ð6IÈWÔ6TÜ&×5Ò5Ø?À$ÕFóð ð
 ×,Ñ,¨XÓ6×6Ð6øà—;‘;˜xÓ(¨NÔ:À4×CW×CWÐCWØ—K‘K×%Ñ%Ð&HÔIßØ"Ÿo™oØ,0¯N¯N¨N�O×(Ò(ÀÀ7ó�ð Ò*Ø×)Ñ)Ò1Ø)×)Ñ)ð	)Ü"%×"2Ò"2Ø $§¡× 3Ñ 3× 8Ñ 8Ó :¸T×=OÑ=OÕ OØ +Ü19×1KÑ1Kô#÷ ð ð #'ˆDÔØ×'×'Ð'¨4¯>¯>¨>Ø&+Ð#Ü-¬g×6Õ6Ø—O‘OÔ%÷ 7ð ×'Ñ'×,Ñ,×.Ò.Ø—K‘KÒ+ØŸ™×*Ñ*×,Ò,à—‘×.Ñ.¨t×/HÑ/HÔIØ×)Ñ)×)Ð)Ø�~�~ˆ~ $×"<×"<Ð"<Ø—
‘
”Ø�{‰{Ò"Ø÷ #Ü-¬g×6Õ6Ø×0Ñ0Ô2÷ 7à ˆMØ×!Ñ!Ö#ð #÷ #Ü-¬g×6Õ6Ø×0Ñ0Ô2÷ 7à ˆMØ×!Ñ!Ô#Ùòc 2ò#øô
 ×'Ñ'ô !Ø—J‘J”LØ ÷D #Ü-¬g×6Õ6Ø×0Ñ0Ô2÷ 7×6×6Ð6úà ˆMØ×!Ñ!Ö#ðQ!úò0 -÷ 3×2Ð2ú÷` 7×6Ð6úòc 7ò *òøô
  #×/Ñ/ô )Ü#ŸLšLÐ)GÈÏÉÔVØ ŸK™K×-Ñ-Ô/Ø#(÷6 #Ü-¬g×6Õ6Ø×0Ñ0Ô2÷ 7×6×6Ð6úà ˆMØ×!Ñ!Ö#ðE)ú÷ 7×6Ð6úò *÷ 7×6Ð6ûô ×&Ñ&ô 	Ü�LŠLÐ=¸t¿|¹|ÈQÔOØ—>—>�>Ø—k‘k×'Ñ'Ð(KÓL×LÑLØ�J‰JŒLÛç"Ü-¬g×6Õ6Ø×0Ñ0Ô2÷ 7×6×6Ð6úà ˆMØ×!Ñ!Ö#ûð	ú÷ 7×6Ð6û÷ #Ü-¬g×6Õ6Ø×0Ñ0Ô2÷ 7×6×6Ð6úà ˆMØ×!Ñ!Õ#üs]  ‚a;†A\ ÁU7Á\ ÁA'U= ÃU:ÃU= ÃB#\ Å*X
ÆXÆX
Æ
\ Æ#a;ÇXÇa;Ç/\ ÈB3\ Ê6X2Ê7,\ Ë$"\ Ì\ Ì$*\ ÍX5Í\ ÍAX; Î2X8Î3X; Î7\ Ï\ Ï"\ Ï;[0Ð'\ Ð4-\ Ñ"4\ Ò\Ò\ Ò-\ Ò?\ Óa;Ó=\Ôa;Ô+a;Ô3a;Õ
`Õa;Õ7\ Õ:U= Õ=%XÖ"\ Ö#a;Ö+a;×W×	a;×W,	×'a;ØXØ\ ØX
Ø
X	Ø	\ ØX/	Ø)	a;Ø2\ Ø5\ Ø8X; Ø;A[-Ú\ Úa;Úa;Ú+[Ú<	a;Û[	Ûa;Û,[-Û-\ Û0\	Û;
\ Ü\	Ü	a;Ü`Ü0A_<Þ^Þ_<Þ` Þa;Þ$a;Þ;_ß	a;ß_%	ß a;ß<`à` à`	à	a;à a8à8a	á		a8áa"áa8á8a;c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   rg   8  s   ø€ ÷ 
1ñ 
1 $ñ 
1r    c                ó†   € RV n         RV n        RV n        V P                  e   V P                  P	                  R4       R# R# )z’Clears the callback attributes.

This allows the request handler to be garbage collected more
quickly in CPython by breaking up reference cycles.
N)Ú_write_callbackÚ_write_futureÚ_close_callbackra   r¢   r#   s   &r   rp   Ú HTTP1Connection._clear_callbacks8  s=   € ð  $ˆÔØ!ˆÔØ#ˆÔØ�;‰;Ò"Ø�K‰K×*Ñ*¨4Ö0ñ #r    c                óF   <€ V ^8„  d   QhRS[ S[. R3,          ,          RR/# )r   ÚcallbackNr   )r   r   )r   r   s   "€r   r   rg   D  s)   ø€ ÷ (ñ (©8±H¸RÀ¸XÕ4FÕ+Gð (ÈDñ (r    c                ó   € Wn         R# )aÜ  Sets a callback that will be run when the connection is closed.

Note that this callback is slightly different from
`.HTTPMessageDelegate.on_connection_close`: The
`.HTTPMessageDelegate` method is called when the connection is
closed while receiving a message. This callback is used when
there is not an active delegate (for example, on the server
side this callback is used if the client closes the connection
after sending its request but before receiving all the
response.
N)rµ   ©r$   r¸   s   &&r   r¢   Ú"HTTP1Connection.set_close_callbackD  s
   € ð  (Ör    c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   rg   R  s   ø€ ÷ 
 ñ 
  dñ 
 r    c                óâ   € V P                   e   V P                   pR V n         V! 4        V P                  P                  4       '       g   \        V P                  R 4       V P	                  4        R # r"   )rµ   rn   r    r   rp   rº   s   & r   r£   Ú$HTTP1Connection._on_connection_closeR  sY   € ð ×ÑÒ+Ø×+Ñ+ˆHØ#'ˆDÔ ÙŒJØ×"Ñ"×'Ñ'×)Ò)Ü.¨t×/BÑ/BÀDÔIØ×ÑÖr    c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   rg   ^  s   ø€ ÷ Jñ J�tñ Jr    c                óæ   € V P                   e   V P                   P                  4        V P                  4        V P                  P	                  4       '       g   \        V P                  R 4       R # R # r"   )ra   r‘   rp   rn   r    r   r#   s   &r   r‘   ÚHTTP1Connection.close^  sR   € Ø�;‰;Ò"Ø�K‰K×ÑÔØ×ÑÔØ×"Ñ"×'Ñ'×)Ò)Ü.¨t×/BÑ/BÀDÖIñ *r    c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   r   )r	   re   )r   r   s   "€r   r   rg   e  s   ø€ ÷ ñ ™×)Ñ)ñ r    c                ó¸   € V P                  4        V P                  pRV n        V P                  P                  4       '       g   \	        V P                  R4       V# )a  Take control of the underlying stream.

Returns the underlying `.IOStream` object and stops all further
HTTP processing.  May only be called during
`.HTTPMessageDelegate.headers_received`.  Intended for implementing
protocols like websockets that tunnel over an HTTP handshake.
N)rp   ra   rn   r    r   )r$   ra   s   & r   ÚdetachÚHTTP1Connection.detache  sJ   € ð 	×ÑÔØ—‘ˆØˆŒØ×"Ñ"×'Ñ'×)Ò)Ü.¨t×/BÑ/BÀDÔIØˆr    c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Útimeoutr   N)rZ   )r   r   s   "€r   r   rg   t  s   ø€ ÷ %ñ %©ð %°$ñ %r    c                ó   € Wn         R# )zdSets the body timeout for a single request.

Overrides the value from `.HTTP1ConnectionParameters`.
N)rk   )r$   rÇ   s   &&r   Úset_body_timeoutÚ HTTP1Connection.set_body_timeoutt  s
   € ð
 %Ör    c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   rU   r   N)rY   )r   r   s   "€r   r   rg   {  s   ø€ ÷ ,ñ ,©sð ,°tñ ,r    c                ó   € Wn         R# )zgSets the body size limit for a single request.

Overrides the value from `.HTTP1ConnectionParameters`.
N)rj   )r$   rU   s   &&r   Úset_max_body_sizeÚ!HTTP1Connection.set_max_body_size{  s
   € ð
 ,Ör    c                ó’   <€ V ^8„  d   QhRS[ S[P                  S[P                  3,          RS[P                  RS[S[,          RR/# )r   rª   r¨   Úchunkr   úFuture[None])r   r   ÚRequestStartLiner˜   ÚHTTPHeadersr   Úbytes)r   r   s   "€r   r   rg   ‚  sY   ø€ ÷ Uñ Uá™(×3Ñ3±X×5OÑ5OÐOÕPðUñ ×%Ñ%ðUñ ™�ð	Uð
 
ñUr    c                ó  € . pV P                   '       dz   \        V\        P                  4      '       g   Q hWn        VP                  \        V^ ,           RV^,           R24      4       VP                  R9   ;'       d    RV9  V n        EM‹\        V\        P                  4      '       g   Q hV P                  f   Q hV P                  f   Q hWn        VP                  \        RV^,          V^,          3,          4      4       V P                  P                  R8H  ;'       dl    V P                  P                  R8g  ;'       dK    VP                  R9  ;'       d4    VP                  ^d8  ;'       g    VP                  ^È8¬  ;'       d    RV9  V n        V P                  P                  R8X  d   V P                  '       d   R	VR
&   V P                  P                  R8X  d5   V P                  P                  R
R4      P!                  4       R8X  d   RVR
&   V P                  '       d   RVR&   V P                   '       gM   V P                  P                  R8X  g*   \#        \        P                  V4      P                  R8X  d	   ^ V n        M&RV9   d   \'        VR,          4      V n        MRV n        R VP)                  4        4       pVP+                  R V 4       4       V F0  p\,        P/                  V4      '       g   K   \1        RV,          4      h	  RpV P2                  P5                  4       '       dG   \7        4       ;qpn        VP;                  \<        P>                  ! 4       4       VPA                  4        V# \7        4       ;qpn        RPC                  V4      R,           pV'       d   W€PE                  V4      ,          pV P2                  PG                  V4      V n$        \K        V PH                  V PL                  4       V# )z+Implements `.HTTPConnection.write_headers`.Ú z	 HTTP/1.1rˆ   NzHTTP/1.1 %d %súHTTP/1.1r†   r‡   r‘   Ú
ConnectionzHTTP/1.0Ú ú
keep-alivez
Keep-AliveÚchunkedr‰   c              3   ój   "  € T F)  w  r\        V4      R ,           \        V4      ,           x € K+  	  R# 5i)z: N)r   )Ú.0ÚnÚvs   &  r   Ú	<genexpr>Ú0HTTP1Connection.write_headers.<locals>.<genexpr>Ä  s+   é € ð 
Ù=N±T°QŒJ�q‹M˜DÕ ¤:¨a£=×0Ò0Ó=Nùs   ‚13c              3   óB   "  € T F  qP                  R 4      x € K  	  R# 5i)Úlatin1N)Úencode)rÝ   Úlines   & r   rà   rá   Ç  s   é € ÐD±|¨t—[‘[ ×*Ð*³|ùs   ‚z+Illegal characters (CR or LF) in header: %ró   
s   

)ÚPOSTÚPUTÚPATCH)éÌ   r‡   )'rb   rH   r   rÒ   rq   Úappendr   r™   rt   r˜   rs   rr   Úversionrš   ro   r›   Úlowerr   ru   Ú	parse_intÚget_allÚextendÚCR_OR_LF_REÚsearchÚ
ValueErrorra   r¡   r   r´   Úset_exceptionr	   r�   Ú	exceptionÚjoinÚ_format_chunkrœ   rv   r   Ú_on_write_complete)	r$   rª   r¨   rÐ   ÚlinesÚheader_linesrå   ÚfutureÚdatas	   &&&&     r   Úwrite_headersÚHTTP1Connection.write_headers‚  sx  € ð ˆØ�>�>ˆ>Ü˜j¬(×*CÑ*C×DÒDÐDÐDØ'1Ô$Ø�L‰Lœ ¨A¥ ¨q°¸Aµ°¸yÐIÓJÔKð
 ×!Ñ!Ð%=Ñ=÷ 4ð 4Ø$¨GÑ3ð Ö!ô
 ˜j¬(×*DÑ*D×EÒEÐEÐEØ×+Ñ+Ò7Ð7Ð7Ø×(Ñ(Ò4Ð4Ð4Ø(2Ô%Ø�L‰LœÐ.°*¸Qµ-ÀÈAÅÐ1OÕOÓPÔQð
 ×(Ñ(×0Ñ0°JÑ>÷ 	4ð 	4à×,Ñ,×3Ñ3°vÑ=÷	4ð 	4ð —O‘O¨:Ñ5÷	4ð 	4ð  —_‘_ sÑ*×DÐD¨j¯o©oÀÑ.D÷	4ð 	4ð %¨GÑ3ð Ô!ð" ×(Ñ(×0Ñ0°JÔ>Ø×.×.Ð.à(/�˜Ñ%ð ×(Ñ(×0Ñ0°JÔ>Ø×)Ñ)×-Ñ-¨l¸BÓ?×EÑEÓGÈ<ÔWà(4�˜Ñ%Ø× × Ð Ø+4ˆGÐ'Ñ(Ø�~�~ˆ~Ø×$Ñ$×+Ñ+¨vÔ5Ü”H×.Ñ.°
Ó;×@Ñ@ÀCÔGà/0ˆDÕ,Ø Ô(Ü/8¸ÐAQÕ9RÓ/SˆDÕ,à/3ˆDÔ,ñ
Ø=D¿_¹_Ô=Nó
ˆð 	�‰ÑD±|ÓDÔDÛˆDÜ×!Ñ! $×'Ô'Ü Ð!NÐQUÕ!UÓVÐVñ ð ˆØ�;‰;×Ñ×ÒÜ*0«(Ð2ˆFÔ'Ø× Ñ ¤×!;Ò!;Ó!=Ô>Ø×ÑÔð ˆô +1«(Ð2ˆFÔ'Ø—<‘< Ó&¨Õ4ˆDßØ×*Ñ*¨5Ó1Õ1�Ø"&§+¡+×"3Ñ"3°DÓ"9ˆDÔÜ$ T×%8Ñ%8¸$×:QÑ:QÔRØˆr    c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r   rÐ   r   ©rÔ   )r   r   s   "€r   r   rg   Ù  s   ø€ ÷ ñ ¡5ð ©Uñ r    c                ó|  € V P                   ed   V ;P                   \        V4      ,          un         V P                   ^ 8  d1   V P                  P                  4        \        P
                  ! R4      hV P                  '       d9   V'       d1   \        R\        V4      ,          4      R,           V,           R,           # V# )Nz,Tried to write more data than Content-Lengthz%xræ   )ru   Úlenra   r‘   r   ÚHTTPOutputErrorrt   r   )r$   rÐ   s   &&r   r÷   ÚHTTP1Connection._format_chunkÙ  s‘   € Ø×+Ñ+Ò7Ø×,Ò,´°E³
Õ:Õ,Ø×/Ñ/°!Ô3à—‘×!Ñ!Ô#Ü×.Ò.ØBóð ð × × Ð §Uô ˜œs 5›zÕ)Ó*¨WÕ4°uÕ<¸wÕFÐFàˆLr    c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   rÐ   r   rÑ   r   )r   r   s   "€r   r   rg   é  s   ø€ ÷ ñ ™5ð  ^ñ r    c                ó¼  € RpV P                   P                  4       '       d[   \        4       ;q n        V P                  P	                  \
        P                  ! 4       4       V P                  P                  4        V# \        4       ;q n        V P                   P                  V P                  V4      4      V n
        \        V P                  V P                  4       V# )z²Implements `.HTTPConnection.write`.

For backwards compatibility it is allowed but deprecated to
skip `write_headers` and instead call `write()` with a
pre-encoded header block.
N)ra   r¡   r   r´   rô   r	   r�   rõ   rœ   r÷   rv   r   rø   )r$   rÐ   rû   s   && r   rœ   ÚHTTP1Connection.writeé  s«   € ð ˆØ�;‰;×Ñ×ÒÜ*0«(Ð2ˆFÔ'Ø×Ñ×,Ñ,¬X×-GÒ-GÓ-IÔJØ×Ñ×(Ñ(Ô*ð
 ˆô +1«(Ð2ˆFÔ'Ø"&§+¡+×"3Ñ"3°D×4FÑ4FÀuÓ4MÓ"NˆDÔÜ$ T×%8Ñ%8¸$×:QÑ:QÔRØˆr    c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   rg   û  s   ø€ ÷ Pñ P˜ñ Pr    c                óì  € V P                   es   V P                   ^ 8w  db   V P                  P                  4       '       gB   V P                  P                  4        \        P
                  ! RV P                   ,          4      hV P                  '       df   V P                  P                  4       '       gF   V P                  P                  R4      V n        V P                  P                  V P                  4       RV n        V P                  '       g   RV n        V P                  P                  R4       V P                  f   V P                  R4       R# \!        V P                  V P                  4       R# )z$Implements `.HTTPConnection.finish`.Nz0Tried to write %d bytes less than Content-Lengths   0

T)ru   ra   r¡   r‘   r   r  rt   rœ   rv   Úadd_done_callbackrø   rl   rm   ro   Úset_nodelayÚ_finish_requestr   r#   s   &r   rŸ   ÚHTTP1Connection.finishû  s  € ð ×,Ñ,Ò8Ø×0Ñ0°AÔ5Ø—K‘K×&Ñ&×(Ò(à�K‰K×ÑÔÜ×*Ò*ØBØ×2Ñ2õ3óð ð × × Ð Ø—;‘;×%Ñ%×'Ò'Ø&*§k¡k×&7Ñ&7¸Ó&E�Ô#Ø×#Ñ#×5Ñ5°d×6MÑ6MÔNØ#ˆÔð ×"×"Ð"Ø)-ˆDÔ&ð 	�‰×Ñ Ô%Ø×ÑÒ&Ø× Ñ  Ö&ä$ T×%8Ñ%8¸$×:NÑ:NÖOr    c                ó"   <€ V ^8„  d   QhRRRR/# )r   rû   rÑ   r   Nr   )r   r   s   "€r   r   rg     s   ø€ ÷ =ñ =¨ð =¸Dñ =r    c                óx  € VP                  4       pVe1   \        V\        P                  4      '       g   VP	                  4        V P
                  e9   V P
                  pR V n        V P                  P                  P                  V4       V P                  e"   V P                  pR V n	        \        VR 4       R # R # r"   )rõ   rH   r	   r�   Úresultr³   ra   r�   Úadd_callbackr´   r   )r$   rû   Úexcr¸   s   &&  r   rø   Ú"HTTP1Connection._on_write_complete  s•   € Ø×ÑÓ ˆØŠ?¤:¨c´8×3MÑ3M×#NÒ#NØ�M‰MŒOØ×ÑÒ+Ø×+Ñ+ˆHØ#'ˆDÔ Ø�K‰K×Ñ×,Ñ,¨XÔ6Ø×ÑÒ)Ø×'Ñ'ˆFØ!%ˆDÔÜ.¨v°tÖ<ñ *r    c                óT   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[/# )r   rª   r¨   r   )r   rÒ   rÓ   rX   )r   r   s   "€r   r   rg   (  s1   ø€ ÷ ñ Ù"×3Ñ3ðÙ>F×>RÑ>Rðá	ñr    c                ó  € V P                   P                  '       d   R # VP                  R4      pVe   VP                  4       pVP                  R8X  d   VR8g  # RV9   g$   \        V4      '       g   \        VRR4      R9   d   VR8H  # R # )	FrØ   Nr×   r‘   rˆ   r™   rÚ   )r†   ÚGET)rc   rQ   r›   rí   rì   Úis_transfer_encoding_chunkedÚgetattr)r$   rª   r¨   Úconnection_headers   &&& r   r–   ÚHTTP1Connection._can_keep_alive(  sˆ   € ð �;‰;×$×$Ð$ÙØ#ŸK™K¨Ó5ÐØÒ(Ø 1× 7Ñ 7Ó 9ÐØ×Ñ Ô+Ø$¨Ñ/Ð/à Ô'Ü+¨G×4Ò4Ü�z 8¨TÓ2°oÔEð %¨Ñ4Ð4Ùr    c                ó"   <€ V ^8„  d   QhRRRR/# )r   rû   zOptional[Future[None]]r   Nr   )r   r   s   "€r   r   rg   <  s    ø€ ÷ 	Jñ 	JÐ&>ð 	JÀ4ñ 	Jr    c                ó8  € V P                  4        V P                  '       g%   V P                  '       d   V P                  4        R # V P                  P                  R4       V P                  P                  4       '       g   \        V P                  R 4       R # R # )NF)	rp   rb   ro   r‘   ra   r  rn   r    r   )r$   rû   s   &&r   r  ÚHTTP1Connection._finish_request<  sl   € Ø×ÑÔØ�~�~ˆ~ $×"<×"<Ð"<Ø�J‰JŒLÙð 	�‰×Ñ Ô&Ø×"Ñ"×'Ñ'×)Ò)Ü.¨t×/BÑ/BÀDÖIñ *r    c                óP   <€ V ^8„  d   QhRS[ RS[S[S[P                  3,          /# )r   rü   r   )rÔ   r   Ústrr   rÓ   )r   r   s   "€r   r   rg   G  s+   ø€ ÷ 
#ñ 
#¡5ð 
#©U±3¹×8LÑ8LÐ3LÕ-Mñ 
#r    c                óæ   € \        VP                  R 4      4      P                  R4      pVP                  R4      pVRV P	                  R4      p\
        P                  P                  W#R 4      pWE3# )rã   z
Ú
NÚ)r   ÚdecodeÚlstripÚfindÚrstripr   rÓ   Úparse)r$   rü   Údata_strÚeolrª   r¨   s   &&    r   r“   ÚHTTP1Connection._parse_headersG  si   € ô
 ˜dŸk™k¨(Ó3Ó4×;Ñ;¸FÓCˆà�m‰m˜DÓ!ˆØ˜d˜s�^×*Ñ*¨4Ó0ˆ
Ü×&Ñ&×,Ñ,¨X°d¨^Ó<ˆØÐ"Ð"r    c          
      óx   <€ V ^8„  d   QhRS[ RS[P                  RS[P                  RS[S[R,          ,          /# )r   rš   r¨   rz   r   N)rY   r   rÓ   r{   r   r   )r   r   s   "€r   r   rg   S  sH   ø€ ÷ 3ñ 3áð3ñ ×%Ñ%ð3ñ ×.Ñ.ð	3ñ
 
‘)˜D•/Õ	"ñ3r    c                ól  a€ R V9   dæ   RVR ,          9   d�   \         P                  ! RVR ,          4      o\        ;QJ d    V3R lS 4       F  '       g   K   RM	  RM! V3R lS 4       4      '       d%   \        P                  ! RVR ,          ,          4      hS^ ,          VR &    \        VR ,          4      p\        \        T4      T P                  8”  d   \        P                  ! R4      hMR	p\        V4      pV^Ì8X  d/   V'       g   VR9  d   \        P                  ! R
V,          4      h^ pV'       d   V P                  V4      # Ve   V P                  WC4      # V P                  '       d   V P                  V4      # R	#   \         d&    \        P                  ! RTR ,          ,          4      hi ; i)rˆ   Ú,z,\s*c              3   ó:   <"  € T F  qS^ ,          8g  x € K  	  R# 5i©é    Nr   )rÝ   ÚiÚpiecess   & €r   rà   Ú-HTTP1Connection._read_body.<locals>.<genexpr>_  s   øé € Ð6©v¨!˜F 1�I–~«vùs   ƒTFz$Multiple unequal Content-Lengths: %rz*Only integer Content-Length is allowed: %szContent-Length too longNz*Response with code %d should not have body)Nr0  )ÚreÚsplitÚanyr   rI   rî   ró   r   rY   rj   r  Ú_read_chunked_bodyÚ_read_fixed_bodyrb   Ú_read_body_until_close)r$   rš   r¨   rz   Úcontent_lengthÚ
is_chunkedr2  s   &&&&  @r   r�   ÚHTTP1Connection._read_bodyS  s�  ø€ ð ˜wÔ&Ø�gÐ.Õ/Ô/ô Ÿš '¨7Ð3CÕ+DÓE�ß“3Ô6©vÓ6—3—3’3Ô6©vÓ6×6Ò6Ü"×1Ò1Ø>Ø!Ð"2Õ3õ4óð ð -3°1­I�Ð(Ñ)ðÜ09¸'ÐBRÕ:SÓ0T�ô ”C˜Ó(¨4×+>Ñ+>Ô>Ü×-Ò-Ð.GÓHÐHð ?ð "ˆNä1°'Ó:ˆ
à�3Œ;÷ ˜^°9Ô<Ü×-Ò-Ø@À4ÕGóð ð ˆNçØ×*Ñ*¨8Ó4Ð4ØÒ%Ø×(Ñ(¨ÓBÐBØ�>�>ˆ>Ø×.Ñ.¨xÓ8Ð8Ùøô= ô ä×-Ò-Ø@ØÐ.Õ/õ0óð ðús   Â&F Æ0F3c                ó>   <€ V ^8„  d   QhRS[ RS[P                  RR/# )r   r:  rz   r   N)rY   r   r{   )r   r   s   "€r   r   rg   ˆ  s+   ø€ ÷ "ñ "Ù!ð"Ù-5×-IÑ-Ið"à	ñ"r    c              ƒ  óÄ  "  € V^ 8”  d½   V P                   P                  \        V P                  P                  V4      RR7      G Rj  x€L
 pV\        V4      ,          pV P                  '       d   V P                  '       g   K‚  \        \        4      ;_uu_ 4        VP                  V4      pVe   VG Rj  x€L
  RRR4       KÃ  R#  L L  + '       g   i     KÚ  ; i5i)r0  T©ÚpartialN)ra   Ú
read_bytesÚminrc   rR   r  rl   rb   r0   r   Údata_received)r$   r:  rz   ÚbodyÚrets   &&&  r   r8  Ú HTTP1Connection._read_fixed_bodyˆ  s°   é € ð ˜qÔ ØŸ™×/Ñ/Ü�D—K‘K×*Ñ*¨NÓ;ÀTð 0ó ÷ ˆDð œc $›iÕ'ˆNØ×'×'Ð'¨4¯>¯>ª>Ü-¬g×6Õ6Ø"×0Ñ0°Ó6�CØ’Ø!Ÿ	˜	÷ 7Ñ6ñ !ññ "÷ 7×6Ð6üsB   ‚AC ÁCÁ	7C ÂC ÂCÂ7C
Â8CÂ<C Ã
CÃC	Ã	C c                ó8   <€ V ^8„  d   QhRS[ P                  RR/# ©r   rz   r   N©r   r{   )r   r   s   "€r   r   rg   –  s"   ø€ ÷  #ñ  #±×1MÑ1Mð  #ÐRVñ  #r    c              ƒ  óì  "  € ^ p V P                   P                  R^@R7      G Rj  x€L
 p \        \        VRR	 4      4      pT^ 8X  dC   T P                   P                  ^4      G Rj  x€L
 pTR8w  d   \
        P                  ! R4      hR# Y$,          pY P                  8”  d   \
        P                  ! R4      hTpT'       d¼   T P                   P                  \        Y`P                  P                  4      RR7      G Rj  x€L
 pT\        T4      ,          pT P                  '       d   T P                  '       g   K‚  \        \         4      ;_uu_ 4        TP#                  T4      pTe   TG Rj  x€L
  RRR4       KÃ  T P                   P                  ^4      G Rj  x€L
 pTR8X  d   EK§  Q h ELˆ  \         d    \
        P                  ! R4      hi ; i ELn L× Lj  + '       g   i     EK3  ; i LT5i)
r0  Træ   rƒ   Nzinvalid chunk sizez%improperly terminated chunked requestzchunked body too larger?  éþÿÿÿ)ra   Ú
read_untilÚparse_hex_intr   ró   r   rI   rA  rj   rB  rc   rR   r  rl   rb   r0   r   rC  )	r$   rz   Ú
total_sizeÚchunk_len_strÚ	chunk_lenÚcrlfÚbytes_to_readrÐ   rE  s	   &&       r   r7  Ú"HTTP1Connection._read_chunked_body–  sª  é € àˆ
ØØ"&§+¡+×"8Ñ"8¸ÈBÐ"8Ó"O×OˆMðDÜ)¬*°]À3ÀBÐ5GÓ*HÓI�	ð ˜AŒ~Ø!Ÿ[™[×3Ñ3°AÓ6×6�Ø˜7”?Ü"×1Ò1Ø?óð ñ ØÕ#ˆJØ×/Ñ/Ô/Ü×-Ò-Ð.FÓGÐGØ%ˆMßØ"Ÿk™k×4Ñ4Ü˜§{¡{×'=Ñ'=Ó>Èð 5ó ÷ �ð ¤ U£Õ+�Ø×+×+Ð+¨t¯~¯~ª~Ü1´'×:Õ:Ø&×4Ñ4°UÓ;˜Øš?Ø"%ŸI˜I÷ ;Ñ:ð
 Ÿ™×/Ñ/°Ó2×2ˆDØ˜7—?Ð"�?ò9 Pøô ô DÜ×-Ò-Ð.BÓCÐCðDúò 7ññ &÷ ;×:Ñ:úñ
 3ùs�   ‚$G4¦F.§G4¬F1 Á%G4Á(GÁ)AG4Ã=G4ÄGÄ7G4Ä>G4ÅGÅ0GÅ1GÅ5(G4ÆG2ÆG4Æ,G4Æ1"GÇG4ÇG4ÇGÇG/	Ç(G4c                ó8   <€ V ^8„  d   QhRS[ P                  RR/# rH  rI  )r   r   s   "€r   r   rg   ¸  s#   ø€ ÷ ñ Ù ×4Ñ4ðà	ñr    c              ƒ  óL  "  € V P                   P                  4       G R j  x€L
 pV P                  '       d   V P                  '       dB   \	        \
        4      ;_uu_ 4        VP                  V4      pVe   VG R j  x€L
  R R R 4       R # R #  Lk L  + '       g   i     R # ; i5ir"   )ra   Úread_until_closerl   rb   r0   r   rC  )r$   rz   rD  rE  s   &&  r   r9  Ú&HTTP1Connection._read_body_until_close¸  sy   é € ð —[‘[×1Ñ1Ó3×3ˆØ×#×#Ð# t§~§~ ~Ü)¬'×2Õ2Ø×,Ñ,¨TÓ2�Ø’?Ø—I�I÷ 3Ñ2ñ (6ñ 4ñ
 ÷ 3×2Ð2üsD   ‚B$ B¡B$·B$Á	B$Á BÁ;BÁ<BÂ B$ÂBÂB!	Â	B$)rk   rt   rµ   ro   ru   rn   rj   rv   rm   rs   rq   rr   r³   rl   r´   rd   rb   rQ   rc   ra   ©NNr"   )r(   r)   r*   r+   rM   r%   r   r~   rp   r¢   r£   r‘   rÄ   rÉ   rÍ   rý   r÷   rœ   rŸ   rø   r–   r  r“   r�   r8  r7  r9  r,   r-   r.   s   @r   r_   r_   m   sö   ø‡ € ñ÷7#ò 7#÷r,ð ,÷"xð x÷t
1ð 
1÷(ð (÷
 ð 
 ÷Jð J÷ð ÷%ð %÷,ð ,÷Uò U÷nð ÷ ð ÷$Pð P÷@=ð =÷ð ÷(	Jð 	J÷
#ð 
#÷3ð 3÷j"ð "÷ #ð  #÷Dö r    r_   c                   ó~   a € ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	Rt
V tR# )r}   iÃ  zDWraps an `HTTPMessageDelegate` to decode ``Content-Encoding: gzip``.c                óD   <€ V ^8„  d   QhRS[ P                  RS[RS[RR/# )r   rz   rR   rU   r   N)r   r{   rY   )r   r   s   "€r   r   Ú!_GzipMessageDelegate.__annotate__Æ  s9   ø€ ÷ 
"ñ 
"á×.Ñ.ð
"ñ ð
"ñ ð	
"ð
 
ñ
"r    c                óF   € Wn         W n        W0n        ^ V n        RV n        R# r/  )Ú	_delegateÚ_chunk_sizerj   Ú_decompressed_body_sizeÚ_decompressor)r$   rz   rR   rU   s   &&&&r   r%   Ú_GzipMessageDelegate.__init__Æ  s%   € ð "ŒØ%ÔØ+ÔØ'(ˆÔ$Ø!ˆÖr    c                óœ   <€ V ^8„  d   QhRS[ S[P                  S[P                  3,          RS[P                  RS[S[R,          ,          /# )r   rª   r¨   r   N)r   r   rÒ   r˜   rÓ   r   r   )r   r   s   "€r   r   r[  Ò  sS   ø€ ÷ Dñ Dá™(×3Ñ3±X×5OÑ5OÐOÕPðDñ ×%Ñ%ðDñ 
‘)˜D•/Õ	"ñ	Dr    c                óØ   € VP                  R R4      P                  4       R8X  d,   \        4       V n        VP	                  RVR ,          4       VR  V P
                  P                  W4      # )zContent-EncodingrÙ   ÚgzipzX-Consumed-Content-Encoding)r›   rí   r   r`  Úaddr]  r—   )r$   rª   r¨   s   &&&r   r—   Ú%_GzipMessageDelegate.headers_receivedÒ  sa   € ð
 �;‰;Ð)¨2Ó.×4Ñ4Ó6¸&Ô@Ü!1Ó!3ˆDÔð �K‰KÐ5°wÐ?QÕ7RÔSØÐ*Ð+Ø�~‰~×.Ñ.¨zÓCÐCr    c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   rÐ   r   Nr   )r   r   s   "€r   r   r[  à  s   ø€ ÷ ñ ©ð °4ñ r    c              ƒ  óz  "  € V P                   '       dö   TpV'       dê   V P                   P                  W P                  4      pV'       d}   V ;P                  \	        V4      ,          un        V P                  V P
                  8”  d   \        P                  ! R 4      hV P                  P                  V4      pVe   VG Rj  x€L
  V P                   P                  pV'       g   KÑ  V'       d   KÛ  \        P                  ! R4      hR# V P                  P                  V4      pVe   VG Rj  x€L
  R# R#  Ls L
5i)zdecompressed body too largeNz8encountered unconsumed gzip data without making progress)r`  rW   r^  r_  r  rj   r   rI   r]  rC  Úunconsumed_tail)r$   rÐ   Úcompressed_dataÚdecompressedrE  s   &&   r   rC  Ú"_GzipMessageDelegate.data_receivedà  sÿ   é € Ø××ÐØ#ˆOß!Ø#×1Ñ1×<Ñ<Ø#×%5Ñ%5ó �÷  Ø×0Ò0´C¸Ó4EÕEÕ0Ø×3Ñ3°d×6IÑ6IÔIÜ&×5Ò5Ð6SÓTÐTØŸ.™.×6Ñ6°|ÓD�CØ’Ø!Ÿ	˜	Ø"&×"4Ñ"4×"DÑ"D�ß"‘?¯<©<Ü"×1Ò1ØRóð ñ "ð" —.‘.×.Ñ.¨uÓ5ˆCØŠØ—	’	ñ ñ "ñ ùs5   ‚D;ŸB$D;ÃD7ÃD;Ã(D;Ã2<D;Ä.D9Ä/	D;Ä9D;c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r[  ø  s   ø€ ÷ 'ñ '˜ñ 'r    c                ó¬   € V P                   e.   V P                   P                  4       pV'       d   \        R4      hV P                  P	                  4       # )Nz:decompressor.flush returned data; possible truncated input)r`  Úflushró   r]  rŸ   )r$   Útails   & r   rŸ   Ú_GzipMessageDelegate.finishø  sL   € Ø×ÑÒ)Ø×%Ñ%×+Ñ+Ó-ˆDßô !ØPóð ð �~‰~×$Ñ$Ó&Ð&r    c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r[    s   ø€ ÷ 4ñ 4 Tñ 4r    c                ó6   € V P                   P                  4       # r"   )r]  r’   r#   s   &r   r’   Ú(_GzipMessageDelegate.on_connection_close  s   € Ø�~‰~×1Ñ1Ó3Ð3r    )r^  r_  r`  r]  rj   N)r(   r)   r*   r+   rM   r%   r—   rC  rŸ   r’   r,   r-   r.   s   @r   r}   r}   Ã  s<   ø‡ € ÙN÷
"ð 
"÷Dð D÷ð ÷0'ð '÷4ö 4r    r}   c                   óp   a € ] tR tRt o RtRV 3R lR lltV 3R lR ltV 3R lR	 ltV 3R
 lR ltRt	V t
R# )ÚHTTP1ServerConnectioni  zAn HTTP/1.x server.Nc                ód   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[,          RR/# )r   ra   rc   rd   r   N)r	   re   r   rO   rf   )r   r   s   "€r   r   Ú"HTTP1ServerConnection.__annotate__  sD   ø€ ÷ $ñ $á×!Ñ!ð$ñ Ñ2Õ3ð$ñ ™&Õ!ð	$ð
 
ñ$r    c                óT   € Wn         Vf   \        4       pW n        W0n        RV n        R# )zµ
:arg stream: an `.IOStream`
:arg params: a `.HTTP1ConnectionParameters` or None
:arg context: an opaque application-defined object that is accessible
    as ``connection.context``
N)ra   rO   rc   rd   Ú_serving_future)r$   ra   rc   rd   s   &&&&r   r%   ÚHTTP1ServerConnection.__init__  s(   € ð ŒØŠ>Ü.Ó0ˆFØŒØŒØ#ˆÖr    c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   rx  !  s   ø€ ÷ ñ ˜Tñ r    c              ƒ  ó´   "  € V P                   P                  4        V P                  f   Q h V P                  G Rj  x€L
  R#  L  \         d     R# i ; i5i)z]Closes the connection.

Returns a `.Future` that resolves after the serving loop has exited.
N)ra   r‘   rz  Ú	Exceptionr#   s   &r   r‘   ÚHTTP1ServerConnection.close!  sP   é € ð
 	�‰×ÑÔð ×#Ñ#Ò/Ð/Ð/ð	Ø×&Ñ&×&Ô&øÜô 	Úð	üs8   ‚+A®A ½A¾A ÁAÁA ÁAÁAÁAÁAc                ó8   <€ V ^8„  d   QhRS[ P                  RR/# rH  ©r   ÚHTTPServerConnectionDelegate)r   r   s   "€r   r   rx  /  s&   ø€ ÷ 	Bñ 	B¡h×&KÑ&Kð 	BÐPTñ 	Br    c                óî   € \        V\        P                  4      '       g   Q h\        P                  ! V P                  V4      4      pW n        V P                  P                  P                  VR 4       R# )z^Starts serving requests on this connection.

:arg delegate: a `.HTTPServerConnectionDelegate`
c                 ó"   € V P                  4       # r"   )r  )Úfs   &r   Ú<lambda>Ú5HTTP1ServerConnection.start_serving.<locals>.<lambda>8  s
   € °a·h±h´jr    N)
rH   r   r‚  r   Úconvert_yieldedÚ_server_request_looprz  ra   r�   Ú
add_future)r$   rz   Úfuts   && r   Ústart_servingÚ#HTTP1ServerConnection.start_serving/  sY   € ô
 ˜(¤H×$IÑ$I×JÒJÐJÐJÜ×!Ò! $×";Ñ";¸HÓ"EÓFˆØ"Ôà�‰×Ñ×&Ñ& sÑ,@ÖAr    c                ó8   <€ V ^8„  d   QhRS[ P                  RR/# rH  r�  )r   r   s   "€r   r   rx  :  s#   ø€ ÷ $ñ $Ù ×=Ñ=ð$à	ñ$r    c              ƒ  óè  "  €   \        V P                  RV P                  V P                  4      pVP	                  W4      p VP                  V4      G Rj  x€L
 pT'       g    TP                  T 4       R# \        P"                  ! ^ 4      G Rj  x€L
  K”   L@  \        P                  \        P                  \        P                  3 d     TP                  T 4       R# \         d&    TP                  4         TP                  T 4       R# \         d>    \        P                   ! RR R7       TP                  4         TP                  T 4       R# i ; i LÈ  TP                  T 4       i ; i5i)TFNrE   rF   )r_   ra   rc   rd   Ústart_requestr   r	   r�   ÚUnsatisfiableReadErrorÚasyncioÚCancelledErrorÚon_closer   r‘   r~  r
   rJ   Úsleep)r$   rz   ÚconnÚrequest_delegaterE  s   &&   r   r‰  Ú*HTTP1ServerConnection._server_request_loop:  s5  é € ð	$ØÜ& t§{¡{°E¸4¿;¹;ÈÏÉÓU�Ø#+×#9Ñ#9¸$Ó#EÐ ðØ $× 2Ñ 2Ð3CÓ D×D�C÷ Øð ×Ñ˜dÖ#ô —m’m AÓ&×&Ò&ñ# Eøä×.Ñ.Ü×3Ñ3Ü×*Ñ*ðô ð
 ð ×Ñ˜dÖ#ô 'ô à—J‘J”LØð ×Ñ˜dÖ#ô !ô Ü—M’MÐ"6ÀÕFØ—J‘J”LØð
 ×Ñ˜dÖ#ðúñ 'øà×Ñ˜dÕ#üsš   ‚E2„>E ÁB ÁBÁB ÁE Á%E2Á8E ÂEÂE ÂB Â4EÃE ÃE2Ã"EÃ+EÃ<E Ã=E2ÄEÄ)EÅE ÅE2ÅEÅE ÅE/Å/E2)rz  rd   rc   ra   rX  )r(   r)   r*   r+   rM   r%   r‘   rŒ  r‰  r,   r-   r.   s   @r   rv  rv    s2   ø‡ € Ù÷$ò $÷&ð ÷	Bð 	B÷$ö $r    rv  z[0-9]+z[0-9a-fA-F]+c                ó0   € V ^8„  d   QhR\         R\        /# ©r   Úsr   ©r  rY   )r   s   "r   r   r   \  s   € ÷ ñ ”ð œñ r    c                ój   € \         P                  V 4      f   \        RV ,          4      h\        V 4      # )z+Parse a non-negative integer from a string.znot an integer: %r)ÚDIGITSÚ	fullmatchró   rY   ©r›  s   &r   rî   rî   \  s-   € ä×Ñ˜ÓÒ"ÜÐ-°Õ1Ó2Ð2Üˆq‹6€Mr    c                ó0   € V ^8„  d   QhR\         R\        /# rš  rœ  )r   s   "r   r   r   c  s   € ÷ ñ ”Sð œSñ r    c                ól   € \         P                  V 4      f   \        RV ,          4      h\        V ^4      # )z7Parse a non-negative hexadecimal integer from a string.znot a hexadecimal integer: %r)Ú	HEXDIGITSrŸ  ró   rY   r   s   &r   rM  rM  c  s0   € ä×Ñ˜1ÓÒ%ÜÐ8¸1Õ<Ó=Ð=Üˆq�"‹:Ðr    c                óD   € V ^8„  d   QhR\         P                  R\        /# )r   r¨   r   )r   rÓ   rX   )r   s   "r   r   r   j  s    € ÷ ñ ¬(×*>Ñ*>ð Ä4ñ r    c                óÒ   € RV 9  d   R# RV 9   d   \         P                  ! R4      hV R,          P                  4       R8X  d   R# \         P                  ! RV R,          ,          4      h)z‡Returns true if the headers specify Transfer-Encoding: chunked.

Raise httputil.HTTPInputError if any other transfer encoding is used.
r‰   Frˆ   z6Message with both Transfer-Encoding and Content-LengthrÛ   Tz Unsupported Transfer-Encoding %s)r   rI   rí   )r¨   s   &r   r  r  j  sn   € ð  'Ô)ÙØ˜7Ô"ô ×%Ò%ØDó
ð 	
ð Ð"Õ#×)Ñ)Ó+¨yÔ8Ùô ×
!Ò
!Ø*¨WÐ5HÕ-IÕIóð r    )-rM   r’  r3   r4  rB   Útornado.concurrentr   r   r   Útornado.escaper   r   Útornador   r   r	   Útornado.logr
   r   Útornado.utilr   Útypingr   r   r   r   r   r   r   Úcompilerñ   r~  r   r0   rO   ÚHTTPConnectionr_   r{   r}   rv  rž  r£  rî   rM  r  r   r    r   Ú<module>r®     sÕ   ðñ ó
 Û Û 	Û ÷ñ ÷
 ,Ý Ý Ý ß (Ý )÷ K× JÑ Jà�jŠj˜Ó"€ô�iô ÷
"ñ "÷6%ñ %ôBS	�h×-Ñ-ô S	ôlE4˜8×7Ñ7ô E4÷PJ$ñ J$ðZ 
�Š�IÓ	€Ø�JŠJ�Ó'€	õõ÷r    