a XC?h��� @sbddlZddlZddlZddlmZddlmZddlZddlZ ddl m Z ddl Z ddl mZz ddlZWney�dZYn0dd�Zdejdd �Zd Zd Zd Zd ZdZdZdZd ZdZdZd ZdZdZ dZ!Gdd�de"�Z#Gdd�de#�Z$Gdd�de#�Z%Gdd�de#�Z&e'Z(Z)eddd�Z*dd �Z+e+d!��rFd"d#�Z,ne+d$��rZd%d#�Z,nd&d#�Z,[*[+d'd(�Z-Gd)d*�d*�Z.d+d,�Z/d-d.�Z0Gd/d0�d0�Z1d1d2�Z2e.e1fZ3Gd3d4�d4�Z4Gd5d6�d6�Z5Gd7d8�d8�Z6Gd9d:�d:�Z7Gd;d<�d<�Z8Gd=d>�d>�Z9dZ:Z;Zd[dDdE�Z?dFdG�Z@d\dIdJ�ZAGdKdL�dLe�rPejBneC�ZDGdMdN�dN�ZEGdOdP�dP�ZFGdQdR�dReF�ZGGdSdT�dT�ZHeHZIeJdUk�r^eHdV�ZKzeLeKjM�N��Wn0e#�y�ZOzeLdWeO�WYdZO[On dZO[O00e9eK�ZPeP�Q�eP�Rd dX�eP�Sdd �zeP�D]ZTeLeT��qWn0e#�y\ZOzeLdWeO�WYdZO[On dZO[O00dS)]�N)�datetime)�Decimal)�expat)�BytesIOcCs$|�dd�}|�dd�}|�dd�S)N�&z&�z>)�replace)�s�r �2/opt/alt/python39/lib64/python3.9/xmlrpc/client.py�escape�s  r z%d.%d�i���i�iD���i����i ���ip���i���iC���iB���i����i����i����c@seZdZejZdS)�ErrorN)�__name__� __module__� __qualname__�object�__str__r r r r r�src@seZdZdd�Zdd�ZdS)� ProtocolErrorcCs&t�|�||_||_||_||_dS�N)r�__init__�url�errcode�errmsg�headers)�selfrrrrr r r r�s  zProtocolError.__init__cCsd|jj|j|j|jfS)Nz<%s for %s: %s %s>)� __class__rrrr�rr r r �__repr__�s��zProtocolError.__repr__N�rrrrrr r r r r�src@s eZdZdS)� ResponseErrorN)rrrr r r r r!�sr!c@seZdZdd�Zdd�ZdS)�FaultcKst�|�||_||_dSr)rr� faultCode� faultString)rr#r$Zextrar r r r�s zFault.__init__cCsd|jj|j|jfS)Nz <%s %s: %r>)rrr#r$rr r r r�s�zFault.__repr__Nr r r r r r"�sr"�cCs*zt�|�dkWSty$YdS0dS)NZ0001F)�_day0�strftime� ValueError)Zfmtr r r �_try s r)z%YcCs |�d�S�N�%Y%m%dT%H:%M:%S�r'��valuer r r �_iso8601_formatsr/z%4YcCs |�d�S)Nz%4Y%m%dT%H:%M:%Sr,r-r r r r/scCs|�d��d�S)Nr+�)r'�zfillr-r r r r/scCsLt|t�rt|�St|ttjf�s<|dkr2t��}t�|�}d|dd�S)Nrz%04d%02d%02dT%02d:%02d:%02d�)� isinstancerr/�tuple�time� struct_time� localtimer-r r r � _strftimes  r8c@sneZdZddd�Zdd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dd�Z dd�Z dd�Z dd�Z dd�ZdS)�DateTimercCs t|t�r||_n t|�|_dSr)r3�strr.r8)rr.r r r r.s zDateTime.__init__cCstt|t�r|j}|j}nTt|t�r2|j}t|�}n:t|t�rH|j}|}n$t|d�rd|��}|��}n|}t}||fS)N� timetuple) r3r9r.rr/r:�hasattrr;�NotImplemented�r�otherr �or r r �make_comparable4s      zDateTime.make_comparablecCs"|�|�\}}|turtS||kSr�rAr=r>r r r �__lt__FszDateTime.__lt__cCs"|�|�\}}|turtS||kSrrBr>r r r �__le__LszDateTime.__le__cCs"|�|�\}}|turtS||kSrrBr>r r r �__gt__RszDateTime.__gt__cCs"|�|�\}}|turtS||kSrrBr>r r r �__ge__XszDateTime.__ge__cCs"|�|�\}}|turtS||kSrrBr>r r r �__eq__^szDateTime.__eq__cCst�|jd�Sr*)r5�strptimer.rr r r r;dszDateTime.timetuplecCs|jSrr-rr r r rlszDateTime.__str__cCsd|jj|jt|�fS)Nz<%s %r at %#x>)rrr.�idrr r r roszDateTime.__repr__cCst|���|_dSr)r:�stripr.�r�datar r r �decoderszDateTime.decodecCs$|�d�|�|j�|�d�dS�Nzz )�writer.)r�outr r r �encodeus  zDateTime.encodeN)r)rrrrrArCrDrErFrGr;rrrMrQr r r r r9(s r9cCst�}|�|�|Sr)r9rM�rLr.r r r � _datetimezs rScCs t�|d�Sr*)rrH)rLr r r �_datetime_type�srTc@s6eZdZd dd�Zdd�Zdd�Zdd �Zd d �ZdS) �BinaryNcCs>|durd}n&t|ttf�s,td|jj��t|�}||_dS)N�z#expected bytes or bytearray, not %s)r3�bytes� bytearray� TypeErrorrrrLrKr r r r�s�zBinary.__init__cCs t|jd�S)Nzlatin-1)r:rLrr r r r�szBinary.__str__cCst|t�r|j}|j|kSr)r3rUrL)rr?r r r rG�s z Binary.__eq__cCst�|�|_dSr)�base64� decodebytesrLrKr r r rM�sz Binary.decodecCs4|�d�t�|j�}|�|�d��|�d�dS�Nz �asciiz )rOrZ� encodebytesrLrM)rrP�encodedr r r rQ�s  z Binary.encode)N)rrrrrrGrMrQr r r r rU�s  rUcCst�}|�|�|Sr)rUrMrRr r r �_binary�s r`c@s$eZdZdd�Zdd�Zdd�ZdS)� ExpatParsercCsDt�dd�|_}||_|j|_|j|_|j|_ d}|� |d�dSr) rZ ParserCreate�_parser�_target�startZStartElementHandler�endZEndElementHandlerrLZCharacterDataHandler�xml)r�target�parser�encodingr r r r�szExpatParser.__init__cCs|j�|d�dS)NF)rb�ParserKr r r �feed�szExpatParser.feedcCs6z |j}WntyYn0|`|`|�dd�dS)NrVT)rb�AttributeErrorrcrj)rrhr r r �close�s   zExpatParser.closeN)rrrrrkrmr r r r ra�s rac@s�eZdZddd�ZiZdd�Zdd�Zd d �Zeeed�<d d �Z e ee <d d�Z e ee <e Z dd�Zeee<efdd�Zeee<dd�Zeee<eee<dd�Zeee<eee<efdd�Zeee<dd�Zeee<dd�Zeee<eee<eed<dS)� MarshallerNFcCsi|_d|_||_||_dSr)�memorLri� allow_none)rrirpr r r r�szMarshaller.__init__cCs�g}|j}|j}t|t�r@|d�||j|jd�|�|d�n4|d�|D]}|d�|||�|d�qL|d�d�|�}|S) Nz )r#r$z z z z z �)�append�_Marshaller__dumpr3r"r#r$�join)r�valuesrPrO�dump�v�resultr r r �dumps�s& ��    zMarshaller.dumpscCs�z|jt|�}Wndtyvt|d�s:tdt|���t|�jD]"}||j��vrDtdt|���qD|jd}Yn0||||�dS)N�__dict__zcannot marshal %s objects�_arbitrary_instance)�dispatch�type�KeyErrorr<rY�__mro__�keys)rr.rO�f�type_r r r Z__dumps  zMarshaller.__dumpcCs|jstd��|d�dS)Nz0cannot marshal None unless allow_none is enabledz)rprY�rr.rOr r r �dump_nilszMarshaller.dump_nilcCs$|d�||rdpd�|d�dS)Nz�1�0z r r�r r r � dump_bool szMarshaller.dump_boolcCs<|tks|tkrtd��|d�|tt|���|d�dS)Nzint exceeds XML-RPC limitsz z )�MAXINT�MININT� OverflowErrorr:�intr�r r r � dump_long&s zMarshaller.dump_longcCs |d�|t|��|d�dS)Nzz )�reprr�r r r � dump_double1s zMarshaller.dump_doublecCs |d�|||��|d�dS)Nzz r )rr.rOr r r r � dump_unicode7s zMarshaller.dump_unicodecCs,|d�t�|�}||�d��|d�dSr\)rZr^rM)rr.rOr_r r r � dump_bytes=s zMarshaller.dump_bytescCsZt|�}||jvrtd��d|j|<|j}|d�|D]}|||�q6|d�|j|=dS)Nz"cannot marshal recursive sequencesz z )rIrorYrs)rr.rO�irvrwr r r � dump_arrayEs   zMarshaller.dump_arraycCs�t|�}||jvrtd��d|j|<|j}|d�|��D]D\}}|d�t|t�s\td��|d||��|||�|d�q:|d�|j|=dS)Nz%cannot marshal recursive dictionariesz z zdictionary key must be stringz%s z z )rIrorYrs�itemsr3r:)rr.rOr r�rv�krwr r r � dump_structSs     zMarshaller.dump_structcCs |d�|t|��|d�dSrN)r8r�r r r � dump_datetimees zMarshaller.dump_datetimecCs2|jtvr ||_|�|�|`n|�|j|�dSr)r�WRAPPERSrOrQr�rzr�r r r � dump_instanceks   zMarshaller.dump_instancer{)NF) rrrrr|ryrsr�r}r��boolr�r�Zdump_intr��floatr r�r:r�rWrXr�r4�listr��dictr�rr�r9rUr r r r rn�s:      rnc@sjeZdZdDdd�Zdd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dd�Z iZ dd�Z e e d<dd�Z e e d<dd�Zee d<ee d<ee d<ee d<ee d<ee d<d d!�Zee d"<ee d#<d$d%�Zee d&<d'd(�Zee d)<ee d*<d+d,�Zee d-<d.d/�Zee d0<d1d2�Zee d3<d4d5�Zee d6<d7d8�Zee d9<d:d;�Zee d<<d=d>�Zee d?<d@dA�Zee dB<dCS)E� UnmarshallerFcCsHd|_g|_g|_g|_d|_d|_d|_|jj|_|p:||_||_ dS)NF�utf-8) �_type�_stack�_marks�_data�_value� _methodname� _encodingrr� _use_datetime� _use_bytes)r� use_datetime�use_builtin_typesr r r r�s  zUnmarshaller.__init__cCs>|jdus|jrt��|jdkr4tfi|jd���t|j�S)N�faultr)r�r�r!r"r�r4rr r r rm�s  zUnmarshaller.closecCs|jSr)r�rr r r � getmethodname�szUnmarshaller.getmethodnamecCs ||_dSr)r�)rriZ standaloner r r rf�szUnmarshaller.xmlcCshd|vr|�d�d}|dks&|dkr8|j�t|j��g|_|jrZ||jvrZtd|��|dk|_dS)N�:������array�structzunknown tag %rr.) �splitr�rr�lenr�r�r�r|r!)r�tag�attrsr r r rd�s zUnmarshaller.startcCs|j�|�dSr)r�rr)r�textr r r rL�szUnmarshaller.datac Csrz|j|}WnPty^d|vr*YdSz|j|�d�d}WntyXYYdS0Yn0||d�|j��S)Nr�r�rq)r|r~r�rtr�)rr�r�r r r re�s  zUnmarshaller.endc Csjz|j|}WnPty^d|vr*YdSz|j|�d�d}WntyXYYdS0Yn0|||�S)Nr�r�)r|r~r�)rr�rLr�r r r � end_dispatch�s  zUnmarshaller.end_dispatchcCs|�d�d|_dS�Nr)rrr�rKr r r �end_nil�s zUnmarshaller.end_nilZnilcCs:|dkr|�d�n|dkr(|�d�ntd��d|_dS)Nr�Fr�Tzbad boolean valuer)rrrYr�rKr r r � end_boolean�s   zUnmarshaller.end_boolean�booleancCs|�t|��d|_dSr�)rrr�r�rKr r r �end_int�szUnmarshaller.end_intZi1Zi2Zi4Zi8r�Z bigintegercCs|�t|��d|_dSr�)rrr�r�rKr r r � end_double�szUnmarshaller.end_doubleZdoubler�cCs|�t|��d|_dSr�)rrrr�rKr r r �end_bigdecimal�szUnmarshaller.end_bigdecimalZ bigdecimalcCs&|jr|�|j�}|�|�d|_dSr�)r�rMrrr�rKr r r � end_string�s  zUnmarshaller.end_string�string�namecCs.|j��}|j|d�g|j|d�<d|_dSr�)r��popr�r�)rrL�markr r r � end_arrays zUnmarshaller.end_arrayr�cCs`|j��}i}|j|d�}tdt|�d�D]}||d|||<q,|g|j|d�<d|_dS)Nrrr%)r�r�r��ranger�r�)rrLr�r�r�r�r r r � end_struct s zUnmarshaller.end_structr�cCs6t�}|�|�d��|jr"|j}|�|�d|_dS)Nr]r)rUrMrQr�rLrrr��rrLr.r r r � end_base64s  zUnmarshaller.end_base64rZcCs,t�}|�|�|jrt|�}|�|�dSr)r9rMr�rTrrr�r r r � end_dateTime s  zUnmarshaller.end_dateTimezdateTime.iso8601cCs|jr|�|�dSr)r�r�rKr r r � end_value(szUnmarshaller.end_valuer.cCs d|_dS)N�params�r�rKr r r � end_params/szUnmarshaller.end_paramsr�cCs d|_dS)Nr�r�rKr r r � end_fault3szUnmarshaller.end_faultr�cCs"|jr|�|j�}||_d|_dS)N� methodName)r�rMr�r�rKr r r �end_methodName7s zUnmarshaller.end_methodNamer�N)FF)rrrrrmr�rfrdrLrer�r|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r r r r r�sX   r�c@s$eZdZdd�Zdd�Zdd�ZdS)�_MultiCallMethodcCs||_||_dSr)�_MultiCallMethod__call_list�_MultiCallMethod__name)rZ call_listr�r r r rDsz_MultiCallMethod.__init__cCst|jd|j|f�S�Nz%s.%s)r�r�r��rr�r r r � __getattr__Gsz_MultiCallMethod.__getattr__cGs|j�|j|f�dSr)r�rrr��r�argsr r r �__call__Isz_MultiCallMethod.__call__N�rrrrr�r�r r r r r�Asr�c@seZdZdd�Zdd�ZdS)�MultiCallIteratorcCs ||_dSr)�results)rr�r r r rPszMultiCallIterator.__init__cCsR|j|}t|�ti�kr.t|d|d��n t|�tg�krF|dStd��dS)Nr#r$rz#unexpected type in multicall result)r�r}r"r()rr��itemr r r � __getitem__Ss  zMultiCallIterator.__getitem__N)rrrrr�r r r r r�Lsr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd S) � MultiCallcCs||_g|_dSr)�_MultiCall__server�_MultiCall__call_list)r�serverr r r rmszMultiCall.__init__cCsd|jjt|�fS)Nz <%s at %#x>)rrrIrr r r rqszMultiCall.__repr__cCs t|j|�Sr)r�r�r�r r r r�tszMultiCall.__getattr__cCs6g}|jD]\}}|�||d��q t|jj�|��S)N)r�r�)r�rrr�r��systemZ multicall)rZmarshalled_listr�r�r r r r�wszMultiCall.__call__N)rrrrrr�r�r r r r r�\sr�FcCsrtrHtrH|rt}tj}n|r&t}t}nt}t}tdd||t�}t|�}n"t||d�}trbt|�}nt |�}||fS)NTF�r�r�) � FastParser�FastUnmarshallerrTrZr[r`rSr"r�ra)r�r�Z mkdatetimeZmkbytesrgrhr r r � getparser�s    r�cCs�t|t�rd}n|rt|t�r|s&d}tr4t|�}n t||�}|�|�}|dkr^dt|�}nd}|rx|d|d|df}n|r�|d|d f}n|Sd �|�S) Nr%r�z$ z z z z z z rq)r3r"r4�FastMarshallerrnryr:rt)r�� methodnameZmethodresponserirp�mrLZ xmlheaderr r r ry�s6    ��rycCs2t||d�\}}|�|�|��|��|��fS�Nr�)r�rkrmr�)rLr�r��p�ur r r �loads�s  r�cCsPtst�t�}tjd|dd��}|�|�Wd�n1s>0Y|��S)N�wbr%)�mode�fileobjZ compresslevel)�gzip�NotImplementedErrorr�GzipFilerO�getvalue)rLr��gzfr r r � gzip_encodes (r��@c Cs�tst�tjdt|�d��P}z$|dkr0|��}n|�|d�}WntyZtd��Yn0Wd�n1sp0Y|dkr�t|�|kr�td��|S)N�rb�r�r�rr%z invalid dataz#max gzipped payload length exceeded)r�r�r�r�read�OSErrorr(r�)rLZ max_decoder�Zdecodedr r r � gzip_decode)s  ,r�c@seZdZdd�Zdd�ZdS)�GzipDecodedResponsecCs.tst�t|���|_tjj|d|jd�dS)Nr�r�)r�r�rr��ior�r)r�responser r r rGszGzipDecodedResponse.__init__cCs,ztj�|�W|j��n |j��0dSr)r�r�rmr�rr r r rmOszGzipDecodedResponse.closeN)rrrrrmr r r r r�Csr�c@s$eZdZdd�Zdd�Zdd�ZdS)�_MethodcCs||_||_dSr�� _Method__send� _Method__name)r�sendr�r r r r\sz_Method.__init__cCst|jd|j|f�Sr�)r�rrr�r r r r�_sz_Method.__getattr__cGs|�|j|�Srrr�r r r r�asz_Method.__call__Nr�r r r r r�Ysr�c@s�eZdZdeZdZdZddd�dd�Zdd d �Zdd d �Z d d�Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�ZdS) � TransportzPython-xmlrpc/%sTNFr )rcCs&||_||_d|_t|�|_g|_dS�N)NN)r��_use_builtin_types� _connectionr��_headers�_extra_headers)rr�r�rr r r rxs  zTransport.__init__c Cs�dD]v}z|�||||�WStjjy:|r6�Yqtyx}z(|sb|jtjtjtjfvrd�WYd}~qd}~00qdS)N)rr%) �single_request�http�clientZRemoteDisconnectedr��errnoZ ECONNRESETZ ECONNABORTEDZEPIPE)r�host�handler� request_body�verboser��er r r �request�s�zTransport.requestcCs�z8|�||||�}|��}|jdkr6||_|�|�WSWn.tyL�Yntyf|���Yn0|�dd�r||� �t |||j|j t |� ����dS)N��zcontent-lengthrq)� send_requestZ getresponseZstatusr�parse_responser"� Exceptionrm� getheaderr�r�reasonr�Z getheaders)rrrrrZ http_connZrespr r r r �s$     �zTransport.single_requestcCst|j|jd�Sr�)r�r�rrr r r r��s�zTransport.getparsercCsri}t|t�r|\}}tj�|�\}}|rdtj�|�}t�|��d�}d� |� ��}dd|fg}ng}|||fS)Nr�rqZ AuthorizationzBasic ) r3r4�urllib�parseZ _splituserZunquote_to_bytesrZr^rMrtr�)rr�x509ZauthZ extra_headersr r r � get_host_info�s   �zTransport.get_host_infocCsL|jr||jdkr|jdS|�|�\}|_}|tj�|�f|_|jdS)Nrr%)rrr r r ZHTTPConnection�rrZchostrr r r �make_connection�s  zTransport.make_connectioncCs |j\}}|rd|_|��dSr)rrm)rr� connectionr r r rm�s zTransport.closecCs�|�|�}|j|j}|r$|�d�|jrJtrJ|jd|dd�|�d�n |�d|�|�d�|�d|jf�|� ||�|� ||�|S)Nr%ZPOSTT)Zskip_accept_encoding)zAccept-Encodingr�)z Content-Typeztext/xmlz User-Agent) rrr Zset_debuglevel�accept_gzip_encodingr�Z putrequestrr� user_agent� send_headers� send_content)rrrr�debugr rr r r r�s         zTransport.send_requestcCs|D]\}}|�||�qdSr)� putheader)rr r�key�valr r r r#s zTransport.send_headerscCsR|jdur0|jt|�kr0tr0|�dd�t|�}|�dtt|���|�|�dS)N�Content-Encodingr�zContent-Length)�encode_thresholdr�r�r&r�r:Z endheaders)rr rr r r r$ s  �� zTransport.send_contentcCs�t|d�r*|�dd�dkr$t|�}q.|}n|}|��\}}|�d�}|sJqj|jr^tdt|��|�|�q:||urz|� �|� �|� �S)Nrr)rqr�izbody:) r<rr�r�r�r�printr�rkrm)rr��streamr�r�rLr r r r1s      zTransport.parse_response)FF)F)F)rrr� __version__r"r!r*rrr r�rrrmrr#r$rr r r r rjs �  ! rcs.eZdZd ddd��fdd� Zdd�Z�ZS) � SafeTransportFr N�r�contextcst�j|||d�||_dS)N�r�r�r)�superrr0)rr�r�rr0�rr r rRs �zSafeTransport.__init__cCst|jr||jdkr|jdSttjd�s2td��|�|�\}|_}|tjj|dfd|ji|p`i��f|_|jdS)Nrr%�HTTPSConnectionz1your version of http.client doesn't support HTTPSr0) rr<r r r�rr r4r0rr r r r[s  � ��� zSafeTransport.make_connection)FF)rrrrr� __classcell__r r r3r r.Os� r.c@sVeZdZdddd�dd�Zdd�Zd d �Zd d �Zd d�Zdd�Zdd�Z dd�Z dS)� ServerProxyNFr r/c Cs�tj�|�} | jdvrtd��| j|_tj�ddg| dd���|_|jsPd|_|dur�| jdkrpt } d| i} nt } i} | f|||d�| ��}||_ |p�d |_ ||_ ||_dS) N)r �httpszunsupported XML-RPC protocolrqrz/RPC2r7r0r1r�)rrZurlsplitZschemer�Znetloc�_ServerProxy__hostZ urlunsplit�_ServerProxy__handlerr.r�_ServerProxy__transport�_ServerProxy__encoding�_ServerProxy__verbose�_ServerProxy__allow_none) rZuri� transportrirrpr�r�rr0r�rZ extra_kwargsr r r r�s.    �� zServerProxy.__init__cCs|j��dSr)r:rmrr r r Z__close�szServerProxy.__closecCsPt|||j|jd��|jd�}|jj|j|j||jd�}t |�dkrL|d}|S)N)rirp�xmlcharrefreplace)rr%r) ryr;r=rQr:rr8r9r<r�)rr�r�rr�r r r Z __request�s ��� zServerProxy.__requestcCsd|jj|j|jfS)Nz <%s for %s%s>)rrr8r9rr r r r�s��zServerProxy.__repr__cCs t|j|�Sr)r��_ServerProxy__requestr�r r r r��szServerProxy.__getattr__cCs.|dkr|jS|dkr|jStd|f��dS)Nrmr>zAttribute %r not found)�_ServerProxy__closer:rl)r�attrr r r r��s zServerProxy.__call__cCs|Srr rr r r � __enter__�szServerProxy.__enter__cGs |��dSr)rAr�r r r �__exit__�szServerProxy.__exit__)NNFFFF) rrrrrAr@rr�r�rCrDr r r r r6zs��  r6�__main__zhttp://localhost:8000ZERROR� )FF)NNNF)FF)r�)UrZ�sysr5r�decimalrZ http.clientr Z urllib.parserZ xml.parsersrr r�rr�� ImportErrorr � version_infor-r�r�Z PARSE_ERRORZ SERVER_ERRORZAPPLICATION_ERRORZ SYSTEM_ERRORZTRANSPORT_ERRORZNOT_WELLFORMED_ERRORZUNSUPPORTED_ENCODINGZINVALID_ENCODING_CHARZINVALID_XMLRPCZMETHOD_NOT_FOUNDZINVALID_METHOD_PARAMSZINTERNAL_ERRORrrrr!r"r�r�ZBooleanr&r)r/r8r9rSrTrUr`r�rarnr�r�r�r�r�r�r�r�ryr�r�r�r�rr�r�rr.r6ZServerrr�r+Z currentTimeZgetCurrentTimerwZmultiZgetData�pow�addr�r r r r ��s�              R #!(C %  '� K  f+i