
    TfJ                        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
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Z	 d dlmZ n# eef$ r d dlZY nw xY wd dlmZ d dlmZ d dlZ ee
dd          Z  e!d"                                          Z#	 d dl$m$Z$ d Z%n# e$ r d	 Z%Y nw xY wd
 Z&	 	 d4dZ'ej(        j)        ej(        j*        fZ+d Z,d Z-d5dZ.d Z/ej0        1                    d          rd5dZ2d Z3ne
j4        Z3d Z4d Z5d6dZ6d Z7d Z8d Z9	 d dl
m:Z: n# e$ r d Z:Y nw xY wd Z;d5d Z<d5d!Z=d" Z>d# Z?d$ Z@d% ZAd7d&ZBd' ZCd5d(ZDd) ZEd* ZFd8d,ZGd- ZHd. ZId/ ZJd0 ZKd7d1ZLd2 ZMd3 ZNdS )9    N)AppImportError)SUPPORTED_WORKERSdevnullz	/dev/nullz
    connection keep-alive proxy-authenticate proxy-authorization
    te trailers transfer-encoding upgrade
    server date
    setproctitlec                 *    t          d| z             d S )Nzgunicorn: %sr   titles    ?/var/www/html/env/lib/python3.11/site-packages/gunicorn/util.py_setproctitler   5   s    ^e+,,,,,    c                     d S N r	   s    r   r   r   8   s    r   c                     t          j        |           }fd|j        D             }|st          dfd          |d                                         S )Nc                 @    g | ]}|j         k    |j        k    |S r   )groupname).0epr   r   s     r   
<listcomp>z$load_entry_point.<locals>.<listcomp>>   s7     5 5 5"h%BGtOO $3OOr   zEntry point z
 not foundr   )importlib_metadatadistributionentry_pointsImportErrorload)r   r   r   dist_objepss    ``  r   load_entry_pointr   <   sy    !.|<<H5 5 5 5 5- 5 5 5C IkGHHHq6;;==r    gunicorn.workers.sync.SyncWorkergunicorn.workersc                    t          j        |           r| S |                     d          r|                     d          d         }	 |                    dd          \  }}n# t
          $ r |}|}Y nw xY w	 t          |||          S # t          $ r* t          j	                    }d}t          || |fz            w xY w|                     d          }t          |          dk    r	 |                     d          r
| dd          } | t          v r!t          |                              d          }nI	 t          d||           S # t          $ r* t          j	                    }d}t          || |fz            w xY w|                    d          }		 t          j        d                    |                    }
n7# t          $ r* t          j	                    }d}t          || |fz            w xY wt#          |
|	          S )	Nzegg:   #z)class uri %r invalid or not found: 

[%s].Tgunicorn)inspectisclass
startswithsplitrsplit
ValueErrorr   	Exception	traceback
format_excRuntimeErrorlenr   pop	importlibimport_modulejoingetattr)uridefaultsection	entry_strdistr   excmsg
componentsklassmods              r   
load_classrB   E   sI   s 

~~f +#IIf%%a(		"))#q11JD$$ 	 	 	DDDD		1#D'4888 	1 	1 	1&((C?Csc3Z/000	1
 YYs^^
z??a9>>#&& "abb'C+++!23!7!=!=c!B!BJ9+"GS   ! 9 9 9#.00CGC&sc3Z'78889
 r""	1)#((:*>*>??CC 	1 	1 	1&((C?Csc3Z/000	1 sE"""s6   A" "A32A37B 4B<2E 4E7'F8 84G,c                     t          j        |           }d}|j                                        D ]}|j        t
          v r|dz  }|S )Nr   r#   )r(   	signature
parametersvalueskindpositionals)fsigarityparams       r   	get_arityrM   }   sP    

A

