§
    K" h¸5  ã                   ó.  — 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mZ d dlmZ d dlmZ dd	lmZ dd
lmZ 	 	 	 	 dd„Z G d„ d¦  «        Z G d„ dej        ¦  «        Z G d„ de¦  «        Z eed¦  «        r G d„ de¦  «        ZeZdS )é    N)Útrigger)ÚAdjustments)ÚHTTPChannel)ÚIPPROTO_IPV6ÚIPV6_V6ONLY)ÚThreadedTaskDispatcher)Úcleanup_unix_socketé   )Ú	wasyncore)Úproxy_headers_middlewareTc                 ó  — | €t          d¦  «        ‚t          di |¤Ž}|€i }|}|€(t          ¦   «         }|                     |j        ¦  «         |j        rEt          t          d¦  «        r0t          j        t          j	        ddf}t          | ||||||¬¦  «        S g }	d}
|j        sA|j        D ]9}t          | ||||||¬¦  «        }
|	                     |
j        |
j        f¦  «         Œ:|j        D ]î}|j        |j        |j        |                     ¦   «         f}|j        t          j        k    s|j        t          j        k    r9t          | |||||d|¬¦  «        }
|	                     |
j        |
j        f¦  «         ŒŒt          t          d¦  «        rM|j        t          j        k    r8t          | |||||d|¬¦  «        }
|	                     |
j        |
j        f¦  «         Œït/          |	¦  «        dk    r|
S |
j        }t3          |||	||¦  «        S )	z]
    if __name__ == '__main__':
        server = create_server(app)
        server.run()
    NzmThe "app" passed to ``create_server`` was ``None``.  You forgot to return a WSGI app within your application.ÚAF_UNIX)Ú
dispatcherÚadjÚsockinfoF)r   r   Úbind_socketr   r
   © )Ú
