§
    Hºit¥  ã                   ó   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl	m
Z
 d dl	mZ d dlmZ d dlmZ d dlmZ dZdZd	Zd	Zd
ZdZdZdZdZdZdZdZddgZg d¢Zg d¢Zd„ Z d„ Z!e j"        dhZ#e j$        e j%        e j&        hZ' G d„ de(¦  «        Z) e¦   «         Z* G d„ d¦  «        Z+ G d„ de,¦  «        Z- G d„ d e,¦  «        Z.d!„ Z/ G d"„ d#¦  «        Z0 G d$„ d%e0¦  «        Z1 G d&„ d'¦  «        Z2 G d(„ d)ej3        ¦  «        Z4 G d*„ d+ej5        ¦  «        Z6	 d dl7Z7ej8        e7j9        fZ:e j$        e j%        e j&        e7j;        e7j<        hZ=n'# e>$ r ej8        fZ:e j$        e j%        e j&        hZ=Y nw xY wd,„ Z?dddee4ddddddeedddfd-„Z@dS ).é    N)Úgreenio)Úsupport)Úlocal)ÚBaseHTTPServer)Úsocketi   úHTTP/1.1i    i   i   zg%(client_ip)s - - [%(date_time)s] "%(request_line)s" %(status_code)s %(body_length)s %(wall_seconds).6fsK   HTTP/1.0 414 Request URI Too Long
Connection: close
Content-Length: 0

TÚidleÚrequestÚcloseÚserverÚformat_date_time)ÚMonÚTueÚWedÚThuÚFriÚSatÚSun)NÚJanÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecc           	      ó‚   — t          j        | ¦  «        \	  }}}}}}}}}	dt          |         |t          |         ||||fz  S )z6Formats a unix timestamp into an HTTP standard string.z#%s, %02d %3s %4d %02d:%02d:%02d GMT)ÚtimeÚgmtimeÚ_weekdaynameÚ
_monthname)
Ú	timestampÚyearÚmonthÚdayÚhhÚmmÚssÚwdÚ_yÚ_zs
             úR/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/eventlet/wsgi.pyr   r   -   sO   € å/3¬{¸9Ñ/EÔ/EÑ,€Dˆ%��b˜"˜b " b¨"Ø0Ý�RÔ˜#�z¨%Ô0°$¸¸BÀð4ñ ð ó    c                 ó\   — d}d}t          | t          ¦  «        r| d         }| d         }||fS )NÚunixÚ r   é   )Ú
isinstanceÚtuple)ÚaddrÚhostÚports      r0   Úaddr_to_host_portr;   5   s:   € Ø€DØ€DÝ�$�ÑÔð Ø�AŒwˆØ�AŒwˆØ�$ˆ<Ðr1   iE'  c                   ó   — e Zd ZdS )ÚChunkReadErrorN©Ú__name__Ú
__module__Ú__qualname__© r1   r0   r=   r=   D   ó   € € € € € Ø€Dr1   r=   c                   ó„   — e Zd Z	 	 	 dd„Zd„ Zed„ ¦   «         Zdd„Zd„ Zdd„Z	dd	„Z
dd
„Zdd„Zd„ Zd„ Z	 dd„Zdd„ZdS )ÚInputNFc                 óÂ   — || _         || _        |�t          |¦  «        }|| _        || _        || _        d| _        || _        d| _        d | _	        d| _
        d | _        d S )Nr   éÿÿÿÿF)ÚrfileÚ_sockÚintÚcontent_lengthÚwfileÚ
wfile_lineÚpositionÚchunked_inputÚchunk_lengthÚhundred_continue_headersÚ!is_hundred_continue_response_sentÚheaders_sent)ÚselfrH   rK   ÚsockrL   rM   rO   s          r0   Ú__init__zInput.__init__M   st   € ð ˆŒ
ØˆŒ
ØÐ%Ý  Ñ0Ô0ˆNØ,ˆÔàˆŒ
Ø$ˆŒàˆŒØ*ˆÔØˆÔð )-ˆÔ%Ø16ˆÔ.ð
 !ˆÔÐÐr1   c                 ód  — | j         rd S g }|                     | j        ¦  «         | j        �4| j        D ],}|                     d|z                       ¦   «         ¦  «         Œ-|                     d¦  «         | j                             |¦  «         | j                             ¦   «          d| _        d S )Nú%s: %s
ó   
rG   )	rS   ÚappendrM   rQ   ÚencoderL   Ú
writelinesÚflushrP   )rT   ÚtowriteÚheaders      r0   Úsend_hundred_continue_responsez$Input.send_hundred_continue_responsel   sÂ   € ØÔð 	ð
 ˆFàˆð 	�Š�t”Ñ'Ô'Ð'ð Ô(Ð4àÔ7ð Að A�Ø—’ ¨vÑ 5×=Ò=Ñ?Ô?Ñ@Ô@Ð@Ð@ð 	�Š�wÑÔÐàŒ
×Ò˜gÑ&Ô&Ð&ØŒ
×ÒÑÔÐð ˆÔÐÐr1   c                 ó$   — | j         d uo| j         S ©N)rL   rR   ©rT   s    r0   Úshould_send_hundred_continuez"Input.should_send_hundred_continueˆ   s   € àŒz Ð%ÐT¨dÔ.TÐ*TÐTr1   c                 ó&  — | j         r|                      ¦   «          d| _        |�|| j        | j        z
  k    r| j        | j        z
  }|sdS 	  ||¦  «        }n# t
          j        j        $ r d}Y nw xY w| xj        t          |¦  «        z  c_        |S )NTr1   )	rd   r`   rR   rK   rN   r   ÚSSLÚZeroReturnErrorÚlen)rT   ÚreaderÚlengthÚreads       r0   Ú_do_readzInput._do_readŒ   s´   € ØÔ,ð 	:à×/Ò/Ñ1Ô1Ð1Ø59ˆDÔ2Øˆ>˜V dÔ&9¸D¼MÑ&IÒIÐIØÔ(¨4¬=Ñ8ˆFØð 	Ø�3ð	Ø�6˜&‘>”>ˆDˆDøÝŒ{Ô*ð 	ð 	ð 	ØˆDˆDˆDð	øøøàˆŒ�˜T™œÑ"ˆŒØˆs   ÁA ÁA1Á0A1c                 ó>   — 	 |                      ¦   «         }|r|dv rd S Œ)NT)rY   ó   
r1   )Úreadline)rT   rH   Úlines      r0   Ú_discard_trailerszInput._discard_trailersœ   s3   € ð	Ø—>’>Ñ#Ô#ˆDØð ˜4Ð#8Ð8Ð8Ø�ð	r1   c                 óÀ  — | j         r|                      ¦   «          d| _        	 |dk    rdS |r|dk     rd }|r| j        j        }n| j        j        }g }| j        dk    �rQ| j        | j        z
  }|�||k     r|}|dk    r› ||¦  «        }|sd| _        t          d¦  «        ‚t          |¦  «        }| 
                    |¦  «         | xj        |z  c_        | j        | j        k    r|                     ¦   «          |�||z  }|dk    rn©|r|dd …         dk    rn˜n‹	 t          |                     ¦   «                              dd¦  «        d         d	¦  «        | _        n!# t          $ r}	t          |	¦  «        ‚d }	~	ww xY wd| _        | j        dk    r|                      |¦  «         | j        dk    �°Qn# t           j        j        $ r Y nw xY wd                     |¦  «        S )
NTr   r1   z1unexpected end of file while parsing chunked datarG   rn   ó   ;r5   é   )rd   r`   rR   rH   ro   rk   rP   rN   ÚOSErrorrh   rZ   rJ   ÚsplitÚ
ValueErrorr=   rq   r   rf   rg   Újoin)
rT   rH   rj   Úuse_readlineri   ÚresponseÚ
maxreadlenÚdataÚdatalenÚerrs
             r0   Ú_chunked_readzInput._chunked_read¢   s>  € ØÔ,ð 	:à×/Ò/Ñ1Ô1Ð1Ø59ˆDÔ2ð.	Ø˜Š{ˆ{Ø�sàð ˜& 1š*˜*Ø�àð )ØœÔ,��àœœ�àˆHØÔ# qÒ(Ñ(Ø!Ô.°´Ñ>�
ØÐ%¨&°:Ò*=Ð*=Ø!'�Jà ’>�>Ø!˜6 *Ñ-Ô-�DØð [Ø,-˜Ô)Ý%Ð&YÑZÔZÐZå! $™iœi�GØ—O’O DÑ)Ô)Ð)à�M”M WÑ,�M”MØÔ(¨D¬MÒ9Ð9ØŸšÑ(Ô(Ð(àÐ)Ø 'Ñ)˜Ø! Qš;˜;Ø!Ø#ð ¨¨R¨S¨S¬	°UÒ(:Ð(:Øøð2Ý,/°·²Ñ0@Ô0@×0FÒ0FÀtÈQÑ0OÔ0OÐPQÔ0RÐTVÑ,WÔ,W˜Ô)Ð)øÝ%ð 2ð 2ð 2Ý,¨SÑ1Ô1Ð1øøøøð2øøøà$%�D”MØÔ(¨AÒ-Ð-Ø×.Ò.¨uÑ5Ô5Ð5ð? Ô# qÒ(Ñ(øøõ@ Œ{Ô*ð 	ð 	ð 	ØˆDð	øøøà�xŠx˜Ñ!Ô!Ð!s<   ¤F1 ¬C-F1 ÄAE ÅF1 Å
E:Å&E5Å5E:Å:6F1 Æ1GÇGc                 ó†   — | j         r|                      | j        |¦  «        S |                      | j        j        |¦  «        S rb   )rO   r   rH   rl   rk   )rT   rj   s     r0   rk   z
Input.readØ   s=   € ØÔð 	:Ø×%Ò% d¤j°&Ñ9Ô9Ð9Ø�}Š}˜TœZœ_¨fÑ5Ô5Ð5r1   c                 óˆ   — | j         r|                      | j        |d¦  «        S |                      | j        j        |¦  «        S ©NT)rO   r   rH   rl   ro   )rT   Úsizes     r0   ro   zInput.readlineÝ   s@   € ØÔð 	<Ø×%Ò% d¤j°$¸Ñ=Ô=Ð=à—=’= ¤Ô!4°dÑ;Ô;Ð;r1   c                 óö   — | j         rSg }t          | j        d¦  «        D ]9}|                     |¦  «         |r |dk    r|t	          |¦  «        z  }|dk    r nŒ:|S |                      | j        j        |¦  «        S )Nr1   r   )rO   Úiterro   rZ   rh   rl   rH   Ú	readlines)rT   ÚhintÚlinesrp   s       r0   r†   zInput.readlinesã   sŒ   € ØÔð 
	=ØˆEÝ˜Tœ]¨CÑ0Ô0ð ð �Ø—’˜TÑ"Ô"Ð"Øð ˜D 1šH˜HØ�C ™IœIÑ%�DØ˜q’y�yØ˜øØˆLà—=’= ¤Ô!5°tÑ<Ô<Ð<r1   c                 ó,   — t          | j        d¦  «        S )Nr1   )r…   rk   rc   s    r0   Ú__iter__zInput.__iter__ð   s   € Ý�D”I˜sÑ#Ô#Ð#r1   c                 ó   — | j         S rb   )rI   rc   s    r0   Ú
