§
    ~Štjº#  ã                   ó<  — d 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
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
lmZ ddlmZ e
rddlZej        Zn	 ddlZej        Zn# e$ r dZeZY nw xY wdZ G d„ dej        ¦  «        Z  G d„ de ¦  «        Z!dS )z%Async gunicorn worker for aiohttp.webé    N)Ú	FrameType)ÚTYPE_CHECKINGÚAnyÚOptional)ÚAccessLogFormat)Úbase)Úwebé   )Ú
set_result)ÚApplication)ÚAccessLogger)ÚGunicornWebWorkerÚGunicornUVLoopWebWorkerc                   óø   ‡ — e Zd Zej        Zej        Zde	de	ddfˆ fd„Z
dˆ fd„Zdd„Zdd„Zdd
„Z	 dded	         ddfd„Zdd„Zdededz  ddfd„Zdededz  ddfd„Zede	ddfd„¦   «         Zdedefd„Zˆ xZS )r   ÚargsÚkwÚreturnNc                 ód   •—  t          ¦   «         j        |i |¤Ž d | _        d| _        d | _        d S ©Nr   )ÚsuperÚ__init__Ú_taskÚ	exit_codeÚ_notify_waiter)Úselfr   r   Ú	__class__s      €úL/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/aiohttp/worker.pyr   zGunicornWebWorker.__init__*   s;   ø€ Ø�‰ŒÔ˜$Ð% "Ð%Ð%Ð%à04ˆŒ
ØˆŒØ;?ˆÔÐÐó    c                 ó  •— 	 t          j        ¦   «                              ¦   «          n# t          $ r Y nw xY wt          j        ¦   «         | _        t          j        | j        ¦  «         t          ¦   «                              ¦   «          d S ©N)	ÚasyncioÚget_event_loopÚcloseÚRuntimeErrorÚnew_event_loopÚloopÚset_event_loopr   Úinit_process)r   r   s    €r   r(   zGunicornWebWorker.init_process1   s‡   ø€ ð	ÝÔ"Ñ$Ô$×*Ò*Ñ,Ô,Ð,Ð,øÝð 	ð 	ð 	àˆDð	øøøõ Ô*Ñ,Ô,ˆŒ	ÝÔ˜tœyÑ)Ô)Ð)å‰Œ×ÒÑÔÐÐÐs   ƒ%) ©
6µ6c                 ó  — d| _         | j                             |                      ¦   «         ¦  «        | _        	 | j                             | j        ¦  «         | j                             | j                             ¦   «         ¦  «         | j                             ¦   «          nO# | j                             | j                             ¦   «         ¦  «         | j                             ¦   «          w xY wt          j	        | j
        ¦  «         d S ©NF)Úbootedr&   Úcreate_taskÚ_runr   Úrun_until_completeÚshutdown_asyncgensr#   ÚsysÚexitr   ©r   s    r   ÚrunzGunicornWebWorker.run>   s×   € ð ˆŒà”Y×*Ò*¨4¯9ª9©;¬;Ñ7Ô7ˆŒ
ð	ØŒI×(Ò(¨¬Ñ4Ô4Ð4àŒI×(Ò(¨¬×)EÒ)EÑ)GÔ)GÑHÔHÐHØŒI�OŠOÑÔÐÐøð ŒI×(Ò(¨¬×)EÒ)EÑ)GÔ)GÑHÔHÐHØŒI�OŠOÑÔÐÐøøøåŒ�”Ñ Ô Ð Ð Ð s   ºB$ Â$AC0c           	   ƒ   ó®  K  — d }t          | j        t          ¦  «        r| j        }nšt          j        | j        ¦  «        s)t
          j        dk     rZt          j        | j        ¦  «        rA|                      ¦   «         ƒ d {V —†}t          |t          j	        ¦  «        r
|}|j
        }n|}nt          d| j        › �¦  «        ‚|€p| j        j        r| j        j        nd }t          j	        || j        | j        j        ||                      | j        j        ¦  «        | j        j        dz  dz  ¬¦  «        }|                     ¦   «         ƒ d {V —† | j        j        r|                      | j        ¦  «        nd }|}|€J ‚|j        }|€J ‚| j        D ]3}t          j        |||¬¦  «        }|                     ¦   «         ƒ d {V —† Œ4d| _        t9          j        ¦   «         }		 | j        rÇ|                      ¦   «          |j         }