ValueErrorr   r   Úset_thread_countÚthreadsÚunix_socketÚhasattrÚsocketr   ÚSOCK_STREAMÚUnixWSGIServerÚsocketsÚlistenÚTcpWSGIServerÚappendÚeffective_hostÚeffective_portÚfamilyÚtypeÚprotoÚgetsocknameÚAF_INETÚAF_INET6ÚlenÚlog_infoÚMultiSocketServer)ÚapplicationÚmapÚ_startÚ_sockÚ_dispatcherÚkwr   r   r   Úeffective_listenÚ	last_servÚsockr)   s                úIc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\waitress/server.pyÚcreate_serverr5      s£  € ð ÐÝð<ñ
ô 
ð 	
õ Ð
Ð
˜Ð
Ð
€Cà
€{Øˆà€JØÐÝ+Ñ-Ô-ˆ
Ø×#Ò# C¤KÑ0Ô0Ð0à
„ð 

�7¥6¨9Ñ5Ô5ð 

Ý”N¥FÔ$6¸¸dÐCˆÝØØØØØ!ØØð
ñ 
ô 
ð 	
ð ÐØ€IØŒ;ð Øœ
ð 	ð 	ˆHõ &ØØØØØ%ØØ!ðñ ô ˆIð ×#Ò#ØÔ)¨9Ô+CÐDñô ð ð ð ”ð ð ˆØ”K ¤¨D¬J¸×8HÒ8HÑ8JÔ8JÐKˆØŒ;�&œ.Ò(Ð(¨D¬K½6¼?Ò,JÐ,JÝ%ØØØØØ%ØØ!Ø!ð	ñ 	ô 	ˆIð ×#Ò#ØÔ)¨9Ô+CÐDñô ð ð õ •V˜YÑ'Ô'ð 	¨D¬K½6¼>Ò,IÐ,IÝ&ØØØØØ%ØØ!Ø!ð	ñ 	ô 	ˆIð ×#Ò#ØÔ)¨9Ô+CÐDñô ð øõ ÐÑÔ Ò!Ð!àÐàÔ!€Hõ ˜S #Ð'7¸ÀXÑNÔNÐNó    c                   ó6   — e Zd ZeZ	 	 	 	 	 dd„Zd„ Zd„ Zd„ ZdS )r*   Nc                 óL   — || _         || _        || _        || _        || _        d S ©N)r   r,   r1   Útask_dispatcherr)   )Úselfr,   r   r1   r   r)   s         r4   Ú__init__zMultiSocketServer.__init__�   s-   € ð ˆŒØˆŒØ 0ˆÔØ)ˆÔØ ˆŒˆˆr6   c                 ó¤   — | j         D ]G}t          |¦  «        }d|d         v rd|d         › d�|d<   |                       |j        |Ž ¦  «         ŒHd S )Nú:r   ú[ú])r1   Úlistr)   Úformat)r;   Ú
format_strÚls      r4   Úprint_listenzMultiSocketServer.print_listen›   sk   € ØÔ&ð 	1ð 	1ˆAÝ�Q‘”ˆAà�a˜”dˆ{ˆ{Ø"˜1˜Qœ4�{�{�{��!‘à�MŠMÐ+˜*Ô+¨QÐ/Ñ0Ô0Ð0Ð0ð	1ð 	1r6   c                 óÌ   — 	 | j                              | j        j        | j        | j        j        ¬¦  «         d S # t          t          f$ r |                      ¦   «          Y d S w xY w©N)Útimeoutr,   Úuse_poll)	ÚasyncoreÚloopr   Úasyncore_loop_timeoutr,   Úasyncore_use_pollÚ
SystemExitÚKeyboardInterruptÚclose©r;   s    r4   ÚrunzMultiSocketServer.run¤   s{   € ð	ØŒM×ÒØœÔ6Ø”HØœÔ3ð ñ ô ð ð ð øõ
 Õ-Ð.ð 	ð 	ð 	Ø�JŠJ‰LŒLˆLˆLˆLˆLð	øøøs   ‚6: º%A#Á"A#c                 ój   — | j                              ¦   «          t          j        | j        ¦  «         d S r9   )r:   Úshutdownr   Ú	close_allr,   rQ   s    r4   rP   zMultiSocketServer.close®   s0   € ØÔ×%Ò%Ñ'Ô'Ð'ÝÔ˜DœHÑ%Ô%Ð%Ð%Ð%r6   )NNNNN)	Ú__name__Ú
__module__Ú__qualname__r   rJ   r<   rE   rR   rP   r   r6   r4   r*   r*   Š   sk   € € € € € Ø€Hð ØØØØð!ð !ð !ð !ð1ð 1ð 1ðð ð ð&ð &ð &ð &ð &r6   r*   c                   ó˜   — e Zd ZeZdZeZeZ	dZ
	 	 	 	 	 	 	 d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„ Zd„ Zd„ ZdS )ÚBaseWSGIServerr   FNTc	           	      ó²  — |€t          di |	¤Ž}|j        s|j        r4t          ||j        |j        |j        |j        |j        | j        ¬¦  «        }|€i }|€|j        d         }|| _	        |d         | _
        |d         | _        || _        || _        t          j        |¦  «        | _        |€-t          ¦   «         }|                     | j        j        ¦  «         || _        | j        j                             | ||¬¦  «         |€[|                      | j
        | j        ¦  «         | j
        t.          j        k    r&| j                             t4          t6          d¦  «         |                      ¦   «          |r|                      ¦   «          |                      ¦   «         \  | _        | _         |j!        | _!        i | _"        |r|  #                    ¦   «          d S d S )N)Útrusted_proxyÚtrusted_proxy_countÚtrusted_proxy_headersÚclear_untrustedÚlog_untrustedÚloggerr   r
   ©r,   r   )$r   r\   Úclear_untrusted_proxy_headersr   r]   r^   Úlog_untrusted_proxy_headersra   r   r   r"   Úsocktyper+   r   r   r   r   r   r:   rJ   r   r<   Úcreate_socketr   r'   Ú