get_socketzInput.get_socketó   s
   € ØŒzÐr1   Tc                 ó0   — |rd„ |D ¦   «         }|| _         d S )Nc                 ó|   — g | ]9\  }}d                       d„ |                     d ¦  «        D ¦   «         ¦  «        |f‘Œ:S )ú-c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rB   )Ú
capitalize)Ú.0Úxs     r0   ú
<listcomp>zJInput.set_hundred_continue_response_headers.<locals>.<listcomp>.<listcomp>þ   s    € ÐBÐBÐB¨a˜1Ÿ<š<™>œ>ÐBÐBÐBr1   ©rx   rv   )r’   ÚkeyÚvalues      r0   r”   z?Input.set_hundred_continue_response_headers.<locals>.<listcomp>ý   sV   € ð +ð +ð +á�C˜ð —’ÐBÐB°3·9²9¸S±>´>ÐBÑBÔBÑCÔCÀUÐKð+ð +ð +r1   )rQ   )rT   ÚheadersÚcapitalize_response_headerss      r0   Ú%set_hundred_continue_response_headersz+Input.set_hundred_continue_response_headersö   s:   € ð 'ð 	+ð+ð +à")ð+ñ +ô +ˆGð )0ˆÔ%Ð%Ð%r1   é @  c                 ó`   — |                       |¦  «        r	 |                       |¦  «        °d S d S rb   )rk   )rT   Úbuffer_sizes     r0   ÚdiscardzInput.discard  sC   € Ø�iŠi˜Ñ$Ô$ð 	Øð �iŠi˜Ñ$Ô$ð 	ð 	ð 	ð 	ð 	r1   )NNFrb   )NF)T)r›   )r?   r@   rA   rV   r`   Úpropertyrd   rl   rq   r   rk   ro   r†   rŠ   rŒ   rš   rž   rB   r1   r0   rE   rE   K   s!  € € € € € ð Ø Ø$ð!ð !ð !ð !ð>ð ð ð8 ðUð Uñ „XðUðð ð ð ð ð ð ð4"ð 4"ð 4"ð 4"ðl6ð 6ð 6ð 6ð
<ð <ð <ð <ð=ð =ð =ð =ð$ð $ð $ðð ð ð KOð
0ð 
0ð 
0ð 
0ðð ð ð ð ð r1   rE   c                   ó   — e Zd ZdS )ÚHeaderLineTooLongNr>   rB   r1   r0   r¡   r¡     rC   r1   r¡   c                   ó   — e Zd ZdS )ÚHeadersTooLargeNr>   rB   r1   r0   r£   r£     rC   r1   r£   c                 ó¶   — t          t          | dd ¦  «        ¦  «        r t          t          | dd ¦  «        ¦  «        r| S t          | pt          j        |¦  «        S )NÚinfoÚdebug)ÚcallableÚgetattrÚLoggerFileWrapperÚsysÚstderr)Úlogr¦   s     r0   Ú
get_loggerr­     sV   € Ý•˜˜V TÑ*Ô*Ñ+Ô+ð ;Ý•G˜C ¨$Ñ/Ô/Ñ0Ô0ð;àˆ
å  Ð!2­¬
°EÑ:Ô:Ð:r1   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú
LoggerNullc                 ó   — d S rb   rB   rc   s    r0   rV   zLoggerNull.__init__  ó   € Øˆr1   c                 ó   — d S rb   rB   ©rT   ÚmsgÚargsÚkwargss       r0   ÚerrorzLoggerNull.error  r±   r1   c                 ó   — d S rb   rB   r³   s       r0   r¥   zLoggerNull.info  r±   r1   c                 ó   — d S rb   rB   r³   s       r0   r¦   zLoggerNull.debug!  r±   r1   c                 ó   — d S rb   rB   ©rT   r´   rµ   s      r0   ÚwritezLoggerNull.write$  r±   r1   N©r?   r@   rA   rV   r·   r¥   r¦   r¼   rB   r1   r0   r¯   r¯     s_   € € € € € ðð ð ðð ð ðð ð ðð ð ðð ð ð ð r1   r¯   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r©   c                 ó"   — || _         || _        d S rb   )r¬   Ú_debug)rT   r¬   r¦   s      r0   rV   zLoggerFileWrapper.__init__)  s   € ØˆŒØˆŒˆˆr1   c                 ó"   —  | j         |g|¢R Ž  d S rb   ©r¼   r³   s       r0   r·   zLoggerFileWrapper.error-  ó"   € ØˆŒ
�3Ð˜ÐÐÐÐÐÐr1   c                 ó"   —  | j         |g|¢R Ž  d S rb   rÂ   r³   s       r0   r¥   zLoggerFileWrapper.info0  rÃ   r1   c                 ó4   — | j         r | j        |g|¢R Ž  d S d S rb   )rÀ   r¼   r³   s       r0   r¦   zLoggerFileWrapper.debug3  s6   € ØŒ;ð 	#ØˆDŒJ�sÐ"˜TÐ"Ð"Ð"Ð"Ð"Ð"ð	#ð 	#r1   c                 óR   — |dz   }|r||z  }| j                              |¦  «         d S )Nú
)r¬   r¼   r»   s      r0   r¼   zLoggerFileWrapper.write7  s6   € Ø�D‰jˆØð 	Ø˜‘*ˆCØŒ�Š�sÑÔÐÐÐr1   Nr½   rB   r1   r0   r©   r©   (  s_   € € € € € ðð ð ðð ð ðð ð ð#ð #ð #ðð ð ð ð r1   r©   c                   ó   — e Zd Zd„ Zdd„ZdS )ÚFileObjectForHeadersc                 ó"   — || _         d| _        d S ©Nr   )ÚfpÚtotal_header_size)rT   rÌ   s     r0   rV   zFileObjectForHeaders.__init__@  s   € ØˆŒØ!"ˆÔÐÐr1   rG   c                 ó  — |}|dk     rt           }| j                             |¦  «        }t          |¦  «        t           k    rt	          ¦   «         ‚| xj        t          |¦  «        z  c_        | j        t          k    rt          ¦   «         ‚|S rË   )ÚMAX_HEADER_LINErÌ   ro   rh   r¡   rÍ   ÚMAX_TOTAL_HEADER_SIZEr£   )rT   rƒ   ÚszÚrvs       r0   ro   zFileObjectForHeaders.readlineD  s�   € ØˆØ�!Š8ˆ8Ý ˆBØŒW×Ò˜bÑ!Ô!ˆÝˆr‰7Œ7•oÒ%Ð%Ý#Ñ%Ô%Ð%ØÐÔ¥# b¡'¤'Ñ)ÐÔØÔ!Õ$9Ò9Ð9Ý!Ñ#Ô#Ð#Øˆ	r1   N)rG   )r?   r@   rA   rV   ro   rB   r1   r0   rÉ   rÉ   >  s7   € € € € € ð#ð #ð #ð
ð 
ð 
ð 
ð 
ð 
r1   rÉ   c                   óh   — e Zd ZdZdZeZdZdZdZ	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚHttpProtocola6  This class is used to handle the HTTP requests that arrive
    at the server.

    The handler will parse the request and the headers, then call a method
    specific to the request type.

    :param conn_state: The given connection status.
    :param server: The server accessible by the request handler.
    r   Tr›   c                 ó@  — |d         | _         |d         | _        || _        || _        |j        �|j        | _        |j        | _        |                      ¦   «          	 |                      ¦   «          |                      ¦   «          d S # |                      ¦   «          w xY w)Nr5   r   )	r
   Úclient_addressÚ
conn_stater   Úminimum_chunk_sizer™   ÚsetupÚhandleÚfinish)rT   r×   r   s      r0   rV   zHttpProtocol.__init__e  sˆ   € Ø! !”}ˆŒØ(¨œmˆÔØ$ˆŒØˆŒàÔ$Ð0Ø&,Ô&?ˆDÔ#Ø+1Ô+MˆÔ(à�
Š
‰Œˆð	Ø�KŠK‰MŒMˆMà�KŠK‰MŒMˆMˆMˆMøˆD�KŠK‰MŒMˆMˆMøøøs   ÁB ÂBc                 ó˜  — | j         x}| _        t          t          dd ¦  «        r=	 |                     t          j        t          j        d¦  «         n# t          $ r Y nw xY w	 |                     d| j	        ¦  «        | _
        |                     d| j        ¦  «        | _        d S # t          t          f$ r“ t          |d¦  «        rSt          |d¦  «        rCt          j        |d| j	        ¦  «        | _
        t          j        |d| j        ¦  «        | _        Y d S t          d                     t%          |¦  «        ¦  «        ¦  «        ‚w xY w)NÚTCP_QUICKACKTÚrbÚwbÚsendÚrecvz0eventlet.wsgi doesn't support sockets of type {})r
   Ú