CE&&((  :$$QJELr   c                 4    t          j        |           j        S )z get the username for a user id)pwdgetpwuidpw_name)uids    r   get_usernamerS      s    <$$r   Fc                 `   |rz| r#	 t          |           }n# t          $ r d}Y nw xY wt          |          dz  }|rt          j        ||           n+|t          j                    k    rt          j        |           | r-| t          j                    k    rt          j        |            dS dS dS )z) set user and group of workers processes FiN)	rS   KeyErrorabsos
initgroupsgetgidsetgidgetuidsetuid)rR   gidrX   usernames       r   set_owner_processr_      s       	##',, # # #"


#
 #hh# 	M(C((((BIKKIcNNN
 sbikk!!
	# !!s    %%c                 2    t          j        | ||           d S r   )rW   chown)pathrR   r]   s      r   ra   ra      s    HT3r   winc                 <    | |           |r|}n&t           j                            |          \  }}|pd}d}|dk     r>t          j        |          }|r|sn||v rd S t	          j        |           |dz  }|dk     >t          j        d|z   t          d           d S )Nr%   gMbP?g      ?   z)tests may fail, delete still pending for    )
stacklevel)	rW   rb   r+   listdirtimesleepwarningswarnRuntimeWarning)funcpathnamewaitalldirnamer   timeoutLs          r   _waitforrt      s    X 	%GGGMM(33MGTnG mm 
7##A 1  TQYYJwqLG mm 	AHL$	4 	4 	4 	4 	4 	4r   c                 :    t          t          j        |            d S r   )rt   rW   unlink)filenames    r   _unlinkrx      s    H%%%%%r   c                     	 t          |            d S # t          $ r+}|j        t          j        t          j        fvr Y d }~d S d }~ww xY wr   )rx   OSErrorerrnoENOENTENOTDIR)rw   errors     r   rv   rv      sg       ;u|U];;; <;;;;;s    
A AAc                     	 t          j        t           j        |            n"# t           j        $ r Y dS t          $ r Y dS w xY wdS )NFT)socket	inet_ptonAF_INET6r~   r-   )addrs    r   is_ipv6r      sa    $////<   uu   uu4s   " A	A A8000c                    t          j        d|           rt          j        d|           d         S |                     d          r;| dd          }	 t	          |          S # t
          $ r t          d|z            d w xY w|                     d          r|                     d          d         } | |}}d| v rGd	| v rC|                     d	          d
         dd          }|                     d          |gz   d         }n3d| v r%|                     d          |gz   d d         \  }}n
| dk    rd|}}	 t	          |          }n # t
          $ r t          d|z            w xY w|                                |fS )Nz
unix:(//)?r'   zfd://   z"%r is not a valid file descriptor.ztcp://r#   []r   z]::re    z0.0.0.0z%r is not a valid port number.)rematchr+   r*   intr-   r1   lower)netlocdefault_portfdhostports        r   parse_addressr      s   	xv&& 3xv..r22!! TABBZ	Tr77N 	T 	T 	TCbHIItS	T "" +h''*$D
f}}||C  #ABB'T""l^3Q7	ll3''<.8"1"=
dd	2dD4yy D D D;dBCCCD ::<<s   A   A>4E E!c                     t          j         | t           j                  }|t           j        z  }t          j         | t           j        |           d S r   )fcntlF_GETFD
FD_CLOEXECF_SETFDr   flagss     r   close_on_execr     s>    KEM**E	UE	KEM5)))))r   c                     t          j         | t           j                  t          j        z  }t          j         | t           j        |           d S r   )r   F_GETFLrW   
O_NONBLOCKF_SETFLr   s     r   set_non_blockingr     s8    KEM**R]:E	KEM5)))))r   c                 \    	 |                                   d S # t          j        $ r Y d S w xY wr   )closer   r~   )socks    r   r   r     s<    

<   s    ++)
closerangec                 v    t          | |          D ]'}	 t          j        |           # t          $ r Y $w xY wd S r   )rangerW   r   rz   )fd_lowfd_highr   s      r   r   r     sY    (( 	 	B   	 	s   )
66c                     t          |t                    r|                    d          }dt          |          z  }d                    |                    d          |dg          }|                     |           d S )Nzutf-8z%X
r   s   
)
isinstancestrencoder2   r6   sendall)r   data
chunk_sizechunks       r   write_chunkr      ss    $ ${{7##CII%JHHj''00$@AAELLr   c                 T    |rt          | |          S |                     |           d S r   )r   r   )r   r   chunkeds      r   writer   (  s2     '4&&&LLr   c                    |                                  }|dk    rV	 |                     d           t          | ||          |                     d           S # |                     d           w xY wt          | ||          S )Ng        r   r#   )
gettimeoutsetblockingr   )r   r   r   rr   s       r   write_nonblockr   .  s    ooG#~~	 QtW--QDQT4)))s   %A A.c                    t          j        d          |t          j        |          dz  }t          j        d          t	          |          |t          |          |fz  }t          | |                    d                     d S )Nz    <html>
      <head>
        <title>%(reason)s</title>
      </head>
      <body>
        <h1><p>%(reason)s</p></h1>
        %(mesg)s
      </body>
    </html>
    )reasonmesgzl    HTTP/1.1 %s %s
    Connection: close
    Content-Type: text/html
    Content-Length: %d
    
    %slatin1)textwrapdedenthtmlescaper   r2   r   r   )r   
status_intr   r   
html_errorhttps         r   write_errorr   :  s     
" 
	 
	 dk$&7&788
9J ? 
   *oovs:
CDD 4X../////r   c                     t          j                    d         }	 | |j        j        | j        u r	 ~dS |j        }| 	 ~dS # ~w xY w)zCheck whether calling a function raised a ``TypeError`` because
    the call failed or because something in the function raised the
    error.

    :param f: The function that was called.
    :return: ``True`` if the call failed.
    re   NFT)sysexc_infotb_framef_code__code__tb_next)rI   tbs     r   _called_with_wrong_argsr   Q  se     
	Bn{!QZ// BB B n  BBBs   A 	A Ac           	         |                      dd          }t          |          dk    rd}n|d         |d         }} 	 t          j        |           }ns# t          $ rf |                     d          rOt          j                            |           r0d}t	          || 	                    dd          d         |fz             w xY w	 t          j        |d	          j        }n # t          $ r t          d
|z            w xY wt          |t          j                  r|j        }d x}}nt          |t          j                  rt          |j        t          j                  st          d|z            |j        j        }	 d |j        D             }d |j        D             }n2# t,          $ r t          d|z            w xY wt          d
|z            t.          j        j        t.          j        k    }		 t7          ||          }
nE# t8          $ r8 |	rt;          j        t?          j                       t          d|d| d          w xY w|x	  |
|i |}
nn# tB          $ ra}tE          |
          rLt          d#                    t;          j$        tB          |                    %                                           d }~ww xY w|
t          d|z            tM          |
          st          d          |
S )Nr   r#   applicationr   z.pyz1Failed to find application, did you mean '%s:%s'?r%   eval)modez9Failed to parse %r as an attribute name or function call.z,Function reference must be a simple name: %rc                 6    g | ]}t          j        |          S r   )astliteral_eval)r   args     r   r   zimport_app.<locals>.<listcomp>  s#    EEEcC$S))EEEr   c                 L    i | ]!}|j         t          j        |j                  "S r   )r   r   r   value)r   kws     r   
<dictcomp>zimport_app.<locals>.<dictcomp>  s)    WWWRbfc.rx88WWWr   z/Failed to parse arguments as literal values: %rzFailed to find attribute z in r   z%Failed to find application object: %rz$Application object must be callable.)'r+   r2   r4   r5   r   endswithrW   rb   existsr,   r   parsebodySyntaxErrorr   r   NameidCallrn   argskeywordsr-   loggingrootlevelDEBUGr7   AttributeErrorr/   print_exceptionr   r   	TypeErrorr   r6   format_exception_onlystripcallable)modulepartsobjrA   r>   
expressionr   r   kwargsis_debugappes               r   
import_appr   k  sj   LLa  E
5zzQAha%f--   ??5!! 	EbgnnV&<&< 	EECcV]]3%:%:1%=s$CCDDD	
Ys0005

 
 
 
G#M
 
 	


 *ch'' 
}vv	J	)	) 
*/3844 	W !ORU!UVVV!	EEZ_EEEDWW:CVWWWFF 	 	 	 !ACG  	 G#M
 
 	
 |!W]2HTc4   T T T 	7%s|~~66nTTT666RSSST 	#t&v&&CC 	 	 	 's++ $GGI;IqIIJJPPRR   	 {DsJKKKC== ECDDDJsJ   A A0CC# #D "F$ $G6H AI	I 
K"AJ>>Kc                  n   	 t          j        t           j        d                   } t          j        t          j                              }| j        |j        k    r#| j        |j        k    rt           j        d         }nt          j                    }n## t          $ r t          j                    }Y nw xY w|S )NPWD)rW   statenvirongetcwdst_inost_devr.   )abcwds      r   r   r     s    GBJu%&&GBIKK  8qxAH$8$8*U#CC)++C   ikkJs   BB B21B2c                 t    | t          j                     } t          j                            | dd          }|S )z@Return the current date and time formatted for a message header.NFT)	localtimeusegmt)ri   emailutils
formatdate)	timestampss     r   	http_dater    s4    IKK	yE$GGAHr   c                 \    |                                                                  t          v S r   )r   r   hop_headers)headers    r   
is_hoppishr    s!    <<>>!![00r   c                 @   dt           j        vrt          j                    rt          j        d           t          j                     t          j                    rt          j        d           t          j        d           | st          dd           t          j        t          t           j	                  t          j
        d           dk    rt          j        d           t          j        d           t          j        d           d	S t          j        t          t           j	                  dk    r)t          j        d           t          j        d           fd} |t          j        d            |t          j        d           d	S d	S )
zo    Standard daemonization of a process.
    http://www.faqs.org/faqs/unix-faq/programmer/faq/ section 1.7
    GUNICORN_FDr         Tr#   re   c                     	 |                                  }||k    r?|                                 r-t          j        |           t          j        |           d S d S d S # t
          $ r Y d S w xY wr   )filenoisattyrW   r   dup2r   )stream	fd_expectr   fd_nulls      r   redirectzdaemonize.<locals>.redirect!  s~    BY6==??,,,,, ' &   DDs   AA   
A.-A.N)rW   r   fork_exitsetsidumaskr   openREDIRECT_TOO_RDWRset_inheritabler  r   r   stdoutstderr)enable_stdio_inheritancer  r  s     @r   	daemonizer'    sz   
 BJ&&799 	HQKKK
	799 	HQKKK
 ( >	$
 q!gk2955Gw--- !||###GGQGGQ gk2955G
 !||###4     HSZ###HSZ#####] '&r   c                      	 t          j        t          j        d                     d S # t          $ r? t          j        t          j                    dt          j                               Y d S w xY w)N@   r%   )randomseedrW   urandomNotImplementedErrorri   getpidr   r   r   r+  r+  .  sp    :BJrNN##### : : :ty{{{{BIKKK8999999:s   &* AA32A3c                     	 t          | d          5 }|                                 d d d            d S # 1 swxY w Y   d S # t          $ r}t          d| d|d          d }~ww xY w)Nr   zError: 'z' isn't writable [r   )r   r   IOErrorr1   )rb   rI   r   s      r   check_is_writabler1  5  s    J$__ 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 J J JlaaaHIIIJs2   A 4A 8A 8A 
A&A!!A&utf8c                     t          | t                    r| S t          | t                    st          d| z            |                     |          S )z+Converts a string argument to a byte stringz%r is not a string)r   bytesr   r   r   )r   encodings     r   to_bytestringr6  =  sQ    % eS!! 6,u4555<<!!!r   c                     t          | d          sdS 	 |                                  n## t          t          t          j        f$ r Y dS w xY wdS )Nr  FT)hasattrr  r   r0  ioUnsupportedOperation)r   s    r   
has_filenor;  G  s`    3!! u