setsockoptr   r   Úset_reuse_addrÚbind_server_socketr%   r    r!   Úserver_nameÚactive_channelsÚaccept_connections)
r;   r+   r,   r-   r.   r   r   r   r   r0   s
             r4   r<   zBaseWSGIServer.__init__º   sç  € ð ˆ;ÝÐ#Ð# Ð#Ð#ˆCàÔð 	 Ô Að 	õ 3ØØ!Ô/Ø$'Ô$;Ø&)Ô&?Ø #Ô AØ!Ô=Ø”{ðñ ô ˆKð ˆ;ð ˆCØÐØ”z !”}ˆHà ˆŒØ˜q”kˆŒØ  œˆŒØ&ˆÔØˆŒÝ” sÑ+Ô+ˆŒØÐÝ/Ñ1Ô1ˆJØ×'Ò'¨¬Ô(8Ñ9Ô9Ð9à)ˆÔØŒÔ ×)Ò)¨$°¸3Ð)Ñ?Ô?Ð?Øˆ=Ø×Ò˜tœ{¨D¬MÑ:Ô:Ð:ØŒ{�fœoÒ-Ð-Ø”×&Ò&¥|µ[À!ÑDÔDÐDà×ÒÑÔÐàð 	&Ø×#Ò#Ñ%Ô%Ð%à37×3CÒ3CÑ3EÔ3EÑ0ˆÔ˜TÔ0Øœ?ˆÔØ!ˆÔØð 	&Ø×#Ò#Ñ%Ô%Ð%Ð%Ð%ð	&ð 	&r6   c                 ó   — t           ‚r9   ©ÚNotImplementedErrorrQ   s    r4   ri   z!BaseWSGIServer.bind_server_socketû   ó   € Ý!Ð!r6   c                 ó   — t           ‚r9   rn   rQ   s    r4   r%   zBaseWSGIServer.getsocknameþ   rp   r6   c                 ó\   — d| _         | j                             | j        j        ¦  «         d S )NT)Ú	acceptingr   r   r   ÚbacklogrQ   s    r4   rl   z!BaseWSGIServer.accept_connections  s*   € ØˆŒØŒ×Ò˜4œ8Ô+Ñ,Ô,Ð,Ð,Ð,r6   c                 ó:   — | j                              |¦  «         d S r9   )r:   Úadd_task)r;   Útasks     r4   rv   zBaseWSGIServer.add_task  s   € ØÔ×%Ò% dÑ+Ô+Ð+Ð+Ð+r6   c                 óÜ  — t          j         ¦   «         }|| j        k    r)|| j        j        z   | _        |                      |¦  «         | j        r�| j        sDt          | j        ¦  «        | j        j	        k    r"d| _        | j
                             d¦  «         nJ| j        rCt          | j        ¦  «        | j        j	        k     r!d| _        | j
                             d¦  «         | j         S dS )NTzXtotal open connections reached the connection limit, no longer accepting new connectionsFzJtotal open connections dropped below the connection limit, listening again)ÚtimeÚnext_channel_cleanupr   Úcleanup_intervalÚmaintenancers   Úin_connection_overflowr(   Ú_mapÚconnection_limitra   ÚwarningÚinfo)r;   Únows     r4   ÚreadablezBaseWSGIServer.readable  sù   € ÝŒi‰kŒkˆØ�$Ô+Ò+Ð+Ø(+¨d¬hÔ.GÑ(GˆDÔ%Ø×Ò˜SÑ!Ô!Ð!àŒ>ð 	3àÔ/ðå˜œ	‘N”N d¤hÔ&?Ò?Ð?à.2�Ô+Ø”×#Ò#ð:ñô ð ð ð
 Ô+ðå˜œ	‘N”N T¤XÔ%>Ò>Ð>à.3�Ô+Ø”× Ò ð&ñô ð ð Ô2Ð2Ð2Øˆur6   c                 ó   — dS )NFr   rQ   s    r4   ÚwritablezBaseWSGIServer.writable$  s   € Øˆur6   c                 ó   — d S r9   r   rQ   s    r4   Úhandle_readzBaseWSGIServer.handle_read'  ó   € Øˆr6   c                 ó   — d S r9   r   rQ   s    r4   Úhandle_connectzBaseWSGIServer.handle_connect*  rˆ   r6   c                 óR  — 	 |                       ¦   «         }|€d S |\  }}|                      |¦  «         n9# t          $ r, | j        j        r| j                             dd¬¦  «         Y d S w xY w|                      |¦  «        }|                      | ||| j        | j	        ¬¦  «         d S )Nz"server accept() threw an exceptionT)Úexc_inforb   )
ÚacceptÚset_socket_optionsÚOSErrorr   Úlog_socket_errorsra   r€   Úfix_addrÚchannel_classr~   )r;   ÚvÚconnÚaddrs       r4   Úhandle_acceptzBaseWSGIServer.handle_accept-  sÉ   € ð	Ø—’‘”ˆAØˆyØ�Ø‰JˆD�$Ø×#Ò# DÑ)Ô)Ð)Ð)øÝð 	ð 	ð 	ð ŒxÔ)ð YØ”×#Ò#Ð$HÐSWÐ#ÑXÔXÐXØˆFˆFð	øøøð �}Š}˜TÑ"Ô"ˆØ×Ò˜4  t¨T¬X¸4¼9ÐÑEÔEÐEÐEÐEs   ‚5 š5 µ2A+Á*A+c                 óÖ   — 	 | j                              | j        j        | j        | j        j        ¬¦  «         d S # t          t          f$ r | j         	                    ¦   «          Y d S w xY wrG   )
rJ   rK   r   rL   r~   rM   rN   rO   r:   rT   rQ   s    r4   rR   zBaseWSGIServer.runC  s†   € ð	,ØŒM×ÒØœÔ6Ø”IØœÔ3ð ñ ô ð ð ð øõ
 Õ-Ð.ð 	,ð 	,ð 	,ØÔ ×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+ð	,øøøs   ‚6: º*A(Á'A(c                 ó8   — | j                              ¦   «          d S r9   )r   Úpull_triggerrQ   s    r4   r™   zBaseWSGIServer.pull_triggerM  s   € ØŒ×!Ò!Ñ#Ô#Ð#Ð#Ð#r6   c                 ó   — d S r9   r   )r;   r”   s     r4   rŽ   z!BaseWSGIServer.set_socket_optionsP  rˆ   r6   c                 ó   — |S r9   r   ©r;   r•   s     r4   r‘   zBaseWSGIServer.fix_addrS  s   € Øˆr6   c                 óŽ   — || j         j        z
  }| j                             ¦   «         D ]}|j        s|j        |k     rd|_        ŒdS )z–
        Closes channels that have not had any activity in a while.

        The timeout is configured through adj.channel_timeout (seconds).
        TN)r   Úchannel_timeoutrk   ÚvaluesÚrequestsÚlast_activityÚ