connectionr¨   r   Ú
setsockoptÚIPPROTO_TCPrÝ   ru   ÚmakefileÚrbufsizerH   ÚwbufsizerL   ÚAttributeErrorÚNotImplementedErrorÚhasattrÚ_fileobjectÚformatÚtype)rT   Úconns     r0   rÙ   zHttpProtocol.setupu  sT  € à!%¤Ð-ˆˆtŒõ •6˜>¨4Ñ0Ô0ð 	ðØ—’¥Ô 2µFÔ4GÈÑNÔNÐNÐNøÝð ð ð Ø�ðøøøð	_ØŸš t¨T¬]Ñ;Ô;ˆDŒJØŸš t¨T¬]Ñ;Ô;ˆDŒJˆJˆJøÝÕ 3Ð4ð 	_ð 	_ð 	_Ý�t˜VÑ$Ô$ð _­°°vÑ)>Ô)>ð _å#Ô/°°d¸D¼MÑJÔJ�”
Ý#Ô/°°d¸D¼MÑJÔJ�”
�
�
�
õ *ØJ×QÒQÕRVÐW[ÑR\ÔR\Ñ]Ô]ñ_ô _ð _ð	_øøøs%   ¦+A Á
AÁAÁ#A B% Â%A1E	Ä0E	c                 ó¨   — d| _         	 |                      ¦   «          | j        d         t          k    rd| _         nt          | j        d<   | j         rd S ŒK)NTé   r5   )Úclose_connectionÚhandle_one_requestr×   ÚSTATE_CLOSEÚ
STATE_IDLErc   s    r0   rÚ   zHttpProtocol.handleŽ  s_   € Ø $ˆÔð	Ø×#Ò#Ñ%Ô%Ð%ØŒ˜qÔ!¥[Ò0Ð0Ø()�Ô%Ð%å%/�” Ñ"ØÔ$ð Ø�ð	r1   c                 óŠ  — | j         j        r	d| _        dS 	 | j        }| j        j        r>t          | j        j        t          ¦  «        s|                     | j        j        ¦  «         | j          	                    | j        j
        ¦  «        }|                     | j        j        ¦  «         |S # t          j        j        $ r Y n€t          $ rt}t!          j        |¦  «        }|t$          v rC| j        j                             d                     | j        j        | j        ¦  «        ¦  «         n
|t0          vr‚ Y d }~nd }~ww xY wdS )Nr5   r4   z"({}) connection reset by peer {!r})rH   Úclosedrñ   râ   r   Ú	keepaliver6   ÚboolÚ
settimeoutro   Úurl_length_limitÚsocket_timeoutr   rf   rg   ru   r   Ú	get_errnoÚBROKEN_SOCKr¬   r¦   rì   ÚpidrÖ   ÚBAD_SOCK)rT   rU   rp   ÚeÚ
last_errnos        r0   Ú_read_request_linezHttpProtocol._read_request_lineš  sK  € ØŒ:Ôð 	Ø$%ˆDÔ!Ø�2ð	Ø”?ˆDØŒ{Ô$ð 7­Z¸¼Ô8MÍtÑ-TÔ-Tð 7Ø—’ ¤Ô 5Ñ6Ô6Ð6Ø”:×&Ò& t¤{Ô'CÑDÔDˆDØ�OŠO˜DœKÔ6Ñ7Ô7Ð7ØˆKøÝŒ{Ô*ð 	ð 	ð 	ØˆDÝð 	ð 	ð 	Ý Ô*¨1Ñ-Ô-ˆJØ�[Ð(Ð(Ø””×%Ò%Ð&J×&QÒ&QØ”K”OØÔ'ñ')ô ')ñ *ô *ð *ð *ð ¥8Ð+Ð+Øøøøøøøøøøð	øøøð ˆrs   —BB- Â-E Ã	E ÃA*D;Ä;E c                 óÀ  — | j         j        r| j         j        | _        |                      ¦   «         | _        t
          | j        d<   | j        s	d| _        d S t          | j        ¦  «        | j         j	        k    r(| j
                             t          ¦  «         d| _        d S | j        }	 t          | j        ¦  «        | _        |                      ¦   «         s
	 || _        d S nm# t           $ r, | j
                             d¦  «         d| _        Y || _        d S t"          $ r, | j
                             d¦  «         d| _        Y || _        d S w xY w	 || _        n# || _        w xY w| j                             d¦  «        }| j                             d¦  «        }|�Ž	 t)          |¦  «        dk     rt*          ‚n2# t*          $ r% | j
                             d¦  «         d| _        Y d S w xY w|�>| j        r7d	}| j
                             d
t          |¦  «        |fz  ¦  «         d| _        d S |                      ¦   «         | _        | j         j        | _        	 | j         xj        dz  c_        	 |                      ¦   «          n3# t:          $ r&}t=          j        |¦  «        t@          vr‚ Y d }~nd }~ww xY w| j         xj        dz  c_        d S # | j         xj        dz  c_        w xY w)Nrð   r5   sK   HTTP/1.0 400 Header Line Too Long
Connection: close
Content-length: 0

sH   HTTP/1.0 400 Headers Too Large
Connection: close
Content-length: 0

úcontent-lengthztransfer-encodingr   sB   HTTP/1.0 400 Bad Request
Connection: close
Content-length: 0

s>   Content-Length and Transfer-Encoding are not allowed together
sE   HTTP/1.0 400 Bad Request
Connection: close
Content-Length: %d

%s)!r   Úmax_http_versionÚprotocol_versionr  Úraw_requestlineÚSTATE_REQUESTr×   rñ   rh   rú   rL   r¼   ÚRESPONSE_414rH   rÉ   Úparse_requestr¡   r£   r˜   ÚgetrJ   rw   Úreject_bad_requestsÚget_environÚenvironÚappÚapplicationÚoutstanding_requestsÚhandle_one_responseru   r   rü   rý   )rT   Ú
orig_rfilerK   Útransfer_encodingr´   r   s         r0   rò   zHttpProtocol.handle_one_request²  s  € ØŒ;Ô'ð 	AØ$(¤KÔ$@ˆDÔ!à#×6Ò6Ñ8Ô8ˆÔÝ*ˆŒ˜ÑØÔ#ð 	Ø$%ˆDÔ!ØˆFÝˆtÔ#Ñ$Ô$¨¬Ô(DÒDÐDØŒJ×Ò�\Ñ*Ô*Ð*Ø$%ˆDÔ!ØˆFà”Zˆ
ð	$Ý-¨d¬jÑ9Ô9ˆDŒJØ×%Ò%Ñ'Ô'ð Øð $ˆDŒJˆJˆJðøå ð 	ð 	ð 	ØŒJ×ÒðBñCô Cð Cð %&ˆDÔ!Øð $ˆDŒJˆJˆJõ ð 	ð 	ð 	ØŒJ×ÒðBñCô Cð Cð %&ˆDÔ!Øà#ˆDŒJˆJˆJð	øøøðð $ˆDŒJˆJø˜ˆDŒJÐ#Ð#Ð#Ð#àœ×)Ò)Ð*:Ñ;Ô;ˆØ œL×,Ò,Ð-@ÑAÔAÐØÐ%ð	Ý�~Ñ&Ô&¨Ò*Ð*Ý$Ð$ð +øåð ð ð à”
× Ò ðFñGô Gð Gð )*�Ô%Ø��ðøøøð !Ð,ØÔ+ð Ø\�CØ”J×$Ò$ð"õ &)¨¡X¤X¨s Oñ4ñ5ô 5ð 5ð
 -.�DÔ)Ø�Fà×'Ò'Ñ)Ô)ˆŒØœ;œ?ˆÔð		2ØŒKÐ,Ô,°Ñ1Ð,Ô,ðØ×(Ò(Ñ*Ô*Ð*Ð*øÝð ð ð åÔ$ QÑ'Ô'­{Ð:Ð:Øð ;Ð:Ð:Ð:Ð:øøøøðøøøð
 ŒKÐ,Ô,°Ñ1Ð,Ô,Ð,Ð,øˆDŒKÐ,Ô,°Ñ1Ð,Ô,Ð,Ð,Ð,Ð,s~   Â(-C  ÃE Ã +E
ÄE Ä*E
Ä?E Å	E
Å
E Å	EÆF4 Æ4+G#Ç"G#ÉK É'I< É;K É<
J,ÊJ'Ê"K Ê'J,Ê,K ËKc                 óˆ  ‡ ‡‡‡‡‡‡‡‡— t          j         ¦   «         }g Šg Š‰ j        d         }‰|_        ‰ j        Šd }dgŠdgŠdgŠdgŠˆˆˆˆˆ ˆˆfd„Šdˆˆˆˆ ˆˆfd„	}	 	 dt          _        ‰                      ‰ j        |¦  «        }‰r†‰s„t          |d¦  «        rt‰d         s^dd	„ ‰d
         D ¦   «         vrJ‰d
                              dt          t          t          t          |¦  «        ¦  «        ¦  «        f¦  «         |j        rd