| j!        r.|
| j!        k    r#d| _        | j         "                    d	| ¦  «         np|	t9          j        ¦   «         k    r?| j#        t9          j$        ¦   «         k    r#d| _        | j         "                    d
| ¦  «         n|  %                    ¦   «         ƒ d {V —† | j        °Çn# tL          $ r Y nw xY w| '                    ¦   «         ƒ d {V —† d S )N)é   é   zSwsgi app should be either Application or async function returning Application, got éd   é_   )ÚloggerÚkeepalive_timeoutÚ
access_logÚaccess_log_formatÚshutdown_timeout)Ússl_contextTFzMax requests, shutting down: %sz!Parent changed, shutting down: %s)(Ú
isinstanceÚwsgir   ÚinspectÚiscoroutinefunctionr0   Úversion_infor!   r	   Ú	AppRunnerÚappr$   ÚcfgÚ	accesslogÚlogr;   Ú	keepaliveÚ_get_valid_log_formatr<   Úgraceful_timeoutÚsetupÚis_sslÚ_create_ssl_contextÚserverÚsocketsÚSockSiteÚstartr+   ÚosÚgetpidÚaliveÚnotifyÚrequests_countÚmax_requestsÚinfoÚppidÚgetppidÚ_wait_next_notifyÚ	ExceptionÚcleanup)r   ÚrunnerrE   r@   r;   ÚctxrO   ÚsockÚsiteÚpidÚcnts              r   r-   zGunicornWebWorker._runP   s8  è è € ØˆÝ�d”i¥Ñ-Ô-ð 	Ø”)ˆCˆCÝÔ(¨¬Ñ3Ô3ð 	ÝÔ˜wÒ&Ð&­7Ô+FÀtÄyÑ+QÔ+QÐ&àŸš™œÐ$Ð$Ð$Ð$Ð$Ð$ˆDÝ˜$¥¤Ñ.Ô.ð Ø�Ø”j��à��åðIØ=A¼YðIð Iñô ð ð
 ˆ>Ø04´Ô0BÐL˜œÔ,Ð,ÈˆJÝ”]ØØ”xØ"&¤(Ô"4Ø%Ø"&×"<Ò"<Ø”HÔ.ñ#ô #ð "&¤Ô!:¸SÑ!@À2Ñ!Eð	ñ 	ô 	ˆFð �lŠl‰nŒnÐÐÐÐÐÐÐà48´H´OÐMˆd×&Ò& t¤xÑ0Ô0Ð0ÈˆàˆØÐ!Ð!Ð!Ø”ˆØÐ!Ð!Ð!Ø”Lð 	ð 	ˆDÝ”<ØØØðñ ô ˆDð
 —*’*‘,”,ÐÐÐÐÐÐÐÐð ˆŒõ Œi‰kŒkˆð	Ø”*ð 3Ø—’‘”�àÔ+�ØÔ$ð 3¨¨tÔ/@Ò)@Ð)@Ø!&�D”JØ”H—M’MÐ"CÀTÑJÔJÐJÐJà�BœI™KœKÒ'Ð'¨D¬I½¼¹¼Ò,EÐ,EØ!&�D”JØ”H—M’MÐ"EÀtÑLÔLÐLÐLà×0Ò0Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ð ”*ð 3øøõ ð 	ð 	ð 	ØˆDð	øøøð �nŠnÑÔÐÐÐÐÐÐÐÐÐs   ÇCJ+ Ê+