GR%<=   uu 4s   ) A	A	c                 R   t          dt          j                   |                                 }t	          |          D ].\  }}|dk    rd|z  }t          d|z  t          j                   /t          dt          j                   t          j                                         d S )Nz!!!)filer   zWARNING: %sz!!! %sz!!!
)printr   r%  
splitlines	enumerateflush)r>   linesilines       r   rl   rl   T  s    	%cj!!!!NNEU## 0 0466 4'DhoCJ/////	'
####Jr   c                 0     t                       fd}|S )Nc           
      ^     |dddt          t                              fg           gS )Nz500 Internal Server Error)zContent-Typez
text/plainzContent-Length)r   r2   )r   start_responser>   s     r   r   zmake_fail_app.<locals>.appd  s?    2*s3s88}}-5
 	 	 	 ur   )r6  )r>   r   s   ` r   make_fail_apprH  a  s0    


C     Jr   c                     |                      d          rEt          j                            d| z             }|                    |j        dd                    S t          j                            |           S )Nz//r%   r#   )rb   )r*   urllibr   urlsplit_replacerb   )r8   r   s     r   split_request_urirM  n  se    
~~d 3
 %%cCi00~~5:abb>~222<  %%%r   c                 n    	 |
 |             }|j         |ur|                    |          |# d }d }w xY wr   )__traceback__with_traceback)tpr   r   s      r   reraiserR  {  sQ    =BDDEb((&&r***				s   ,. 4c                 P    t          | t                    r| S t          | d          S )Nr   )r   r   )r  s    r   bytes_to_strrT    s)    !S q(r   c                 f    t           j                            |                               d          S )Nzlatin-1)rJ  r   unquote_to_bytesdecode)strings    r   unquote_to_wsgi_strrY    s&    <((0077	BBBr   )r    r!   )F)r   r   )r2  )Or   email.utilsr  r{   r   r   r4   r(   r9  r   rW   rO   r*  r   r   r   r   ri   r/   rk   importlib.metadatametadatar   ModuleNotFoundErrorr   gunicorn.errorsr   gunicorn.workersr   urllib.parserJ  r7   r!  setr+   r  r   r   r   rB   	ParameterPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDrH   rM   rS   r_   ra   platformr*   rt   rx   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r'  r+  r1  r6  r;  rl   rH  rM  rR  rT  rY  r   r   r   <module>rf     s  
 


             				  				 



  				  



       3333333[)    + * * * * * . . . . . .    gb)[11 c  		 ))))))- - - -       
   ?)/# /# /# /#f %+  % % %
   .   <5!! %4 4 4 4B& & & & iG       >* * ** * *
  	            	* 	* 	* 	*0 0 0.  4P P Pf     1 1 1S$ S$ S$ S$l: : :J J J" " " "
 
 

 
 

 
 
	& 	& 	&	 	 	 	  C C C C Cs6   A A#"A#!	B+ +B65B6$D+ +D65D6