‰ _        g }d}d}t          ‰ j                             d‰ j        ¦  «        ¦  «        }|D ]‘}	t          |	¦  «        dk    rŒt%          |	t          ¦  «        r|	                     d¦  «        }	|                     |	¦  «         |t          |	¦  «        z  }||k    r$ ‰d                     |¦  «        ¦  «         g }|}d}Œ’t          j        �rd
‰ _        	 t          |d¦  «        r|                     ¦   «          |j        rd
‰ _        |j        s|j        |j        pdk     rú‰ j        dk    rï	 |                     ¦   «          nÙ# t4          $ rb}
d
‰ _        ‰ j        j                             d                     ‰                      ¦   «         d         ‰ j         |
¦  «        ¦  «         Y d }
~
nrd }
~
wtB          $ rb}
d
‰ _        ‰ j        j                             d                     ‰                      ¦   «         d         ‰ j         |
¦  «        ¦  «         Y d }
~
nd }
~
ww xY wt          j         ¦   «         }‰ j        d         D ]\  }}} |‰ j        g|¢R i |¤Ž Œ‰ j        j"        rs‰                      ¦   «         \  }}‰ j        j         #                    ‰ j        j$        ||‰  %                    ¦   «         ‰ j         ‰d         ‰d         ||z
  dœz  ¦  «         d S d S |r |} ‰d                     |¦  «        ¦  «         ‰r
‰d         r|r ‰d¦  «         n¡# tL          tN          j(        f$ rˆ d
‰ _        tS          j*        ¦   «         }‰ j        j         #                    |¦  «         ‰sJ‰ j        j+        r|                     ¦   «         nd} |dddt          |¦  «        fg¦  «          ‰|¦  «         Y nw xY wt          |d¦  «        r|                     ¦   «          |j        rd
‰ _        |j        s|j        |j        pdk     rú‰ j        dk    rï	 |                     ¦   «          nÙ# t4          $ rb}
d
‰ _        ‰ j        j                             d                     ‰                      ¦   «         d         ‰ j         |
¦  «        ¦  «         Y d }
~
nrd }
~
wtB          $ rb}
d
‰ _        ‰ j        j                             d                     ‰                      ¦   «         d         ‰ j         |
¦  «        ¦  «         Y d }
~
nd }
~
ww xY wt          j         ¦   «         }‰ j        d         D ]\  }}} |‰ j        g|¢R i |¤Ž Œ‰ j        j"        rs‰                      ¦   «         \  }}‰ j        j         #                    ‰ j        j$        ||‰  %                    ¦   «         ‰ j         ‰d         ‰d         ||z
  dœz  ¦  «         d S d S # t          |d¦  «        r|                     ¦   «          |j        rd
‰ _        |j        s|j        |j        pdk     rú‰ j        dk    rï	 |                     ¦   «          nÙ# t4          $ rb}
d
‰ _        ‰ j        j                             d                     ‰                      ¦   «         d         ‰ j         |
¦  «        ¦  «         Y d }
~
nrd }
~
wtB          $ rb}
d
‰ _        ‰ j        j                             d                     ‰                      ¦   «         d         ‰ j         |
¦  «        ¦  «         Y d }
~
nd }
~
ww xY wt          j         ¦   «         }‰ j        d         D ]\  }}} |‰ j        g|¢R i |¤Ž Œ‰ j        j"        rr‰                      ¦   «         \  }}‰ j        j         #                    ‰ j        j$        ||‰  %                    ¦   «         ‰ j         ‰d         ‰d         ||z
  dœz  ¦  «         w w xY w)Núeventlet.inputFr   éÈ   c                 óÜ  •— g }‰st          d¦  «        ‚‰
�s‰\  }}‰
                     d¦  «         d„ |D ¦   «         }|                     ‰j        ›d|›d�                     ¦   «         ¦  «         |D ]-}|                     d|z                       d¦  «        ¦  «         Œ.d|vrI|                     d	t	          t          j        ¦   «         ¦  «        ›d�                     ¦   «         ¦  «         ‰j                             d
d¦  «                             ¦   «         }d}‰j	        dk    r1‰j
        j        r%|dk    s‰j        dk    r|dk    s|dk    }d‰_	        nd‰_	        d|vr6‰	d         rn-‰j        dk    rd‰d<   |                     d¦  «         nd‰_	        ‰j	        r|                     d¦  «         nk|ri|                     d¦  «         t          ‰j
        j        pd¦  «        }t          ‰j
        j        t          ¦  «        s|r|                     d|z  ¦  «         |                     d¦  «         ‰d         rB|                     dt!          | ¦  «        fz                       ¦   «         dz   | z   dz   ¦  «         n|                     | ¦  «         ‰                     |¦  «         ‰                     ¦   «          ‰d         t'          t)          t           |¦  «        ¦  «        z   ‰d<   d S )Nzwrite() before start_response()r5   c                 óB   — g | ]}|d                                ¦   «         ‘ŒS )r   )Úlower)r’   r_   s     r0   r”   zCHttpProtocol.handle_one_response.<locals>.write.<locals>.<listcomp>  s&   € ÐPÐPÐP°V˜v aœyŸšÑ0Ô0ÐPÐPÐPr1   ú z
rX   zlatin-1ÚdatezDate: Ú
Connectionr4   Fr   z
keep-aliver   r   r  Ts   Transfer-Encoding: chunked
s   Connection: close
s   Connection: keep-alive
s   Keep-Alive: timeout=%d
rY   z%x)ÚAssertionErrorrZ   r  r[   r   r"   r˜   r  r  rñ   r   r÷   Úrequest_versionrJ   r6   rø   rh   r\   r]   ÚsumÚmap)r|   r^   ÚstatusÚresponse_headersÚheader_listr_   Úclient_connÚsend_keep_aliveÚint_timeoutÚbodylessrS   Úheaders_setrj   rT   Úuse_chunkedrL   s            €€€€€€€r0   r¼   z/HttpProtocol.handle_one_response.<locals>.write  s%  ø€ ØˆGØð -(Ý$Ð%FÑGÔGÐGØ!ñ +(Ø+6Ñ(�Ð(Ø×#Ò# AÑ&Ô&Ð&ØPÐPÐ?OÐPÑPÔP�Ø—’¨tÔ/DÐ/DÐ/DÀfÀfÀfÐ M×UÒUÑWÔWÑXÔXÐXØ.ð Nð N�FØ—N’N L°6Ñ$9×#AÒ#AÀ)Ñ#LÔ#LÑMÔMÐMÐMð  Ð,Ð,Ø—N’N�NÕ6FÅtÄyÁ{Ä{Ñ6SÔ6SÐ6SÐ6SÐ$U×#]Ò#]Ñ#_Ô#_Ñ`Ô`Ð`à"œl×.Ò.¨|¸RÑ@Ô@×FÒFÑHÔH�Ø"'�ØÔ(¨AÒ-Ð-Ø”;Ô(ð .Ø.9¸\Ò.IÐ.IØ/3Ô/CÀzÒ/QÐ/QØ3>À'Ò3IÐ3Ið (3°lÒ'B�OØ,-�DÔ)Ð)à,-�DÔ)à#¨;Ð6Ð6Ø ”{ð 2ØØÔ-°Ò;Ð;Ø)-˜ A™ØŸšÐ'HÑIÔIÐIÐIð 12˜Ô-àÔ(ð TØ—N’NÐ#;Ñ<Ô<Ð<Ð<Ø$ð TØ—N’NÐ#@ÑAÔAÐAå"% d¤kÔ&;Ð&@¸qÑ"AÔ"A�KÝ% d¤kÔ&;½TÑBÔBð TÀ{ð TØŸšÐ'DÀ{Ñ'RÑSÔSÐSØ—’˜wÑ'Ô'Ð'ð ˜1Œ~ð %à—’ ­¨D©	¬	 |Ñ 3×;Ò;Ñ=Ô=ÀÑGÈ$ÑNÐQXÑXÑYÔYÐYÐYà—’˜tÑ$Ô$Ð$Ø×Ò˜WÑ%Ô%Ð%Ø�KŠK‰MŒMˆMØ˜qœ	¥C­­C°Ñ(9Ô(9Ñ$:Ô$:Ñ:ˆF�1‰IˆIˆIr1   c                 ó¤  •‡— t          |                      dd¦  «        d         ¦  «        ‰d<   |r/	 ‰r!|d                              |d         ¦  «        ‚	 d }n# d }w xY w‰d         dv pA‰j        dk    p6d‰d         cxk    odk     nc p ‰j        d	k    od‰d         cxk    od
k     nc ‰d<   ‰j        rd„ Šˆfd„|D ¦   «         }| |g‰d d …<   ‰	S )Nr  r5   r   rð   )éÌ   i0  ÚHEADéd   r  ÚCONNECTi,  c                 óv   — |                       d¦  «                             ¦   «                              d¦  «        S )NÚlatin1)r[   r‘   Údecode)r“   s    r0   ÚcapzEHttpProtocol.handle_one_response.<locals>.start_response.<locals>.cap_  s.   € ØŸ8š8 HÑ-Ô-×8Ò8Ñ:Ô:×AÒAÀ(ÑKÔKÐKr1   c                 ó‚   •— g | ];\  }}d                       ˆfd„|                     d ¦  «        D ¦   «         ¦  «        |f‘Œ<S )r�   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rB   rB   )r’   r“   r3  s     €r0   r”   zWHttpProtocol.handle_one_response.<locals>.start_response.<locals>.<listcomp>.<listcomp>c  s!   ø€ Ð>Ð>Ð>¨!˜s˜s 1™vœvÐ>Ð>Ð>r1   r•   )r’   r–   r—   r3  s      €r0   r”   zLHttpProtocol.handle_one_response.<locals>.start_response.<locals>.<listcomp>b  s]   ø€ ð $8ð $8ð $8á"˜˜Uð —X’XÐ>Ð>Ð>Ð>¨s¯yªy¸©~¬~Ð>Ñ>Ô>Ñ?Ô?ÀÐGð$8ð $8ð $8r1   )rJ   rv   Úwith_tracebackÚcommandr™   )
r"  r#  Úexc_infor3  r(  rS   r)  rT   Ústatus_coder¼   s
      @€€€€€€r0   Ústart_responsez8HttpProtocol.handle_one_response.<locals>.start_responseH  s_  øø€ Ý  §¢¨c°1Ñ!5Ô!5°aÔ!8Ñ9Ô9ˆK˜‰NØð $ð$Ø#ð Fà& qœk×8Ò8¸À!¼ÑEÔEÐEðFð
  $�H�Hø˜t�H�O�O�O�Oð ˜A” *Ð,ð OØ”< 6Ò)ðOà˜; qœ>Ð/Ð/Ò/Ð/¨CÒ/Ð/Ð/Ð/ðOð ”L IÒ-ÐM°#¸ÀQ¼Ð2MÐ2MÒ2MÐ2MÈ#Ò2MÐ2MÐ2MÐ2Mð	 �Q‰Kð Ô/ð 8ðLð Lð Lð$8ð $8ð $8ð $8à&6ð$8ñ $8ô $8Ð ð %Ð&6Ð7ˆK˜˜˜‰NØˆLs   ²#A ÁAÚ__len__zContent-Lengthc                 ó   — g | ]\  }}|‘ŒS rB   rB   )r’   ÚhÚ_vs      r0   r”   z4HttpProtocol.handle_one_response.<locals>.<listcomp>q  s   € ÐCbÐCbÐCbÉ%È!ÈRÀAÐCbÐCbÐCbr1   r5   z!eventlet.minimum_write_chunk_sizeÚasciir1   r   zZchunked encoding error while discarding request body. client={0} request="{1}" error="{2}"zMI/O error while discarding request body. client={0} request="{1}" error="{2}"úeventlet.posthooks)Ú	client_ipÚclient_portÚ	date_timeÚrequest_liner9  Úbody_lengthÚwall_secondsz500 Internal Server Error)zContent-typez
