
    .hh֏                     P   S SK JrJrJrJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKr S SKrS'S jrS r " S	 S
5      r " S S\5      r " S S\R4                  \5      r " S S\5      r " S S\5      r " S S\R<                  5      r " S S5      r  " S S\5      r! " S S\\ 5      r" " S S\\ 5      r#\$S:X  a  S SK%r% " S S5      r&\" S 5       r'\'RQ                  \)5        \'RQ                  S! S"5        \'RU                  \&" 5       SS#9  \'RW                  5         \," S$5        \," S%5         \'R[                  5         SSS5        gg! \ a    Sr GN'f = f! \. a    \," S&5        \R^                  " S 5         N;f = f! , (       d  f       g= f)(    )Faultdumpsloadsgzip_encodegzip_decode)BaseHTTPRequestHandler)partial)	signatureNTc                     U(       a  UR                  S5      nOU/nU H2  nUR                  S5      (       a  [        SU-  5      e[        X5      n M4     U $ )N._z(attempt to access private attribute "%s")split
startswithAttributeErrorgetattr)objattrallow_dotted_namesattrsis        6/opt/python-3.13.8/usr/lib/python3.13/xmlrpc/server.pyresolve_dotted_attributer   |   s[     

3<< :Q>  #.C  J    c           	          [        U 5       Vs/ s H8  nUR                  S5      (       a  M  [        [        X5      5      (       d  M6  UPM:     sn$ s  snf )Nr   )dirr   callabler   )r   members     r   list_public_methodsr      sK     "%S 4v((- WS12  4 4 4s   AAAc                   j    \ rS rSr  SS jrSS jrSS jrS rS rSS jr	S	 r
S
 rS rS rS rSrg)SimpleXMLRPCDispatcher   Nc                 X    0 U l         S U l        Xl        U=(       d    SU l        X0l        g Nutf-8)funcsinstance
allow_noneencodinguse_builtin_typesselfr'   r(   r)   s       r   __init__SimpleXMLRPCDispatcher.__init__   s'    
$ +G!2r   c                     Xl         X l        g N)r&   r   )r+   r&   r   s      r   register_instance(SimpleXMLRPCDispatcher.register_instance   s    B !"4r   c                 n    Uc  [        U R                  US9$ Uc  UR                  nXR                  U'   U$ )N)name)r	   register_function__name__r%   )r+   functionr3   s      r   r4   (SimpleXMLRPCDispatcher.register_function   s>     411==<$$D#

4r   c                 ~    U R                   R                  U R                  U R                  U R                  S.5        g )N)zsystem.listMethodszsystem.methodSignaturezsystem.methodHelp)r%   updatesystem_listMethodssystem_methodSignaturesystem_methodHelpr+   s    r    register_introspection_functions7SimpleXMLRPCDispatcher.register_introspection_functions   s7     	

$2I2I151L1L,0,B,BD 	Er   c                 R    U R                   R                  SU R                  05        g )Nzsystem.multicall)r%   r9   system_multicallr=   s    r   register_multicall_functions3SimpleXMLRPCDispatcher.register_multicall_functions   s"     	