will_close)r;   r‚   ÚcutoffÚchannels       r4   r|   zBaseWSGIServer.maintenanceV  s\   € ð �t”xÔ/Ñ/ˆØÔ+×2Ò2Ñ4Ô4ð 	*ð 	*ˆGØÔ$ð *¨'Ô*?À&Ò*HÐ*HØ%)�Ô"øð	*ð 	*r6   c                 ól   — |                       |                     | j        | j        ¦  «        ¦  «         d S r9   )r)   rB   r    r!   )r;   rC   s     r4   rE   zBaseWSGIServer.print_listena  s0   € Ø�Š�j×'Ò'¨Ô(;¸TÔ=PÑQÔQÑRÔRÐRÐRÐRr6   c                 ór   — | j                              ¦   «          t          j                             | ¦  «        S r9   )r   rP   r   r   rQ   s    r4   rP   zBaseWSGIServer.closed  s-   € ØŒ×ÒÑÔÐÝÔ#×)Ò)¨$Ñ/Ô/Ð/r6   )NTNNNNT)rV   rW   rX   r   r’   rz   r   Ú	socketmodr   rJ   r}   r<   ri   r%   rl   rv   rƒ   r…   r‡   rŠ   r–   rR   r™   rŽ   r‘   r|   rE   rP   r   r6   r4   rZ   rZ   ³   sQ  € € € € € Ø€MØÐØ€IØ€HØ"Ðð
 ØØØØØØð?&ð ?&ð ?&ð ?&ðB"ð "ð "ð"ð "ð "ð-ð -ð -ð,ð ,ð ,ðð ð ð8ð ð ðð ð ðð ð ðFð Fð Fð,,ð ,ð ,ð$ð $ð $ðð ð ðð ð ð	*ð 	*ð 	*ðSð Sð Sð0ð 0ð 0ð 0ð 0r6   rZ   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )r   c                 óH   — | j         \  }}}}|                      |¦  «         d S r9   )r   Úbind)r;   Ú_Úsockaddrs      r4   ri   z TcpWSGIServer.bind_server_socketj  s*   € Ø"œmÑˆˆAˆq�(Ø�	Š	�(ÑÔÐÐÐr6   c                 ó”   — | j                              | j                             ¦   «         | j         j        | j         j        z  ¦  «        S r9   )r§   Úgetnameinfor   r%   ÚNI_NUMERICHOSTÚNI_NUMERICSERVrQ   s    r4   r%   zTcpWSGIServer.getsocknamen  s?   € àŒ~×)Ò)ØŒK×#Ò#Ñ%Ô%ØŒNÔ)¨D¬NÔ,IÑIñ
