
    -hhm                        S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r  / SQr
\" \S5      (       a  \
R                  / SQ5        \" \S5      (       a4  \
R                  / S	Q5        \" \S5      (       a  \
R                  S
S/5        \" \S5      (       a  \R                  rO\R                  r " S S5      r " S S\5      r " S S\5      r\" \S5      (       a
   " S S5      r " S S\5      r " S S5      r " S S5      r\" \S5      (       a   " S S\\5      r " S S\\5      r " S S \\5      r " S! S"\\5      r\" \S5      (       aT   " S# S$\5      r " S% S&\5      r " S' S(\\5      r " S) S*\\5      r\" \S5      (       a   " S+ S
\\5      r  " S, S\\5      r! " S- S.5      r" " S/ S0\"5      r# " S1 S2\5      r$ " S3 S4\"5      r%g)5z0.4    N)BufferedIOBase)	monotonic)	
BaseServer	TCPServer	UDPServerThreadingUDPServerThreadingTCPServerBaseRequestHandlerStreamRequestHandlerDatagramRequestHandlerThreadingMixInfork)ForkingUDPServerForkingTCPServerForkingMixInAF_UNIX)UnixStreamServerUnixDatagramServerThreadingUnixStreamServerThreadingUnixDatagramServerForkingUnixStreamServerForkingUnixDatagramServerPollSelectorc                       \ rS rSrSrS rS rSS jrS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrg)r      Nc                 ^    Xl         X l        [        R                  " 5       U l        SU l        g NF)server_addressRequestHandlerClass	threadingEvent_BaseServer__is_shut_down_BaseServer__shutdown_request)selfr   r   s      5/opt/python-3.13.8/usr/lib/python3.13/socketserver.py__init__BaseServer.__init__   s%    ,#6 'oo/"'    c                     g N r$   s    r%   server_activateBaseServer.server_activate        	r(   c                 ,   U R                   R                  5          [        5        nUR                  U [        R
                  5        U R                  (       d]  UR                  U5      nU R                  (       a  O:U(       a  U R                  5         U R                  5         U R                  (       d  M]  S S S 5        SU l        U R                   R                  5         g ! , (       d  f       N0= f! SU l        U R                   R                  5         f = fr   )r"   clear_ServerSelectorregister	selectors
EVENT_READr#   select_handle_request_noblockservice_actionsset)r$   poll_intervalselectorreadys       r%   serve_foreverBaseServer.serve_forever   s     	!!#	&
 !"h!!$	(<(<=11$OOM:E..446((* 111 # ',D###% #" ',D###%s#   
C0 BC5C0 
C-)C0 0#Dc                 F    SU l         U R                  R                  5         g NT)r#   r"   waitr,   s    r%   shutdownBaseServer.shutdown   s     #'  "r(   c                     g r*   r+   r,   s    r%   r8   BaseServer.service_actions  r/   r(   c                    U R                   R                  5       nUc  U R                  nO"U R                  b  [        XR                  5      nUb  [	        5       U-   n[        5        nUR                  U [        R                  5         UR                  U5      (       a  U R                  5       sS S S 5        $ Ub,  W[	        5       -
  nUS:  a  U R                  5       sS S S 5        $ M`  ! , (       d  f       g = f)Nr   )socket
gettimeouttimeoutmintimer2   r3   r4   r5   r6   r7   handle_timeout)r$   rI   deadliner;   s       r%   handle_requestBaseServer.handle_request  s     ++((*?llG\\%'<<0Gv'H (dI$8$89??7++779  *"*TV"3"Q;#'#6#6#8   s   'AC)8%C)'C))
C7c                 F    U R                  5       u  pU R                  X5      (       a   U R                  X5        g U R                  U5        g ! [         a     g f = f! [         a%    U R                  X5        U R                  U5         g   U R                  U5        e = fr*   )get_requestOSErrorverify_requestprocess_request	Exceptionhandle_errorshutdown_requestr$   requestclient_addresss      r%   r7   "BaseServer._handle_request_noblock1  s    	&*&6&6&8#G w77$$W= !!'*  		
  /!!':%%g.%%g.s"   A A 
AA,B B c                     g r*   r+   r,   s    r%   rL   BaseServer.handle_timeoutH  s    
 	r(   c                     gr@   r+   rX   s      r%   rS   BaseServer.verify_requestO  s     r(   c                 H    U R                  X5        U R                  U5        g r*   )finish_requestrW   rX   s      r%   rT   BaseServer.process_requestW  s      	G4g&r(   c                     g r*   r+   r,   s    r%   server_closeBaseServer.server_close`  r/   r(   c                 (    U R                  XU 5        g r*   )r   rX   s      r%   ra   BaseServer.finish_requesth  s      $?r(   c                 &    U R                  U5        g r*   close_requestr$   rY   s     r%   rW   BaseServer.shutdown_requestl      7#r(   c                     g r*   r+   rk   s     r%   rj   BaseServer.close_requestp      r(   c                     [        S[        R                  S9  [        SU[        R                  S9  SS KnUR	                  5         [        S[        R                  S9  g )Nz(----------------------------------------)filez4Exception occurred during processing of request fromr   )printsysstderr	traceback	print_exc)r$   rY   rZ   rv   s       r%   rV   BaseServer.handle_errort  sC     	f3::&D	-f3::&r(   c                     U $ r*   r+   r,   s    r%   	__enter__BaseServer.__enter__  s    r(   c                 $    U R                  5         g r*   )rd   )r$   argss     r%   __exit__BaseServer.__exit__  s    r(   )r   __is_shut_down__shutdown_requestr   )g      ?)__name__
__module____qualname____firstlineno__rI   r&   r-   r=   rB   r8   rN   r7   rL   rS   rT   rd   ra   rW   rj   rV   rz   r~   __static_attributes__r+   r(   r%   r   r      s`    \ G(&:#&9:+.'@$'r(   r   c                       \ rS rSr\R
                  r\R                  rSr	Sr
SrSS jrS rS rS rS rS	 rS
 rS rSrg)r   i     Fc                    [         R                  XU5        [        R                  " U R                  U R                  5      U l        U(       a"   U R                  5         U R                  5         g g !   U R                  5         e = fr*   )r   r&   rG   address_familysocket_typeserver_bindr-   rd   )r$   r   r   bind_and_activates       r%   r&   TCPServer.__init__  so    D2EFmmD$7$7$($4$46  "$$& !!#s    A1 1Bc                 d   U R                   (       aN  [        [        S5      (       a9  U R                  R                  [        R                  [        R
                  S5        U R                  (       a|  [        [        S5      (       ag  U R                  [        R                  [        R                  4;   a9  U R                  R                  [        R                  [        R                  S5        U R                  R                  U R                  5        U R                  R                  5       U l        g )NSO_REUSEADDR   SO_REUSEPORT)allow_reuse_addresshasattrrG   
setsockopt
SOL_SOCKETr   allow_reuse_portr   AF_INETAF_INET6r   bindr   getsocknamer,   s    r%   r   TCPServer.server_bind  s     ##(G(GKK""6#4#4f6I6I1M !!gfn&E&E##'HHKK""6#4#4f6I6I1M,,-"kk557r(   c                 N    U R                   R                  U R                  5        g r*   )rG   listenrequest_queue_sizer,   s    r%   r-   TCPServer.server_activate  s     	4223r(   c                 8    U R                   R                  5         g r*   )rG   closer,   s    r%   rd   TCPServer.server_close  s     	r(   c                 6    U R                   R                  5       $ r*   )rG   filenor,   s    r%   r   TCPServer.fileno       {{!!##r(   c                 6    U R                   R                  5       $ r*   )rG   acceptr,   s    r%   rQ   TCPServer.get_request  r   r(   c                      UR                  [        R                  5        U R	                  U5        g ! [         a     Nf = fr*   )rB   rG   SHUT_WRrR   rj   rk   s     r%   rW   TCPServer.shutdown_request  s?    	 V^^, 	7#  		s   3 
A A c                 $    UR                  5         g r*   )r   rk   s     r%   rj   TCPServer.close_request  s    r(   )r   rG   N)T)r   r   r   r   rG   r   r   SOCK_STREAMr   r   r   r   r&   r   r-   rd   r   rQ   rW   rj   r   r+   r(   r%   r   r     sS    ` ^^N$$K8$4$$$r(   r   c                   P    \ rS rSrSrSr\R                  rSr	S r
S rS rS rSrg	)
r   i  Fi    c                 n    U R                   R                  U R                  5      u  pXR                   4U4$ r*   )rG   recvfrommax_packet_size)r$   dataclient_addrs      r%   rQ   UDPServer.get_request  s1     KK001E1EFkk"K//r(   c                     g r*   r+   r,   s    r%   r-   UDPServer.server_activate   rp   r(   c                 &    U R                  U5        g r*   ri   rk   s     r%   rW   UDPServer.shutdown_request$  rm   r(   c                     g r*   r+   rk   s     r%   rj   UDPServer.close_request(  rp   r(   r+   N)r   r   r   r   r   r   rG   
SOCK_DGRAMr   r   rQ   r-   rW   rj   r   r+   r(   r%   r   r     s4      ##KO0$r(   r   c                   X   ^  \ rS rSrSrSrSrSrSS.S jrS	 r	S
 r
S rU 4S jrSrU =r$ )r   i-  i,  N(   TFblockingc                   U R                   c  g [        U R                   5      U R                  :  aZ   [        R                  " SS5      u  p#U R                   R                  U5        [        U R                   5      U R                  :  a  MZ  U R                   R                  5        HP  n U(       a  SO[        R                  n[        R                  " X$5      u  p#U R                   R                  U5        MR     g ! [         a    U R                   R                  5          N[         a     M  f = f! [         a    U R                   R                  U5         M  [         a     M  f = f)Nr   )active_childrenlenmax_childrenoswaitpiddiscardChildProcessErrorr1   rR   copyWNOHANG)r$   r   pid_flagss        r%   collect_childrenForkingMixIn.collect_children6  s"   ##+ d**+t/@/@@ZZA.FC((005 d**+t/@/@@ ++002
!)ArzzEZZ3FC ((005 3 ) 1((..0  ) 6((005 s0   4C; *AD1;$D.!	D.-D.1%E&	E&%E&c                 $    U R                  5         g r*   r   r,   s    r%   rL   ForkingMixIn.handle_timeoutY      
 !!#r(   c                 $    U R                  5         g r*   r   r,   s    r%   r8   ForkingMixIn.service_actions`  r   r(   c                 R   [         R                  " 5       nU(       aI  U R                  c  [        5       U l        U R                  R	                  U5        U R                  U5        g Sn U R                  X5        Sn U R                  U5        [         R                  " U5        g ! [         a    U R                  X5         NFf = f! [         R                  " U5        f = f!  U R                  U5        [         R                  " U5        f ! [         R                  " U5        f = f= f)Nr   r   )r   r   r   r9   addrj   ra   rU   rV   rW   _exit)r$   rY   rZ   r   statuss        r%   rT   ForkingMixIn.process_requestg  s    '')C''/+.5D($$((-""7+ 	)''@F)--g6( ! ?%%g>? ()--g6((sH   )B% =C %C C! CC! C!D&#D4D&D##D&c                 T   > [         TU ]  5         U R                  U R                  S9  g )Nr   )superrd   r   block_on_closer$   	__class__s    r%   rd   ForkingMixIn.server_close  s%    G "!!4+>+>!?r(   )r   )r   r   r   r   rI   r   r   r   r   rL   r8   rT   rd   r   __classcell__r   s   @r%   r   r   -  s=     /4 !	F	$	$	)2	@ 	@r(   r   c                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )_Threadsi  c                 h   > U R                  5         UR                  (       a  g [        TU ]  U5        g r*   )reapdaemonr   append)r$   threadr   s     r%   r   _Threads.append  s"    		==vr(   c                     / U S S  sU S S & nU$ r*   r+   )r$   results     r%   pop_all_Threads.pop_all  s    d1gQr(   c                 R    U R                  5        H  nUR                  5         M     g r*   )r   joinr$   r   s     r%   r   _Threads.join  s    llnFKKM %r(   c                     S U  5       U S S & g )Nc              3   R   #    U  H  oR                  5       (       d  M  Uv   M     g 7fr*   )is_alive).0r   s     r%   	<genexpr> _Threads.reap.<locals>.<genexpr>  s     Bf0A66s   '	'r+   r,   s    r%   r   _Threads.reap  s    BBQr(   r+   )
r   r   r   r   r   r   r   r   r   r   r   s   @r%   r   r     s    C Cr(   r   c                        \ rS rSrS rS rSrg)
_NoThreadsi  c                     g r*   r+   r   s     r%   r   _NoThreads.append      r(   c                     g r*   r+   r,   s    r%   r   _NoThreads.join  r  r(   r+   N)r   r   r   r   r   r   r   r+   r(   r%   r   r     s    r(   r   c                   J   ^  \ rS rSrSrSr\" 5       rS rS r	U 4S jr
SrU =r$ )r   i  FTc                      U R                  X5        U R                  U5        g ! [         a    U R                  X5         N/f = f! U R                  U5        f = fr*   )ra   rU   rV   rW   rX   s      r%   process_request_thread%ThreadingMixIn.process_request_thread  sU    	+8 !!'*  	7g6	7 !!'*s!   % A A AA Ac                 $   U R                   (       a#  [        U 5      R                  S[        5       5        [        R
                  " U R                  X4S9nU R                  Ul        U R                  R                  U5        UR                  5         g )N_threads)targetr}   )r   vars
setdefaultr   r    Threadr  daemon_threadsr   r	  r   start)r$   rY   rZ   ts       r%   rT   ThreadingMixIn.process_request  sg    J!!*hj9d&A&A%,$=?&&Q		r(   c                 V   > [         TU ]  5         U R                  R                  5         g r*   )r   rd   r	  r   r   s    r%   rd   ThreadingMixIn.server_close  s    r(   r+   )r   r   r   r   r  r   r   r	  r  rT   rd   r   r   r   s   @r%   r   r     s,    
 NN |H+ r(   r   c                       \ rS rSrSrg)r   i  r+   Nr   r   r   r   r   r+   r(   r%   r   r         Tr(   r   c                       \ rS rSrSrg)r   i  r+   Nr  r+   r(   r%   r   r     r  r(   r   c                       \ rS rSrSrg)r   i  r+   Nr  r+   r(   r%   r   r     r  r(   r   c                       \ rS rSrSrg)r	   i  r+   Nr  r+   r(   r%   r	   r	     r  r(   r	   c                   ,    \ rS rSr\R
                  rSrg)r   i  r+   Nr   r   r   r   rG   r   r   r   r+   r(   r%   r   r         r(   r   c                   ,    \ rS rSr\R
                  rSrg)r   i  r+   Nr  r+   r(   r%   r   r     r  r(   r   c                       \ rS rSrSrg)r   i  r+   Nr  r+   r(   r%   r   r         tr(   r   c                       \ rS rSrSrg)r   i  r+   Nr  r+   r(   r%   r   r         4r(   r   c                       \ rS rSrSrg)r   i  r+   Nr  r+   r(   r%   r   r     r  r(   c                       \ rS rSrSrg)r   i  r+   Nr  r+   r(   r%   r   r     r!  r(   c                   ,    \ rS rSrS rS rS rS rSrg)r
   i  c                     Xl         X l        X0l        U R                  5          U R	                  5         U R                  5         g ! U R                  5         f = fr*   )rY   rZ   serversetuphandlefinish)r$   rY   rZ   r&  s       r%   r&   BaseRequestHandler.__init__  s<    ,

	KKMKKMDKKMs   A Ac                     g r*   r+   r,   s    r%   r'  BaseRequestHandler.setup  r  r(   c                     g r*   r+   r,   s    r%   r(  BaseRequestHandler.handle  r  r(   c                     g r*   r+   r,   s    r%   r)  BaseRequestHandler.finish  r  r(   )rZ   rY   r&  N)	r   r   r   r   r&   r'  r(  r)  r   r+   r(   r%   r
   r
     s    $r(   r
   c                   0    \ rS rSrSrSrSrSrS rS r	Sr
g)	r   i  r   r   NFc                     U R                   U l        U R                  b%  U R                  R                  U R                  5        U R                  (       a9  U R                  R                  [        R                  [        R                  S5        U R                  R                  SU R                  5      U l        U R                  S:X  a  [        U R                  5      U l        g U R                  R                  SU R                  5      U l        g )NTrbr   wb)rY   
connectionrI   
settimeoutdisable_nagle_algorithmr   rG   IPPROTO_TCPTCP_NODELAYmakefilerbufsizerfilewbufsize_SocketWriterwfiler,   s    r%   r'  StreamRequestHandler.setup)  s    ,,<<#OO&&t||4''OO&&v'9'9'-'9'94A__--dDMMB
==A&t7DJ11$FDJr(   c                    U R                   R                  (       d   U R                   R                  5         U R                   R                  5         U R                  R                  5         g ! [        R                   a     NKf = fr*   )r?  closedflushrG   errorr   r<  r,   s    r%   r)  StreamRequestHandler.finish6  s`    zz  

  "
 	



 <<  s   A, ,BB)r5  r<  r?  )r   r   r   r   r;  r=  rI   r7  r'  r)  r   r+   r(   r%   r   r     s(     HH G $G	r(   r   c                   ,    \ rS rSrS rS rS rS rSrg)r>  iA  c                     Xl         g r*   _sock)r$   socks     r%   r&   _SocketWriter.__init__F  s    
r(   c                     gr@   r+   r,   s    r%   writable_SocketWriter.writableI  s    r(   c                     U R                   R                  U5        [        U5       nUR                  sS S S 5        $ ! , (       d  f       g = fr*   )rI  sendall
memoryviewnbytes)r$   bviews      r%   write_SocketWriter.writeL  s.    

1]d;; ]]s	   =
Ac                 6    U R                   R                  5       $ r*   )rI  r   r,   s    r%   r   _SocketWriter.filenoQ  s    zz  ""r(   rH  N)	r   r   r   r   r&   rM  rU  r   r   r+   r(   r%   r>  r>  A  s    

#r(   r>  c                        \ rS rSrS rS rSrg)r   iT  c                     SSK Jn  U R                  u  U l        U l        U" U R                  5      U l        U" 5       U l        g )Nr   )BytesIO)ior[  rY   packetrG   r<  r?  )r$   r[  s     r%   r'  DatagramRequestHandler.setupX  s0    #'<< T[T[[)
Y
r(   c                     U R                   R                  U R                  R                  5       U R                  5        g r*   )rG   sendtor?  getvaluerZ   r,   s    r%   r)  DatagramRequestHandler.finish^  s)    4::..0$2E2EFr(   )r]  r<  rG   r?  N)r   r   r   r   r'  r)  r   r+   r(   r%   r   r   T  s    Gr(   r   )&__version__rG   r4   r   rt   r    r\  r   rK   r   __all__r   extendr   r2   SelectSelectorr   r   r   r   listr   r   r   r   r   r   r	   r   r   r   r   r   r   r
   r   r>  r   r+   r(   r%   <module>rh     s  v    	 
   "7 2vNNJK
69NN 3 4 r613NOP 9n%%,,O..Oj jZE
 EP	 8 2vU@ U@pCt C, % %P 2v9<99<9 9 9 9 9
69(9 ((Y ( LN4DKOn6HOr6Kl4DKO6HO# #\+- +Z#N #&G/ Gr(   