text/plainzContent-lengthrb   ),r"   r  rS   rL   Ú
WSGI_LOCALÚalready_handledr  rê   rZ   Ústrr   r!  rh   rd   rñ   rJ   r  rØ   r6   r[   rx   r   rO   rN   rK   rž   r=   r   r¬   r·   rì   Úget_client_addressÚrequestlineru   Ú
log_outputr¥   Ú
log_formatÚlog_date_time_stringÚ	ExceptionÚeventletÚTimeoutÚ	tracebackÚ
format_excr¦   )rT   ÚstartÚrequest_inputÚresultr:  r^   Útowrite_sizeÚjust_written_sizeÚminimum_write_chunk_sizer|   r   rÛ   Úhookrµ   r¶   Úclient_hostrB  ÚtbÚerr_bodyr(  rS   r)  rj   r9  r*  rL   r¼   s   `                  @@@@@@@@r0   r  z HttpProtocol.handle_one_responseú  s  øøøøøøøøø€ Ý”	‘”ˆØˆØˆàœÐ%5Ô6ˆð &2ˆÔ"à”
ˆØˆØ�gˆØ�ˆØ�eˆð �7ˆð9	;ð 9	;ð 9	;ð 9	;ð 9	;ð 9	;ð 9	;ð 9	;ð 9	;ð 9	;ð 9	;ðv	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðBg	ð2$Ø-2•
Ô*Ø×)Ò)¨$¬,¸ÑGÔG�ð ð 2 |ð 2½ÀÈ	Ñ8RÔ8Rð 2à# Aœ;ð ^Ð+;ÐCbÐCbÐS^Ð_`ÔSaÐCbÑCbÔCbÐ+bÐ+bØ# Aœ×-Ò-Ð/?ÅÅSÍÍSÐRXÑIYÔIYÑEZÔEZÑA[ÔA[Ð.\Ñ]Ô]Ð]Ø$ÔAð 2ð 12˜Ô-à�Ø �Ø$%Ð!Ý+.¨t¬|×/?Ò/?Ø7¸Ô9Pñ0Rô 0Rñ ,Sô ,SÐ(à"ð )ð )�DÝ˜4‘y”y A’~�~Ø Ý! $­Ñ,Ô,ð 4Ø#Ÿ{š{¨7Ñ3Ô3˜à—N’N 4Ñ(Ô(Ð(Ø ¥C¨¡I¤IÑ-�LØ#Ð'?Ò?Ð?Ø˜˜cŸhšh wÑ/Ô/Ñ0Ô0Ð0Ø"$˜Ø,8Ð)Ø'(˜øÝÔ-ñ Ø,-�DÔ)Øõ" �v˜wÑ'Ô'ð Ø—’‘”�ØÔ9ð 
*ð )*�Ô%àÔ+ð Ø!Ô*¨mÔ.JÐ.OÈaÒPÐPàÔ(¨AÒ-Ð-ðØ%×-Ò-Ñ/Ô/Ð/Ð/øÝ)ð ð ð Ø01˜Ô-Øœœ×-Ò-ðFßGMÂvØ $× 7Ò 7Ñ 9Ô 9¸!Ô <¸dÔ>NÐPQñHô Hñô ð ð ð ð ð ð øøøøõ
 #ð ð ð Ø01˜Ô-Øœœ×-Ò-ðFßGMÂvØ $× 7Ò 7Ñ 9Ô 9¸!Ô <¸dÔ>NÐPQñHô Hñô ð ð ð ð ð ð øøøøðøøøõ ”Y‘[”[ˆFà&*¤lÐ3GÔ&Hð 4ð 4Ñ"��d˜FØ��T”\Ð3 DÐ3Ð3Ð3¨FÐ3Ð3Ð3Ð3àŒ{Ô%ð Ø+/×+BÒ+BÑ+DÔ+DÑ(�˜[à””×$Ò$ T¤[Ô%;Ø!,Ø#.Ø!%×!:Ò!:Ñ!<Ô!<Ø$(Ô$4Ø#.¨q¤>Ø#)¨!¤9Ø$*¨U¡Nð?ð ?ñ &ñ ô ð ð ð ðð ðo ð -Ø(4Ð%Ø�E˜#Ÿ(š( 7Ñ+Ô+Ñ,Ô,Ð,Ø#ð ¨°A¬ð Ð;Lð Ø�E˜#‘J”J�JøøÝ�xÔ/Ð0ð 	$ð 	$ð 	$Ø()�Ô%ÝÔ)Ñ+Ô+�Ø””×$Ò$ RÑ(Ô(Ð(Ø#ð $Ø.2¬kÔ.?ÐH˜rŸyšy™{œ{˜{ÀS�HØ"�NÐ#>Ø$BØ%5µs¸8±}´}Ð$Eð$GñHô Hð Hð �E˜(‘O”O�Oøøð	$øøøõ �v˜wÑ'Ô'ð Ø—’‘”�ØÔ9ð 
*ð )*�Ô%àÔ+ð Ø!Ô*¨mÔ.JÐ.OÈaÒPÐPàÔ(¨AÒ-Ð-ðØ%×-Ò-Ñ/Ô/Ð/Ð/øÝ)ð ð ð Ø01˜Ô-Øœœ×-Ò-ðFßGMÂvØ $× 7Ò 7Ñ 9Ô 9¸!Ô <¸dÔ>NÐPQñHô Hñô ð ð ð ð ð ð øøøøõ
 #ð ð ð Ø01˜Ô-Øœœ×-Ò-ðFßGMÂvØ $× 7Ò 7Ñ 9Ô 9¸!Ô <¸dÔ>NÐPQñHô Hñô ð ð ð ð ð ð øøøøðøøøõ ”Y‘[”[ˆFà&*¤lÐ3GÔ&Hð 4ð 4Ñ"��d˜FØ��T”\Ð3 DÐ3Ð3Ð3¨FÐ3Ð3Ð3Ð3àŒ{Ô%ð Ø+/×+BÒ+BÑ+DÔ+DÑ(�˜[à””×$Ò$ T¤[Ô%;Ø!,Ø#.Ø!%×!:Ò!:Ñ!<Ô!<Ø$(Ô$4Ø#.¨q¤>Ø#)¨!¤9Ø$*¨U¡Nð?ð ?ñ &ñ ô ð ð ð ðð øõO �v˜wÑ'Ô'ð Ø—’‘”�ØÔ9ð 