ô 
ð 	
r6   c                 óZ   — | j         j        D ]\  }}}|                     |||¦  «         Œd S r9   )r   Úsocket_optionsrg   )r;   r”   ÚlevelÚoptnameÚvalues        r4   rŽ   z TcpWSGIServer.set_socket_optionsu  s@   € Ø%)¤XÔ%<ð 	3ð 	3Ñ!ˆE�7˜EØ�OŠO˜E 7¨EÑ2Ô2Ð2Ð2ð	3ð 	3r6   N)rV   rW   rX   ri   r%   rŽ   r   r6   r4   r   r   i  sA   € € € € € ðð ð ð
ð 
ð 
ð3ð 3ð 3ð 3ð 3r6   r   r   c                   ó>   ‡ — e Zd Z	 	 	 	 	 	 dˆ fd„	Zd„ Zd„ Zd„ Zˆ xZS )r   NTc           
      ó‚   •— |€t           j        t           j        d d f} t          ¦   «         j        |f||||||dœ|¤Ž d S )N)r,   r-   r.   r   r   r   )r   r   r   Úsuperr<   )
r;   r+   r,   r-   r.   r   r   r   r0   Ú	__class__s
            €r4   r<   zUnixWSGIServer.__init__}  sl   ø€ ð ÐÝ"œN­FÔ,>ÀÀdÐK�à�E‰GŒGÔØð	àØØØ%ØØ!ð	ð 	ð ð	ð 	ð 	ð 	ð 	r6   c                 ó  — t          | j        j        ¦  «         |                      | j        j        ¦  «         t          j                             | j        j        ¦  «        r+t	          j        | j        j        | j        j        ¦  «         d S d S r9   )	r	   r   r   rª   ÚosÚpathÚexistsÚchmodÚunix_socket_permsrQ   s    r4   ri   z!UnixWSGIServer.bind_server_socket–  sv   € Ý ¤Ô 4Ñ5Ô5Ð5Ø�IŠI�d”hÔ*Ñ+Ô+Ð+ÝŒw�~Š~˜dœhÔ2Ñ3Ô3ð KÝ”˜œÔ-¨t¬xÔ/IÑJÔJÐJÐJÐJðKð Kr6   c                 ó8   — d| j                              ¦   «         fS )NÚunix)r   r%   rQ   s    r4   r%   zUnixWSGIServer.getsocknameœ  s   € Ø˜DœK×3Ò3Ñ5Ô5Ð6Ð6r6   c                 ó   — dS )N)Ú	localhostNr   rœ   s     r4   r‘   zUnixWSGIServer.fix_addrŸ  s   € Ø&Ð&r6   )NTNNNN)rV   rW   rX   r<   ri   r%   r‘   Ú__classcell__)r¹   s   @r4   r   r   |  s�   ø€ € € € € ð ØØØØØð	ð 	ð 	ð 	ð 	ð 	ð2	Kð 	Kð 	Kð	7ð 	7ð 	7ð	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'r6   r   )NTNN)r»   Úos.pathr   ry   Úwaitressr   Úwaitress.adjustmentsr   Úwaitress.channelr   Úwaitress.compatr   r   Úwaitress.taskr   Úwaitress.utilitiesr	   Ú r   Úproxy_headersr   r5   r*   r   rZ   r   r   r   Ú
WSGIServerr   r6   r4   ú<module>rÏ      sÁ  ðð 
€	€	€	Ø €€€Ø €€€Ø €€€à Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø (Ð (Ð (Ð (Ð (Ð (Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2à Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ð
 	ØØ
ØðeOð eOð eOð eOðV&&ð &&ð &&ð &&ð &&ñ &&ô &&ð &&ðRs0ð s0ð s0ð s0ð s0�YÔ)ñ s0ô s0ð s0ðl3ð 3ð 3ð 3ð 3�Nñ 3ô 3ð 3ð" €7ˆ6�9ÑÔð &'ð$'ð $'ð $'ð $'ð $'˜ñ $'ô $'ð $'ðP €
€
€
r6   