-0E0EFGr   c           	          [        XR                  S9u  pEUb	  U" XT5      nOU R                  XT5      nU4n[        USU R                  U R
                  S9nUR                  U R
                  S5      $ ! [         a(  n[        XpR                  U R
                  S9n S nANIS nAf[         aC  n[        [        S[        U5      < SU< 35      U R
                  U R                  S9n S nANS nAff = f)N)r)      )methodresponser'   r(   )r'   r(   :r(   r'   xmlcharrefreplace)
r   r)   	_dispatchr   r'   r(   r   BaseExceptiontypeencode)	r+   datadispatch_methodpathparamsmethodresponsefaultexcs	            r   _marshaled_dispatch*SimpleXMLRPCDispatcher._marshaled_dispatch   s    	"4;Q;QRNF **6:>>&9 {HXa(,$--QH t}}.ABB  	5U&*mm5H 	aDIs344??H	s$   AA3 3
C0=B  C0-9C++C0c                 t   [        U R                  R                  5       5      nU R                  b~  [	        U R                  S5      (       a'  U[        U R                  R                  5       5      -  nO<[	        U R                  S5      (       d!  U[        [        U R                  5      5      -  n[        U5      $ )N_listMethodsrJ   )setr%   keysr&   hasattrrY   r   sorted)r+   methodss     r   r:   )SimpleXMLRPCDispatcher.system_listMethods  s    
 djjoo'(==$ t}}n553t}}99;<< T]]K88324==ABBgr   c                     g)Nzsignatures not supported )r+   method_names     r   r;   -SimpleXMLRPCDispatcher.system_methodSignature)  s     *r   c                    S nXR                   ;   a  U R                   U   nOU R                  bs  [        U R                  S5      (       a  U R                  R                  U5      $ [        U R                  S5      (       d"   [	        U R                  UU R
                  5      nUc  g[        R                  " U5      $ ! [         a     N&f = f)N_methodHelprJ    )	r%   r&   r\   re   r   r   r   pydocgetdoc)r+   rb   rR   s      r   r<   (SimpleXMLRPCDispatcher.system_methodHelp6  s    
 **$ZZ,F]]&t}}m44}}00== T]]K885 $ + $ 7 7"F ><<'' & s   !B< <
C	C	c                 b   / nU H/  nUS   nUS   n UR                  U R                  XE5      /5        M1     U$ ! [         a3  nUR                  UR                  UR                  S.5         S nAMm  S nAf[
         a/  nUR                  S[        U5      < SU< 3S.5         S nAM  S nAff = f)N
methodNamerQ   )	faultCodefaultStringrE   rG   )appendrJ   r   rl   rm   rK   rL   )r+   	call_listresultscallrb   rQ   rT   rU   s           r   rA   'SimpleXMLRPCDispatcher.system_multicallU  s     D|,K(^F { CDE $   #(??%*%6%68  ! #$04S	3%?A s!   !:
B.(A22B.?$B))B.c                     U R                   U   nUb  U" U6 $ [        SU-  5      e! [         a     Of = fU R                  bq  [	        U R                  S5      (       a  U R                  R                  X5      $  [        U R                  UU R                  5      nUb  U" U6 $ O! [         a     Of = f[        SU-  5      e)Nzmethod "%s" is not supportedrJ   )	r%   	ExceptionKeyErrorr&   r\   rJ   r   r   r   )r+   rR   rQ   funcs       r   rJ    SimpleXMLRPCDispatcher._dispatcht  s    *	E::f%D V}$:VCDD  		 ==$t}}k22}}..v>>
)/MM++ #=( $ "  6?@@s   ' 
44;!B% %
B21B2)r   r'   r(   r%   r&   r)   FNF)FNN)r5   
__module____qualname____firstlineno__r,   r0   r4   r>   rB   rV   r:   r;   r<   rA   rJ   __static_attributes__ra   r   r   r    r       sG     37#(3"5H 	EH!CF$*(>>1Ar   r    c                       \ rS rSrSrSrSrSr\R                  " S\R                  \R                  -  5      rS rS rS	 rS
 rS rSS jrSrg)SimpleXMLRPCRequestHandleri  )/z/RPC2