J8Ê7J8úasyncio.Future[bool]c                 ó¼   — |                       ¦   «          | j        }|€J ‚|                     ¦   «         x| _        }| j                             d| j         |¦  «         |S )Ng      ð?)Ú_notify_waiter_doner&   Úcreate_futurer   Ú
call_later)r   r&   Úwaiters      r   r\   z#GunicornWebWorker._wait_next_notifyš   sb   € Ø× Ò Ñ"Ô"Ð"àŒyˆØÐÐÐØ'+×'9Ò'9Ñ';Ô';Ð;ˆÔ˜fØŒ	×Ò˜S $Ô":¸FÑCÔCÐCàˆr   rj   c                 ó`   — |€| j         }|�t          |d¦  «         || j         u r	d | _         d S d S )NT)r   r   )r   rj   s     r   rg   z%GunicornWebWorker._notify_waiter_done¤   sK   € ð ˆ>ØÔ(ˆFØÐÝ�v˜tÑ$Ô$Ð$à�TÔ(Ð(Ð(Ø"&ˆDÔÐÐð )Ð(r   c                 ó\  — | j                              t          j        | j        t          j        d ¦  «         | j                              t          j        | j        t          j        d ¦  «         | j                              t          j        | j        t          j        d ¦  «         | j                              t          j        | j	        t          j        d ¦  «         | j                              t          j
        | j        t          j
        d ¦  «         | j                              t          j        | j        t          j        d ¦  «         t          j        t          j        d¦  «         t          j        t          j
        d¦  «         t          j        t          j        t          j        ¦  «         d S r*   )r&   Úadd_signal_handlerÚsignalÚSIGQUITÚhandle_quitÚSIGTERMÚhandle_exitÚSIGINTÚSIGWINCHÚhandle_winchÚSIGUSR1Úhandle_usr1ÚSIGABRTÚhandle_abortÚsiginterruptÚSIGCHLDÚSIG_DFLr2   s    r   Úinit_signalszGunicornWebWorker.init_signals¯   sT  € ð 	Œ	×$Ò$ÝŒN˜DÔ,­f¬n¸dñ	
ô 	
ð 	
ð 	Œ	×$Ò$ÝŒN˜DÔ,­f¬n¸dñ	
ô 	
ð 	
ð 	Œ	×$Ò$ÝŒM˜4Ô+­V¬]¸Dñ	
ô 	
ð 	
ð 	Œ	×$Ò$ÝŒO˜TÔ.µ´Àñ	
ô 	
ð 	
ð 	Œ	×$Ò$ÝŒN˜DÔ,­f¬n¸dñ	
ô 	
ð 	
ð 	Œ	×$Ò$ÝŒN˜DÔ-­v¬~¸tñ	
ô 	
ð 	
õ 	Ô�FœN¨EÑ2Ô2Ð2ÝÔ�FœN¨EÑ2Ô2Ð2õ 	Œ•f”n¥f¤nÑ5Ô5Ð5Ð5Ð5r   ÚsigÚframec                 óp   — d| _         | j                             | ¦  «         |                      ¦   «          d S r*   )rU   rF   Ú
worker_intrg   ©r   r~   r   s      r   rp   zGunicornWebWorker.handle_quitÕ   s;   € ØˆŒ
ð 	Œ×Ò˜DÑ!Ô!Ð!ð 	× Ò Ñ"Ô"Ð"Ð"Ð"r   c                 ó~   — d| _         d| _        | j                             | ¦  «         t	          j        d¦  «         d S )NFr
   )rU   r   rF   Úworker_abortr0   r1   r‚   s      r   ry   zGunicornWebWorker.handle_abortÞ   s7   € ØˆŒ