*ð )*�Ô%àÔ+ð Ø!Ô*¨mÔ.JÐ.OÈaÒPÐPàÔ(¨AÒ-Ð-ðØ%×-Ò-Ñ/Ô/Ð/Ð/øÝ)ð ð ð Ø01˜Ô-Øœœ×-Ò-ðFßGMÂvØ $× 7Ò 7Ñ 9Ô 9¸!Ô <¸dÔ>NÐPQñHô Hñô ð ð ð ð ð ð øøøøõ
 #ð ð ð Ø01˜Ô-Øœœ×-Ò-ðFßGMÂvØ $× 7Ò 7Ñ 9Ô 9¸!Ô <¸dÔ>NÐPQñHô Hñô ð ð ð ð ð ð øøøøðøøøõ ”Y‘[”[ˆFà&*¤lÐ3GÔ&Hð 4ð 4Ñ"��d˜FØ��T”\Ð3 DÐ3Ð3Ð3¨FÐ3Ð3Ð3Ð3àŒ{Ô%ð Ø+/×+BÒ+BÑ+DÔ+DÑ(�˜[à””×$Ò$ T¤[Ô%;Ø!,Ø#.Ø!%×!:Ò!:Ñ!<Ô!<Ø$(Ô$4Ø#.¨q¤>Ø#)¨!¤9Ø$*¨U¡Nð?ð ?ñ &ñ ô ð ð ðøøøs¾   Á"F
P% ÉI É
L/É#AK Ë L/ËAL*Ì*L/Ï+9P% Ð$[ Ð%BSÓ [ ÓSÓ[ ÔT2 Ô2
XÔ<AVÖXÖ&AXØXÛAcÜ\1Ü0cÜ1
`Ü;A^ÞcÞ`Þ%A`ß=cà`àB:cc                 óÂ   — t          | j        ¦  «        \  }}| j        j        r9| j                             dd¦  «                             dd¦  «        }|r|dz   |z   }||fS )NzX-Forwarded-Forr4   r  ú,)r;   rÖ   r   Úlog_x_forwarded_forr˜   r  Úreplace)rT   r9   r:   Úforwards       r0   rJ  zHttpProtocol.get_client_addressÒ  sk   € Ý& tÔ':Ñ;Ô;‰
ˆˆdàŒ;Ô*ð 	,Ø”l×&Ò&Ð'8¸"Ñ=Ô=×EÒEÀcÈ2ÑNÔNˆGØð ,Ø ‘} tÑ+�Ø�dˆ|Ðr1   c                 ó^   — d|v rdS |                      dd¦  «                             ¦   «         S )a“  
        Headers containing underscores are permitted by RFC9110,
        but evenlet joining headers of different names into
        the same environment variable will dangerously confuse applications as to which is which.
        Cf.
            - Nginx: http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers
            - Django: https://www.djangoproject.com/weblog/2015/jan/13/security/
            - Gunicorn: https://github.com/benoitc/gunicorn/commit/72b8970dbf2bf3444eb2e8b12aeff1a3d5922a9a
            - Werkzeug: https://github.com/pallets/werkzeug/commit/5ee439a692dc4474e0311de2496b567eed2d02cf
            - ...
        Ú_Nr�   )ra  Úupper)rT   Úks     r0   Úformalize_key_namingz!HttpProtocol.formalize_key_namingÛ  s2   € ð �!ˆ8ˆ8ØˆFà�yŠy˜˜cÑ"Ô"×(Ò(Ñ*Ô*Ð*r1   c                 ó¸  ‡ — ‰ j                              ¦   «         }‰ j        |d<   d|d<   ‰ j                             dd¦  «        }|d         |d<   t
          j                             |d         d¬	¦  «        |d
<   t          |¦  «        dk    r|d         |d<   ‰ j	         
                    d¦  «        }|€7	 ‰ j	        j        }n)# t          $ r ‰ j	                             ¦   «         }Y nw xY w||d<   ‰ j	         
                    d¦  «        }|r||d<   d|d<   ‰ j                             ¦   «         }t!          |¦  «        }|d         |d<   t#          |d         ¦  «        |d<   t!          ‰ j        ¦  «        }|d         |d<   t#          |d         ¦  «        |d<   d|d<   	 ‰ j	        j	        }d„ |D ¦   «         }n# t          $ r ‰ j	        j        }Y nw xY wt)          d„ |D ¦   «         ¦  «        x|d<   }	|	D ]D\  }
}‰                      |
¦  «        }
|
sŒ|
dv rŒ"d|
z   }||v r||xx         d|z   z  cc<   Œ?|||<   ŒE| 
                    dd¦  «                             ¦   «         dk    r
‰ j        }d }nd }d }| 
                    d!d¦  «                             ¦   «         d"k    }|s|€d#}t1          ‰ j        |‰ j        |||¬$¦  «        x|d%<   |d&<   g |d'<   ˆ fd(„}||d)<   |S )*NÚREQUEST_METHODr4   ÚSCRIPT_NAMEú?r5   r   ÚRAW_PATH_INFOr1  )ÚencodingÚ	PATH_INFOÚQUERY_STRINGzcontent-typeÚCONTENT_TYPEr  ÚCONTENT_LENGTHzHTTP/1.0ÚSERVER_PROTOCOLÚSERVER_NAMEÚSERVER_PORTÚREMOTE_ADDRÚREMOTE_PORTzCGI/1.1ÚGATEWAY_INTERFACEc                 ó:   — g | ]}|                      d d¦  «        ‘ŒS )ú:r5   )rv   )r’   r=  s     r0   r”   z,HttpProtocol.get_environ.<locals>.<listcomp>  s$   € Ð8Ð8Ð8¨1�q—w’w˜s A‘”Ð8Ð8Ð8r1   c              3   óJ   K  — | ]\  }}||                      d ¦  «        fV — ŒdS )z 	
N)Ústrip)r’   rf  Úvs      r0   ú	<genexpr>z+HttpProtocol.get_environ.<locals>.<genexpr>  s8   è è € Ð0]Ð0]ÉTÈQÐPQ°!°Q·W²W¸YÑ5GÔ5GÐ1HÐ0]Ð0]Ð0]Ð0]Ð0]Ð0]r1   Úheaders_raw)rp  rq  ÚHTTP_r_  ÚHTTP_EXPECTz100-continues   HTTP/1.1 100 Continue
ÚHTTP_TRANSFER_ENCODINGÚchunkedÚ0)rL   rM   rO   z
wsgi.inputr  r@  c                  ó&   •— t           ‰ j        d<   d S )Nrð   )rô   r×   rc   s   €r0   Úset_idlez*HttpProtocol.get_environ.<locals>.set_idle6  s   ø€ Ý!+ˆDŒO˜AÑÐÐr1   zeventlet.set_idle)r   r  r7  Úpathrv   ÚurllibÚparseÚunquoterh   r˜   r  rí   rè   Úget_content_typer
   Úgetsocknamer;   rI  rÖ   Ú_headersr7   rg  r  rL   rE   rH   râ   )rT   ÚenvÚpqÚctrj   ÚsocknameÚserver_addrÚclient_addrr˜   r~  rf  r|  ÚenvkrL   rM   r‚  r…  s   `                r0   r  zHttpProtocol.get_environì  s„  ø€ ØŒk×%Ò%Ñ'Ô'ˆØ $¤ˆÐÑØˆˆMÑàŒY�_Š_˜S !Ñ$Ô$ˆØ! !œuˆˆOÑÝ!œ<×/Ò/°°1´ÀÐ/ÑIÔIˆˆKÑÝˆr‰7Œ7�QŠ;ˆ;Ø"$ Q¤%ˆC�ÑàŒ\×Ò˜nÑ-Ô-ˆØˆ:ð5Ø”\Ô&��øÝ!ð 5ð 5ð 5Ø”\×2Ò2Ñ4Ô4���ð5øøøà ˆˆNÑà”×!Ò!Ð"2Ñ3Ô3ˆØð 	+Ø$*ˆCÐ Ñ!Ø!+ˆÐÑà”<×+Ò+Ñ-Ô-ˆÝ'¨Ñ1Ô1ˆØ(¨œ^ˆˆMÑÝ  ¨Q¤Ñ0Ô0ˆˆMÑÝ'¨Ô(;Ñ<Ô<ˆØ(¨œ^ˆˆMÑÝ  ¨Q¤Ñ0Ô0ˆˆMÑØ#,ˆÐÑ ð	9Ø”lÔ*ˆGð 9Ð8°Ð8Ñ8Ô8ˆGˆGøõ ð 	,ð 	,ð 	,Ø”lÔ+ˆGˆGˆGð	,øøøõ
 ,1Ð0]Ð0]ÐU\Ð0]Ñ0]Ô0]Ñ+]Ô+]Ð]ˆˆMÑ˜[Øð 	ð 	‰DˆAˆqØ×)Ò)¨!Ñ,Ô,ˆAØð ØàÐ6Ð6Ð6àØ˜Q‘;ˆDØ�sˆ{ˆ{Ø�D�	�	”	˜S 1™WÑ$�	�	‘	�	à��D‘	�	à�7Š7�= "Ñ%Ô%×+Ò+Ñ-Ô-°Ò?Ð?Ø”JˆEØ5ˆJˆJàˆEØˆJØ—'’'Ð2°BÑ7Ô7×=Ò=Ñ?Ô?À9ÒLˆØð 	˜6˜>ð ˆFÝ49ØŒJ˜ ¤°uÈØ!ð5#ñ 5#ô 5#ð 	#ˆˆLÑ˜CÐ 0Ñ1ð %'ˆÐ Ñ!ð	,ð 	,ð 	,ð 	,ð 	,à#+ˆÐÑ àˆ
s$   Â5C Ã#C(Ã'C(ÆF7 Æ7GÇGc                 ó  — 	 t           j                             | ¦  «         n3# t          $ r&}t	          j        |¦  «        t          vr‚ Y d }~nd }~ww xY wt          j        | j	        ¦  «         | j	         
                    ¦   «          d S rb   )r   ÚBaseHTTPRequestHandlerrÛ   ru   r   rü   rý   r   Úshutdown_saferâ   r   )rT   r   s     r0   rÛ   zHttpProtocol.finish<  s™   € ð	ÝÔ1×8Ò8¸Ñ>Ô>Ð>Ð>øÝð 	ð 	ð 	åÔ  Ñ#Ô#­;Ð6Ð6Øð 7Ð6Ð6Ð6Ð6øøøøð	øøøõ 	Ô˜dœoÑ.Ô.Ð.ØŒ×ÒÑÔÐÐÐs   ‚" ¢
A¬AÁAc                 ó   — dS r‚   rB   rc   s    r0   Úhandle_expect_100zHttpProtocol.handle_expect_100F  s   € Øˆtr1   N)r?   r@   rA   Ú__doc__r  ÚMINIMUM_CHUNK_SIZErØ   r™   r  rç   rV   rÙ   rÚ   r  rò   r  rJ  rg  r  rÛ   r˜  rB   r1   r0   rÔ   rÔ   Q  só   € € € € € ðð ð "ÐØ+ÐØ"&ÐØÐð
 €Hðð ð ð _ð _ð _ð2
ð 
ð 
ðð ð ð0F2ð F2ð F2ðPVð Vð Vðpð ð ð+ð +ð +ð"Nð Nð Nð` ð  ð  ðð ð ð ð r1   rÔ   c                   óB   — e Zd Zdddeddddeedddfd„Zd„ Zd„ Zd„ Z	dS )ÚServerNTc                 ó´  — d| _         || _        || _        t          ¦   «         | _        |rt          ||¦  «        | _        || _        |
| _        || _        || _	        || _
        t          j        ¦   «         | _        || _        |	| _        || _        || _        || _        || _        || _        || _        | j        st-          j        dt0          d¬¦  «         d S d S )Nr   z×capitalize_response_headers is disabled.
 Please, make sure you know what you are doing.
 HTTP headers names are case-insensitive per RFC standard.
 Most likely, you need to fix HTTP parsing in your client software.é   ©Ú