/pydoc.cssix  Tz
                            \s* ([^\s;]+) \s*            #content-coding
                            (;\s* q \s*=\s* ([0-9\.]+))? #q
                            c                 *   0 nU R                   R                  SS5      nUR                  S5       H_  nU R                  R	                  U5      nU(       d  M'  UR                  S5      nU(       a  [        U5      OSnXQUR                  S5      '   Ma     U$ )NzAccept-Encodingrf   ,   g      ?rE   )headersgetr   	aepatternmatchgroupfloat)r+   raeer   vs         r   accept_encodings+SimpleXMLRPCRequestHandler.accept_encodings  sz    \\/4#ANN((+EuKKN !E!Hs$%%++a.!  r   c                 X    U R                   (       a  U R                  U R                   ;   $ g)NT)	rpc_pathsrP   r=   s    r   is_rpc_path_valid,SimpleXMLRPCRequestHandler.is_rpc_path_valid  s!    >>99.. r   c                    U R                  5       (       d  U R                  5         g  Sn[        U R                  S   5      n/ nU(       aY  [	        X!5      nU R
                  R                  U5      nU(       d  O+UR                  U5        U[        US   5      -  nU(       a  MY  SR                  U5      nU R                  U5      nUc  g U R                  R                  U[        U SS 5      U R                  5      nU R                  S5        U R!                  SS5        U R"                  b^  [        U5      U R"                  :  aE  U R%                  5       R'                  S	S
5      nU(       a   [)        U5      nU R!                  SS	5        U R!                  S[-        [        U5      5      5        U R/                  5         U R0                  R3                  U5        g ! [*         a     N\f = f! [4         a  n	U R                  S5        [7        U R                  S5      (       ay  U R                  R8                  (       a^  U R!                  S[-        U	5      5        [:        R<                  " 5       n
[-        U
R?                  SS5      S5      n
U R!                  SU
5        U R!                  SS5        U R/                  5          S n	A	g S n	A	ff = f)Ni   zcontent-lengthr   r   rJ      Content-typeztext/xmlgzipr   zContent-EncodingContent-lengthi  _send_traceback_headerzX-exceptionASCIIbackslashreplacezX-traceback0) r   
report_404intr   minrfilereadrn   lenjoindecode_request_contentserverrV   r   rP   send_responsesend_headerencode_thresholdr   r   r   NotImplementedErrorstrend_headerswfilewritert   r\   r   	traceback
format_excrM   )r+   max_chunk_sizesize_remainingL
chunk_sizechunkrN   rS   qr   traces              r   do_POST"SimpleXMLRPCRequestHandler.do_POST  sS    %%''OO9	'
 *N .>!?@NA  @



3#ae*, !. 88A;D..t4D| {{66'$T:DIIH$ s#^Z8$$0x=4#8#88--/33FA>A!'28'<H ,,-?H -s3x=/ABJJX&	  3 ! !1  	s# t{{$<==KK66  A7!,,.ELL2DEwO  6-s3	s7   A:G* $%G* 
2G* -G 
G'&G'*
K4CK  Kc                 ~   U R                   R                  SS5      R                  5       nUS:X  a  U$ US:X  a   [        U5      $ U R                  SSU-  5        U R                  SS	5        U R                  5         g ! [         a    U R                  SSU-  5         ND[         a    U R                  SS5         Naf = f)
Nzcontent-encodingidentityr   i  zencoding %r not supported  zerror decoding gzip contentr   r   )	r   r   lowerr   r   r   
ValueErrorr   r   )r+   rN   r(   s      r   r   1SimpleXMLRPCRequestHandler.decode_request_content  s    <<##$6
CIIKz!KvG"4(( s$?($JK)3/ ' P""3(Ch(NO G""3(EFGs   
A= =B<B<;B<c                     U R                  S5        SnU R                  SS5        U R                  S[        [        U5      5      5        U R	                  5         U R
                  R                  U5        g )Ni  s   No such pager   z
text/plainr   )r   r   r   r   r   r   r   r+   rS   s     r   r   %SimpleXMLRPCRequestHandler.report_404*  s]    3"6)3s8}+=>

"r   c                 j    U R                   R                  (       a  [        R                  " XU5        g g r/   )r   logRequestsr   log_request)r+   codesizes      r   r   &SimpleXMLRPCRequestHandler.log_request3  s&     ;;"""..t4@ #r   ra   N)-r   )r5   rz   r{   r|   r   r   wbufsizedisable_nagle_algorithmrecompileVERBOSE
IGNORECASEr   r   r   r   r   r   r   r}   ra   r   r   r   r     sf     -I  H" 

   "$bmm!;=I
	E'N"#Ar   r   c                   2    \ rS rSrSrSr\SSSSS4S jrSrg)SimpleXMLRPCServeri9  TFNc                 |    X0l         [        R                  XXW5        [        R                  R                  XX&5        g r/   )r   r    r,   socketserver	TCPServerr+   addrrequestHandlerr   r'   r(   bind_and_activater)   s           r   r,   SimpleXMLRPCServer.__init__L  s0     '''(V''NVr   )r   )	r5   rz   r{   r|   allow_reuse_addressr   r   r,   r}   ra   r   r   r   r   9  s'      #,F!ed#'5Wr   r   c                   @    \ rS rSr\SSSSS4S jrS rS rS
S jrS	r	g)MultiPathXMLRPCServeriU  TFNc           
      p    [         R                  XX#UXVU5        0 U l        X@l        U=(       d    SU l        g r#   )r   r,   dispatchersr'   r(   r   s           r   r,   MultiPathXMLRPCServer.__init__]  s8     	##DZ$,AR	T$ +Gr   c                 "    X R                   U'   U$ r/   r   )r+   rP   
dispatchers      r   add_dispatcher$MultiPathXMLRPCServer.add_dispatcherg  s    !+r   c                      U R                   U   $ r/   r   )r+   rP   s     r   get_dispatcher$MultiPathXMLRPCServer.get_dispatcherk  s    %%r   c           	           U R                   U   R                  XU5      nU$ ! [         a`  n[        [	        S[        U5      < SU< 35      U R                  U R                  S9nUR                  U R                  S5      n S nAU$ S nAff = f)NrE   rG   rH   rI   )	r   rV   rK   r   r   rL   r(   r'   rM   )r+   rN   rO   rP   rS   rU   s         r   rV   )MultiPathXMLRPCServer._marshaled_dispatchn  s    
	K''-AAd,H   	K aDIs344??DH  t}}6IJH	Ks   # 
BABB)r'   r   r(   ry   )
r5   rz   r{   r|   r   r,   r   r   rV   r}   ra   r   r   r   r   U  s(     -G!ed#'5,&r   r   c                   4    \ rS rSrSS jrS rS rS	S jrSrg)
CGIXMLRPCRequestHandleri|  Nc                 0    [         R                  XX#5        g r/   )r    r,   r*   s       r   r,    CGIXMLRPCRequestHandler.__init__  s    ''(Vr   c                 \   U R                  U5      n[        S5        [        S[        U5      -  5        [        5         [        R                  R                  5         [        R                  R                  R                  U5        [        R                  R                  R                  5         g )NzContent-Type: text/xmlContent-Length: %d)rV   printr   sysstdoutflushbufferr   )r+   request_textrS   s      r   handle_xmlrpc%CGIXMLRPCRequestHandler.handle_xmlrpc  sr     ++L9&'"S]23



)

!r   c                     Sn[         R                  U   u  p#[        R                  R                  UUUS.-  nUR                  S5      n[        SX4-  5        [        S[        R                  R                  -  5        [        S[        U5      -  5        [        5         [        R                  R                  5         [        R                  R                  R                  U5        [        R                  R                  R                  5         g )Nr   )r   messageexplainr$   zStatus: %d %szContent-Type: %sr   )r   	responseshttpr   DEFAULT_ERROR_MESSAGErM   r   DEFAULT_ERROR_CONTENT_TYPEr   r   r   r   r   r   )r+   r   r   r   rS   s        r   
handle_get"CGIXMLRPCRequestHandler.handle_get  s     1;;DA;;44   ??7+o/0 4;;#I#IIJ"S]23



)

!r   c                 ^   Uc5  [         R                  R                  SS 5      S:X  a  U R                  5         g  [	        [         R                  R                  SS 5      5      nUc  [        R                  R                  U5      nU R                  U5        g ! [
        [        4 a    Sn NHf = f)NREQUEST_METHODGETCONTENT_LENGTHr   )osenvironr   r   r   r   	TypeErrorr   stdinr   r   )r+   r   lengths      r   handle_request&CGIXMLRPCRequestHandler.handle_request  s     JJNN+T2e;OORZZ^^,<dCD #"yy~~f5|, 	* s   )B B,+B,ra   rx   r/   )	r5   rz   r{   r|   r,   r   r   r  r}   ra   r   r   r   r   |  s    W
""2-r   r   c                   F    \ rS rSrS0 0 0 4S jrS0 0 0 S4S jrS rS rSrg)ServerHTMLDoci  Nc                    U=(       d    U R                   n/ nSn[        R                  " S5      nUR                  X5      =n	(       Gan  U	R	                  5       u  pUR                  U" XU
 5      5        U	R                  5       u  ppnnU(       a3  U" U5      R                  SS5      nUR                  SU< SU< S35        OU(       a/  S[        U5      -  nUR                  SU< SU" U5      < S35        OU(       a/  S	[        U5      -  nUR                  SU< SU" U5      < S35        OkXUS
-    S:X  a#  UR                  U R                  UXSU5      5        O=U(       a  UR                  SU-  5        O!UR                  U R                  UU5      5        UnUR                  X5      =n	(       a  GMn  UR                  U" XS  5      5        SR                  U5      $ )Nr   zS\b((http|https|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?((?:\w|\.)+))\b"z&quot;z	<a href="z">z</a>z(https://www.rfc-editor.org/rfc/rfc%d.txtz!https://peps.python.org/pep-%04d/rE   (zself.<strong>%s</strong>rf   )escaper   r   searchspanrn   groupsreplacer   namelinkr   )r+   textr  r%   classesr^   rp   herepatternr   startendallschemerfcpepselfdotr3   urls                      r   markupServerHTMLDoc.markup  s    &4;; ** < = ~~d11e1JENN6$E"23438<<>0C7DSk))#x8SAB@3s8KVC[IJ9CHDVC[IJ#a%C't}}T77KL9D@At}}T7;<D) ~~d11e11* 	vd5k*+wwwr   c                 .   U=(       a    UR                   =(       d    SS-   U-   nSn	SU R                  U5      < SU R                  U5      < S3n
[        U5      (       a  [        [	        U5      5      nOSn[        U[        5      (       a  US   =(       d    UnUS   =(       d    SnO[        R                  " U5      nX-   U	=(       a    U R                  S	U	-  5      -   nU R                  XR                  XEU5      nU=(       a    S
U-  nSU< SU< S3$ )Nrf   r   z	<a name="z
"><strong>z</strong></a>z(...)r   rE   z'<font face="helvetica, arial">%s</font>z<dd><tt>%s</tt></dd>z<dl><dt>z</dt>z</dl>
)r5   r  r   r   r
   
isinstancetuplerg   rh   greyr$  	preformat)r+   objectr3   modr%   r  r^   clanchornotetitleargspec	docstringdecldocs                  r   
docroutineServerHTMLDoc.docroutine  s     $*c1D8 KKT!24 F)F+,GGfe$$Qi*7Gq	RIV,I$ #A49984?,A B kk~~uw@2,s2-1377r   c           	         0 nUR                  5        H  u  pVSU-   XE'   XE   XF'   M     U R                  U5      nSU-  nU R                  U5      nU R                  X R                  U5      n	U	=(       a    SU	-  n	USU	-  -   n/ n
[        UR                  5       5      nU H$  u  pVU
R                  U R                  XeUS95        M&     XR                  SSSR                  U
5      5      -   nU$ )	Nz#-z)<big><big><strong>%s</strong></big></big>z<tt>%s</tt>z
<p>%s</p>
)r%   Methods	functionsrf   )
itemsr  headingr$  r*  r]   rn   r5  
bigsectionr   )r+   server_namepackage_documentationr^   fdictkeyvalueheadresultr4  contentsmethod_itemss               r   	docserverServerHTMLDoc.docserver  s     !--/JCEJ :EL * kk+.:[Hd#kk/G)mc)-#--gmmo.&JCOODOOEeODE '//{BGGH$57 7 r   c                 .    SnSU-  nSU< SU< SU< S3$ )Nr   z1<link rel="stylesheet" type="text/css" href="%s">zI<!DOCTYPE>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Python: z	</title>
z</head><body>z</body></html>ra   )r+   r0  rD  css_pathcss_links        r   pageServerHTMLDoc.page"  s,    ? 	 ',XxA 	Ar   ra   )	r5   rz   r{   r|   r$  r5  rF  rK  r}   ra   r   r   r  r    s1     #'b"b % N ,0R8:4Ar   r  c                   2    \ rS rSrS rS rS rS rS rSr	g)	XMLRPCDocGeneratori0  c                 .    SU l         SU l        SU l        g )NzXML-RPC Server DocumentationzGThis server exports the following methods through the XML-RPC protocol.)r=  server_documentationserver_titler=   s    r   r,   XMLRPCDocGenerator.__init__7  s!    9 	! ;r   c                     Xl         g r/   )rQ  )r+   rQ  s     r   set_server_title#XMLRPCDocGenerator.set_server_title?  s
     )r   c                     Xl         g r/   )r=  )r+   r=  s     r   set_server_name"XMLRPCDocGenerator.set_server_nameD  s
     'r   c                     Xl         g r/   )rP  )r+   rP  s     r   set_server_documentation+XMLRPCDocGenerator.set_server_documentationI  s
     %9!r   c                    0 nU R                  5        H  nX R                  ;   a  U R                  U   nOU R                  b  S S /n[        U R                  S5      (       a  U R                  R	                  U5      US'   [        U R                  S5      (       a  U R                  R                  U5      US'   [        U5      nUS:w  a  UnO6[        U R                  S5      (       d   [        U R                  U5      nOUn WX'   M     [        5       nUR                  U R                  U R                  U5      nUR                  [        R                  " U R                   5      U5      $ ! [         a    Un Nwf = f)N_get_method_argstringr   re   rE   ry   rJ   )r:   r%   r&   r\   r]  re   r(  r   r   r  rF  r=  rP  rK  htmlr  rQ  )r+   r^   rb   rR   method_info
documenterdocumentations          r   generate_html_documentation.XMLRPCDocGenerator.generate_html_documentationN  sR    224Kjj(K0*#Tl4==*ABB%)]]%H%H%UKN4==-88%)]]%>%>{%KKN#K0,.(F <<-!9$(MM$/"& )F
 $*G 7 5: #_
",, $ 0 0 $ 9 9 ' t{{4+<+<=}MM# * -!,-s   (E++E:9E:)rP  r=  rQ  N)
r5   rz   r{   r|   r,   rT  rW  rZ  rb  r}   ra   r   r   rN  rN  0  s    ;)
'
9
1Nr   rN  c                        \ rS rSrS rS rSrg)DocXMLRPCRequestHandleri  c                 0   [         R                  R                  [         R                  R                  [        5      5      n[         R                  R                  USSS5      n[        USS9 nUR                  5       sS S S 5        $ ! , (       d  f       g = f)Nz..
pydoc_dataz
_pydoc.cssrb)mode)r  rP   dirnamerealpath__file__r   openr   )r+   r#  	path_hererI  fps        r   _get_css DocXMLRPCRequestHandler._get_css  s\    GGOOBGG$4$4X$>?	77<<	4|L(&"779 '&&s   -B
Bc                    U R                  5       (       d  U R                  5         g U R                  R                  S5      (       a  SnU R	                  U R                  5      nO+SnU R
                  R                  5       R                  S5      nU R                  S5        U R                  SSU-  5        U R                  S[        [        U5      5      5        U R                  5         U R                  R                  U5        g )	Nz.cssztext/cssz	text/htmlr$   r   zContent-Typez%s; charset=UTF-8r   )r   r   rP   endswithrp  r   rb  rM   r   r   r   r   r   r   r   )r+   content_typerS   s      r   do_GETDocXMLRPCRequestHandler.do_GET  s     %%''OO99f%%%L}}TYY/H&L{{>>@GGPH3)<|)KL)3s8}+=>

"r   ra   N)r5   rz   r{   r|   rp  ru  r}   ra   r   r   re  re    s    #r   re  c                   *    \ rS rSr\SSSSS4S jrSrg)DocXMLRPCServeri  TFNc           
      `    [         R                  XX#XEUU5        [        R                  U 5        g r/   )r   r,   rN  r   s           r   r,   DocXMLRPCServer.__init__  s/     	##D$.:K$5	7 	##D)r   ra   )r5   rz   r{   r|   re  r,   r}   ra   r   r   rx  rx    s     -D!ed#'5*r   rx  c                        \ rS rSrS rS rSrg)DocCGIXMLRPCRequestHandleri  c                 x   U R                  5       R                  S5      n[        S5        [        S[        U5      -  5        [        5         [        R
                  R                  5         [        R
                  R                  R                  U5        [        R
                  R                  R                  5         g )Nr$   zContent-Type: text/htmlr   )	rb  rM   r   r   r   r   r   r   r   r   s     r   r   %DocCGIXMLRPCRequestHandler.handle_get  s{     335<<WE'("S]23



)

!r   c                 X    [         R                  U 5        [        R                  U 5        g r/   )r   r,   rN  r=   s    r   r,   #DocCGIXMLRPCRequestHandler.__init__  s    ((.##D)r   ra   N)r5   rz   r{   r|   r   r,   r}   ra   r   r   r|  r|    s    
" *r   r|  __main__c                   .    \ rS rSrS r " S S5      rSrg)ExampleServicei  c                     g)N42ra   r=   s    r   getDataExampleService.getData  s    r   c                   $    \ rS rSr\S 5       rSrg)ExampleService.currentTimei  c                  >    [         R                   R                  5       $ r/   )datetimenowra   r   r   getCurrentTime)ExampleService.currentTime.getCurrentTime  s    ((,,..r   ra   N)r5   rz   r{   r|   staticmethodr  r}   ra   r   r   currentTimer    s    / /r   r  ra   N)r5   rz   r{   r|   r  r  r}   ra   r   r   r  r    s    		/ 	/r   r  )	localhosti@  c                 
    X-   $ r/   ra   )xys     r   <lambda>r    s    QSr   add)r   z&Serving XML-RPC on localhost port 8000zKIt is advisable to run this example server within a secure, closed network.z&
Keyboard interrupt received, exiting.)T)0xmlrpc.clientr   r   r   r   r   http.serverr   	functoolsr	   inspectr
   r^  r   r   r   r  r   rg   r   fcntlImportErrorr   r   r    r   r   r   r   r   HTMLDocr  rN  re  rx  r|  r5   r  r  r   r4   powr0   rB   r   serve_foreverKeyboardInterruptexitra   r   r   <module>r     s  V H G .      
 	 	  04IA IAVPA!7 PAdW///W8%. %N?-4 ?-JmAEMM mA^ON ONb&#8 &#P**** *$;$6*4 z/ / 
/	0F  %  %8  !1d K++-67[\	  " 
1	0 u  E^ ! 	;<HHQK	 
1	0s=   E" -AFE1"E.-E.1 FFFF
F%