ØˆŒØŒ×Ò˜dÑ#Ô#Ð#ÝŒ�‰Œˆˆˆr   rF   Ú
SSLContextc                 ó@  — t           €t          d¦  «        ‚t          j        | j        ¦  «        }|                     | j        | j        ¦  «         | j        |_        | j	        r| 
                    | j	        ¦  «         | j        r|                     | j        ¦  «         |S )z~Creates SSLContext instance for usage in asyncio.create_server.

        See ssl.SSLSocket.__init__ for more details.
        NzSSL is not supported.)Ússlr$   r…   Ússl_versionÚload_cert_chainÚcertfileÚkeyfileÚ	cert_reqsÚverify_modeÚca_certsÚload_verify_locationsÚciphersÚset_ciphers)rF   r`   s     r   rN   z%GunicornWebWorker._create_ssl_contextä   s�   € õ ˆ;ÝÐ6Ñ7Ô7Ð7åŒn˜Sœ_Ñ-Ô-ˆØ×Ò˜CœL¨#¬+Ñ6Ô6Ð6Øœ-ˆŒØŒ<ð 	4Ø×%Ò% c¤lÑ3Ô3Ð3ØŒ;ð 	)Ø�OŠO˜CœKÑ(Ô(Ð(Øˆ
r   Úsource_formatc                 ór   — || j         k    r| j        S t          j        d|¦  «        rt	          d¦  «        ‚|S )Nz%\([^\)]+\)zêGunicorn's style options in form of `%(name)s` are not supported for the log formatting. Please use aiohttp's format specification to configure access log formatting: http://docs.aiohttp.org/en/stable/logging.html#format-specification)ÚDEFAULT_GUNICORN_LOG_FORMATÚDEFAULT_AIOHTTP_LOG_FORMATÚreÚsearchÚ
ValueError)r   r’   s     r   rJ   z'GunicornWebWorker._get_valid_log_formatö   sL   € Ø˜DÔ<Ò<Ð<ØÔ2Ð2ÝŒY�~ }Ñ5Ô5ð 		!Ýð(ñô ð ð !Ð r   ©r   N)r   re   r    )Ú__name__Ú
__module__Ú__qualname__r   Ú
LOG_FORMATr•   ÚGunicornAccessLogFormatÚdefaultr”   r   r   r(   r3   r-   r\   r   rg   r}   Úintr   rp   ry   ÚstaticmethodrN   ÚstrrJ   Ú__classcell__©r   s   @r   r   r   &   sÁ  ø€ € € € € Ø!-Ô!8ÐØ"9Ô"AÐð@˜cð @¨ð @°ð @ð @ð @ð @ð @ð @ðð ð ð ð ð ð!ð !ð !ð !ð$Hð Hð Hð HðTð ð ð ð :>ð	'ð 	'ØÐ5Ô6ð	'à	ð	'ð 	'ð 	'ð 	'ð$6ð $6ð $6ð $6ðL#˜sð #¨9°tÑ+;ð #Àð #ð #ð #ð #ð ð ¨I¸Ñ,<ð Àð ð ð ð ð ð ð ¨ð ð ð ñ „\ðð"!°3ð !¸3ð !ð !ð !ð !ð !ð !ð !ð !r   r   c                   ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )r   r   Nc                 ó
  •— dd l }	 t          j        ¦   «                              ¦   «          n# t          $ r Y nw xY wt          j        |                     ¦   «         ¦  «         t          ¦   «                              ¦   «          d S r   )	Úuvloopr!   r"   r#   r$   Úset_event_loop_policyÚEventLoopPolicyr   r(   )r   r§   r   s     €r   r(   z$GunicornUVLoopWebWorker.init_process  sŠ   ø€ Øˆˆˆð	ÝÔ"Ñ$Ô$×*Ò*Ñ,Ô,Ð,Ð,øÝð 	ð 	ð 	àˆDð	øøøõ 	Ô% f×&<Ò&<Ñ&>Ô&>Ñ?Ô?Ð?å‰Œ×ÒÑÔÐÐÐs   ‡%- ­
:¹:r™   )rš   r›   rœ   r(   r£   r¤   s   @r   r   r     s=   ø€ € € € € ðð ð ð ð ð ð ð ð ð r   r   )"Ú__doc__r!   rA   rS   r–   rn   r0   Útypesr   Útypingr   r   r   Úgunicorn.configr   rž   Úgunicorn.workersr   Úaiohttpr	   Úhelpersr   Úweb_appr   Úweb_logr   r‡   r…   ÚImportErrorÚobjectÚ__all__ÚWorkerr   r   © r   r   ú<module>r¸      s¨  ðØ +Ð +à €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à FÐ FÐ FÐ FÐ FÐ FØ !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø !Ð !Ð !Ð !Ð !Ð !àð Ø€J€J€Jà”€J€JðØˆ
ˆ
ˆ
à”^ˆ
ˆ
øØð ð ð ØˆØˆ
ˆ
ˆ
ðøøøð
 ;€ð\!ð \!ð \!ð \!ð \!˜œñ \!ô \!ð \!ð~ð ð ð ð Ð/ñ ô ð ð ð s   ÁA* Á*	A6Á5A6