stacklevel)r  r   Úaddressr¯   r¬   r­   r  r÷   r  r  ÚprotocolÚosÚgetpidrþ   rØ   r`  rL  rM  rú   r¦   rû   r™   ÚwarningsÚwarnÚDeprecationWarning)rT   r   r¡  r  r¬   r  r  r¢  rØ   r`  r÷   rL  rM  rú   r¦   rû   r™   s                    r0   rV   zServer.__init__L  sñ   € ð$ %&ˆÔ!ØˆŒØˆŒÝ‘<”<ˆŒØð 	.Ý! # uÑ-Ô-ˆDŒHØˆŒØ"ˆŒØˆŒØ 0ˆÔØ ˆŒÝ”9‘;”;ˆŒØ"4ˆÔØ#6ˆÔ Ø$ˆŒØ$ˆŒØ 0ˆÔØˆŒ
Ø,ˆÔØ+FˆÔ(àÔ/ð 	<ÝŒMð Gõ -¸ð	<ñ <ô <ð <ð <ð <ð	<ð 	<r1   c                 ó¬   — t           j        ddddddœ}t          | j        d¦  «        r
d|d<   d	|d
<   | j        �|                     | j        ¦  «         |S )N)r5   r   TFÚhttp)zwsgi.errorszwsgi.versionzwsgi.multithreadzwsgi.multiprocesszwsgi.run_onceúwsgi.url_schemeÚdo_handshakeÚhttpsrª  ÚonÚHTTPS)rª   r«   rê   r   r  Úupdate)rT   Úds     r0   r  zServer.get_environz  sm   € åœ:Ø"Ø $Ø!&Ø"Ø%ð
ð 
ˆõ �4”; Ñ/Ô/ð 	Ø#*ˆAÐÑ ØˆAˆg‰JØŒ<Ð#Ø�HŠH�T”\Ñ"Ô"Ð"Øˆr1   c                 ó  — 	 |                       || ¦  «         d S # t          j        $ rW |d                              ¦   «          | j                             d                     | j        |d         ¦  «        ¦  «         Y d S w xY w)Nr5   z({}) timed out {!r}r   )r¢  r   Útimeoutr   r¬   r¦   rì   rþ   )rT   r×   s     r0   Úprocess_requestzServer.process_request‹  s�   € ð	Rð �MŠM˜* dÑ+Ô+Ð+Ð+Ð+øÝŒ~ð 	Rð 	Rð 	Rà�qŒM×ÒÑ!Ô!Ð!àŒH�NŠNÐ0×7Ò7¸¼À*ÈQÄ-ÑPÔPÑQÔQÐQÐQÐQÐQð		Røøøs   ‚ šA"B Á?B c                 ó    — t          d¦  «        ‚)Nz`eventlet.wsgi.server.log_message was deprecated and deleted.
Please use server.log.info instead.)rè   )rT   Úmessages     r0   Úlog_messagezServer.log_message–  s   € Ýð 'ñ (ô (ð 	(r1   )
r?   r@   rA   rÔ   ÚDEFAULT_LOG_FORMATÚMAX_REQUEST_LINErV   r  r³  r¶  rB   r1   r0   rœ  rœ  J  s‚   € € € € € ð ØØ"&Ø&Ø$(Ø%)ØØ Ø.Ø"2ØØ $Ø-1ð!,<ð ,<ð ,<ð ,<ð\ð ð ð"	Rð 	Rð 	Rð(ð (ð (ð (ð (r1   rœ  c                 ó@  — d}t          | d¦  «        rd}|                      ¦   «         }| j        t          j        k    r dj        |Ž }nO| j        t          j        k    r dj        |d d…         Ž }n'| j        t          j        k    r|}nt          |¦  «        }|dz   |z   S )Nr©  r«  r¬  z//{}:{}z	//[{}]:{}rð   ry  )	rê   r‹  Úfamilyr   ÚAF_INETrì   ÚAF_INET6ÚAF_UNIXÚrepr)rU   ÚschemeÚnameÚ	hier_parts       r0   Úsocket_reprrÂ  ¦  s§   € Ø€FÝˆt�^Ñ$Ô$ð Øˆà×ÒÑÔ€DØ„{•f”nÒ$Ð$Ø$�IÔ$ dÐ+ˆ	ˆ	Ø	Œ�œÒ	'Ð	'Ø&�KÔ&¨¨R¨a¨R¬Ð1ˆ	ˆ	Ø	Œ�œÒ	&Ð	&Øˆ	ˆ	å˜‘J”Jˆ	à�C‰<˜)Ñ#Ð#r1   c                 ó  ‡— t          | |                      ¦   «         |||||||	|||||||¬¦  «        }|�1t          j        dt          d¬¦  «         |                     |¦  «         |€t          }|
�|
}nt          j        |¦  «        }t          |d¦  «        rt          |d¦  «        st          d¦  «        ‚i Šˆfd	„}	 |j                             d
                     |j        t          | ¦  «        ¦  «        ¦  «         t           �r	 |                      ¦   «         \  }}|                     |j        ¦  «         |j                             d                     |j        |¦  «        ¦  «         ||t*          gx‰|<   }|                     |j        |¦  «                             ||¦  «         n_# t2          $ r&}t5          j        |¦  «        t8          vr‚ Y d}~n<d}~wt:          t<          f$ r |j                             d¦  «         Y nw xY wt           �°‰                     ¦   «         D ]9}|d         }t@          |d<   |t*          k    rtC          j"        |d         ¦  «         Œ:| #                    ¦   «          |j                             d                     |j        t           ¦  «        ¦  «         	 |  $                    ¦   «          dS # tJ          $ r?}t5          j        |¦  «        tL          vrtO          j(        ¦   «          Y d}~dS Y d}~dS d}~ww xY w# ‰                     ¦   «         D ]9}|d         }t@          |d<   |t*          k    rtC          j"        |d         ¦  «         Œ:| #                    ¦   «          |j                             d                     |j        t           ¦  «        ¦  «         	 |  $                    ¦   «          w # tJ          $ r=}t5          j        |¦  «        tL          vrtO          j(        ¦   «          Y d}~w Y d}~w d}~ww xY wxY w)a÷  Start up a WSGI server handling requests from the supplied server
    socket.  This function loops forever.  The *sock* object will be
    closed after server exits, but the underlying file descriptor will
    remain open, so if you have a dup() of *sock*, it will remain usable.

    .. warning::

        At the moment :func:`server` will always wait for active connections to finish before
        exiting, even if there's an exception raised inside it
        (*all* exceptions are handled the same way, including :class:`greenlet.GreenletExit`
        and those inheriting from `BaseException`).

        While this may not be an issue normally, when it comes to long running HTTP connections
        (like :mod:`eventlet.websocket`) it will become problematic and calling
        :meth:`~eventlet.greenthread.GreenThread.wait` on a thread that runs the server may hang,
        even after using :meth:`~eventlet.greenthread.GreenThread.kill`, as long
        as there are active connections.

    :param sock: Server socket, must be already bound to a port and listening.
    :param site: WSGI application function.
    :param log: logging.Logger instance or file-like object that logs should be written to.
                If a Logger instance is supplied, messages are sent to the INFO log level.
                If not specified, sys.stderr is used.
    :param environ: Additional parameters that go into the environ dictionary of every request.
    :param max_size: Maximum number of client connections opened at any time by this server.
                Default is 1024.
    :param max_http_version: Set to "HTTP/1.0" to make the server pretend it only supports HTTP 1.0.
                This can help with applications or clients that don't behave properly using HTTP 1.1.
    :param protocol: Protocol class.  Deprecated.
    :param server_event: Used to collect the Server object.  Deprecated.
    :param minimum_chunk_size: Minimum size in bytes for http chunks.  This can be used to improve
                performance of applications which yield many small strings, though
                using it technically violates the WSGI spec. This can be overridden
                on a per request basis by setting environ['eventlet.minimum_write_chunk_size'].
    :param log_x_forwarded_for: If True (the default), logs the contents of the x-forwarded-for
                header in addition to the actual client ip address in the 'client_ip' field of the
                log line.
    :param custom_pool: A custom GreenPool instance which is used to spawn client green threads.
                If this is supplied, max_size is ignored.
    :param keepalive: If set to False or zero, disables keepalives on the server; all connections
                will be closed after serving one request. If numeric, it will be the timeout used
                when reading the next request.
    :param log_output: A Boolean indicating if the server will log data or not.
    :param log_format: A python format string that is used as the template to generate log lines.
                The following values can be formatted into it: client_ip, date_time, request_line,
                status_code, body_length, wall_seconds.  The default is a good example of how to
                use it.
    :param url_length_limit: A maximum allowed length of the request url. If exceeded, 414 error
                is returned.
    :param debug: True if the server should send exception tracebacks to the clients on 500 errors.
                If False, the server will respond with empty bodies.
    :param socket_timeout: Timeout for client connections' socket operations. Default None means
                wait forever.
    :param capitalize_response_headers: Normalize response headers' names to Foo-Bar.
                Default is True.
    )r  r  r¢  rØ   r`  r÷   rL  rM  rú   r¦   rû   r™   NzPeventlet.wsgi.Server() server_event kwarg is deprecated and will be removed soonrð   rŸ  ÚspawnÚwaitallzfeventlet.wsgi.Server pool must provide methods: `spawn`, `waitall`.
If unsure, use eventlet.GreenPool.c                 ó¼   •— ‰                      |d         d ¦  «         t          |d<   t          j        |d         ¦  «         |d                              ¦   «          d S )Nr   rð   r5   )Úpopró   r   r–  r   )rd  rî   Úconnectionss     €r0   Ú_clean_connectionz!server.<locals>._clean_connection%  sN   ø€ Ø�Š˜˜Qœ Ñ&Ô&Ð&ÝˆˆQ‰ÝÔ˜d 1œgÑ&Ô&Ð&ØˆQŒ�Š‰Œˆˆˆr1   z({}) wsgi starting up on {}z({}) accepted {!r}zwsgi exitingr5   z!({}) wsgi exited, is_accepting={}))rœ  r‹  r¥  r¦  r§  rà   Ú!DEFAULT_MAX_SIMULTANEOUS_REQUESTSrP  Ú	GreenPoolrê   rè   r¬   r¥   rì   rþ   rÂ  Úis_acceptingÚacceptrù   rû   r¦   rô   rÄ  r³  ÚlinkÚACCEPT_EXCEPTIONSr   rü   ÚACCEPT_ERRNOÚKeyboardInterruptÚ
SystemExitÚvaluesró   r   r–  rÅ  r   ru   rý   rR  Ú	print_exc)rU   Úsiter¬   r  Úmax_sizer  r¢  Úserver_eventrØ   r`  Úcustom_poolr÷   rL  rM  rú   r¦   rû   r™   ÚservÚpoolrÉ  Úclient_socketr’  râ   r   ÚcsÚ
prev_staterÈ  s                              @r0   r   r   ¸  sm  ø€ õR Øˆd×ÒÑ Ô ØˆcØØ)ØØ-Ø/ØØØØ)ØØ%Ø$?ðñ ô €Dð  ÐÝŒØ^Ý¨1ð	.ñ 	.ô 	.ð 	.ð 	×Ò˜$ÑÔÐØÐÝ4ˆØÐØˆˆåÔ! (Ñ+Ô+ˆå�D˜'Ñ"Ô"ð '¥w¨t°YÑ'?Ô'?ð 'Ýð &ñ 'ô 'ð 	'ð
 €Kðð ð ð ð ð#&ØŒ�ŠÐ3×:Ò:¸4¼8Å[ÐQUÑEVÔEVÑWÔWÑXÔXÐXÝñ 	ðØ-1¯[ª[©]¬]Ñ*�˜{Ø×(Ò(¨Ô)<Ñ=Ô=Ð=Ø”—’Ð3×:Ò:¸4¼8À[ÑQÔQÑRÔRÐRØ9DÀmÕU_Ð8`Ð`�˜KÑ(¨:Ø—’˜DÔ0°*Ñ=Ô=ß’TÐ+¨ZÑ8Ô8Ð8Ð8øÝ$ð ð ð ÝÔ$ QÑ'Ô'­|Ð;Ð;Øà�E�E�E�EøøøøÝ%¥zÐ2ð ð ð Ø”—’˜nÑ-Ô-Ð-Ø�ðøøøõ ñ 	ð" ×$Ò$Ñ&Ô&ð 	-ð 	-ˆBØ˜AœˆJÝˆBˆq‰EØ�ZÒ'Ð'ÝÔ% b¨¤eÑ,Ô,Ð,øØ�Š‰ŒˆØŒ�ŠÐ9×@Ò@ÀÄÍ<ÑXÔXÑYÔYÐYð		&ð �JŠJ‰LŒLˆLˆLˆLøÝð 	&ð 	&ð 	&ÝÔ  Ñ#Ô#­;Ð6Ð6ÝÔ#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ð 7Ð6Ð6Ð6Ð6Ð6øøøøð	&øøøøð ×$Ò$Ñ&Ô&ð 	-ð 	-ˆBØ˜AœˆJÝˆBˆq‰EØ�ZÒ'Ð'ÝÔ% b¨¤eÑ,Ô,Ð,øØ�Š‰ŒˆØŒ�ŠÐ9×@Ò@ÀÄÍ<ÑXÔXÑYÔYÐYð		&ð �JŠJ‰LŒLˆLˆLøÝð 	&ð 	&ð 	&ÝÔ  Ñ#Ô#­;Ð6Ð6ÝÔ#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%ð 7Ð6Ð6Ð6Ð6øøøøð	&øøøøøøs‡   Â?AL ÄB"F+ Æ*L Æ+
HÆ5GÇL Ç.HÈL ÈHÈL Ê-K Ë
LË.LÌLÌBP
Î+O Î?P
Ï 
PÏ
.PÏ8
P
ÐPÐP
)AÚerrnor£  rª   r"   rR  ÚtypesÚurllib.parser‡  r¥  rP  r   r   Úeventlet.corolocalr   Úeventlet.greenr   r   rÊ  ÚDEFAULT_MAX_HTTP_VERSIONr¸  rÏ   rÐ   rš  r·  r	  rÌ  rô   r  ró   Ú__all__r$   r%   r   r;   ÚEBADFrÿ   ÚEPIPEÚ
ECONNRESETÚ	ESHUTDOWNrý   rw   r=   rG  rE   rO  r¡   r£   r­   r¯   r©   rÉ   r•  rÔ   Ú
HTTPServerrœ  Ússlr·   ÚSSLErrorrÏ  ÚSSL_ERROR_EOFÚSSL_ERROR_SSLrÐ  ÚImportErrorrÂ  r   rB   r1   r0   ú<module>rï     s  ðØ €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø )Ð )Ð )Ð )Ð )Ð )Ø !Ð !Ð !Ð !Ð !Ð !ð %)Ð !Ø%Ð ØÐ Ø€ØÐ ØÐ ðLÐ ð€ð €à€
Ø€Ø€àÐ'Ð
(€ð AÐ@Ð@€ð8ð 8ð 8€
ð
ð ð ðð ð ð ŒK˜Ð€ØŒ{˜EÔ,¨e¬oÐ>€ð	ð 	ð 	ð 	ð 	�Zñ 	ô 	ð 	ð ˆU‰WŒW€
ðyð yð yð yð yñ yô yð yðx	ð 	ð 	ð 	ð 	˜	ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�iñ 	ô 	ð 	ð;ð ;ð ;ðð ð ð ð ñ ô ð ð"ð ð ð ð ˜
ñ ô ð ð,ð ð ð ð ñ ô ð ð&vð vð vð vð v�>Ô8ñ vô vð vðrO(ð O(ð O(ð O(ð O(ˆ^Ô&ñ O(ô O(ð O(ðdDØ€J€J€JØœ s¤|Ð4ÐØ”K Ô!1Ø”O SÔ%6¸Ô8IðK€L€Løàð Dð Dð DØœ˜ÐØ”K Ô!1°5´?ÐC€L€L€LðDøøøð
$ð $ð $ð& ØØØ4Ø ØØ"Ø#ØØØØ(Ø,ØØØ'+ð!V&ð V&ð V&ð V&ð V&ð V&s   Ä2E Å!E4Å3E4