Ë
    S¼SfŸË  ã                  óì  — d Z ddlmZ ddlZddlZddlm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mZmZmZmZmZmZmZmZmZmZmZ ddl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" 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( ddl m)Z)  e	jT                  e+«      Z,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:d Z;djd!„Z<dkd"„Z=dld$„Z>	 	 	 	 	 	 dmd%„Z?dnd&„Z@ G d'„ d( ej‚                  d(d)«      ej„                  «      ZC G d*„ d+ejˆ                  «      ZE G d,„ d-eE«      ZF G d.„ d/eE«      ZG G d0„ d#eH«      ZIdod1„ZJ	 	 	 	 	 	 dpd2„ZKdqd3„ZL	 	 	 	 	 	 drd4„ZM	 	 	 	 	 	 dsd5„ZN	 	 	 	 	 	 	 	 	 	 dtd6„ZOdud7„ZP	 	 	 	 	 	 	 	 dvd8„ZQdud9„ZRdqd:„ZS G d;„ d<ej¨                  «      ZU G d=„ d>eH«      ZV	 	 	 	 	 	 	 	 dwd?„ZW	 dx	 	 	 	 	 	 	 	 	 	 	 	 	 dyd@„ZX	 	 	 	 	 	 	 	 dzdA„ZY	 	 	 	 	 	 	 	 	 	 d{dB„ZZ	 	 	 	 d|dC„Z[dodD„Z\	 	 	 	 	 	 	 	 d}dE„Z]	 	 	 	 	 	 	 	 d~dF„Z^	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddG„Z_	 	 	 	 	 	 	 	 	 	 	 	 	 	 d€dH„Z`d�dI„Za	 	 	 	 	 	 	 	 	 	 d‚dJ„Zb	 	 	 	 	 	 dƒdK„Zc	 	 	 	 	 	 	 	 	 	 d„dL„Zd	 	 	 	 	 	 	 	 	 	 d„dM„Ze	 	 	 	 	 	 	 	 	 	 d„dN„Zf	 	 	 	 	 	 	 	 	 	 d„dO„Zg	 	 	 	 	 	 	 	 	 	 d…dP„Zh	 	 	 	 	 	 	 	 d†dQ„Zi	 	 	 	 	 	 	 	 	 	 d‡dR„Zj	 	 	 	 	 	 	 	 	 	 	 	 dˆdS„ZkejØ                   G dT„ dUejÚ                  «      «       Zn G dV„ dWeH«      Zo	 	 	 	 	 	 d‰dX„Zp	 	 	 	 	 	 dŠdY„Zqd‹dZ„Zr	 	 	 	 	 	 	 	 dŒd[„Zsd�d\„ZtdŽd]„Zud�d^„Zvd�d_„Zw	 	 	 	 	 	 d�d`„Zxd�da„Zyd�db„Zzd‘dc„Z{d�dd„Z|	 	 	 	 d’de„Z}	 	 	 	 	 	 d“df„Z~ G dg„ dhejþ                  «      Z€	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d”di„Z�y)•z+Service-side implementation of gRPC Python.é    )ÚannotationsN)Úfutures)ÚAnyÚCallableÚDictÚIterableÚIteratorÚListÚMappingÚOptionalÚSequenceÚSetÚTupleÚUnion)Ú_common)Ú_compression)Ú_interceptor)Úcygrpc)ÚArityAgnosticMethodHandler)ÚChannelArgumentType)ÚDeserializingFunction)ÚMetadataType)ÚNullaryCallbackType)ÚResponseType)ÚSerializingFunction)ÚServerCallbackTag)ÚServerTagCallbackTypeÚshutdownÚrequest_callÚreceive_close_on_serverÚsend_initial_metadataÚreceive_messageÚsend_messagez$send_initial_metadata * send_messageÚsend_status_from_serverz/send_initial_metadata * send_status_from_serverÚopenÚclosedÚ	cancelledg      ð?g    eÍÍAc                ó<   — | j                   d   j                  «       S ©Nr   )Úbatch_operationsÚmessage)Úrequest_events    úKC:\Users\user\Documents\project_loop\venv\Lib\site-packages\grpc/_server.pyÚ_serialized_requestr.   T   s   € Ø×)Ñ)¨!Ñ,×4Ñ4Ó6Ð6ó    c                ó|   — t         j                  j                  | «      }|€t        j                  j
                  S |S ©N)r   Ú!STATUS_CODE_TO_CYGRPC_STATUS_CODEÚgetr   Ú
StatusCodeÚunknown)ÚcodeÚcygrpc_codes     r-   Ú_application_coder8   X   s4   € Ü×;Ñ;×?Ñ?ÀÓE€KØ(3Ð(;Œ6×Ñ×$Ñ$ÐLÀÐLr/   Ú	_RPCStatec                óx   — | j                   €t        j                  j                  S t	        | j                   «      S r1   )r6   r   r4   Úokr8   ©Ústates    r-   Ú_completion_coder>   ]   s-   € Ø‡z�zÐÜ× Ñ ×#Ñ#Ð#ä  §¡Ó,Ð,r/   c                óH   — | j                   €|S t        | j                   «      S r1   )r6   r8   )r=   r6   s     r-   Ú_abortion_coder@   d   s"   € ð ‡z�zÐØˆä  §¡Ó,Ð,r/   c                ó6   — | j                   €dS | j                   S )Nr/   )Údetailsr<   s    r-   Ú_detailsrC   m   s   € Ø—-‘-Ð'ˆ3Ð:¨U¯]©]Ð:r/   c                  ó   — e Zd Zy)Ú_HandlerCallDetailsN)Ú__name__Ú
__module__Ú__qualname__© r/   r-   rE   rE   q   s   „ ð 	r/   rE   )ÚmethodÚinvocation_metadatac                  ó`   — e Zd Zej                  dd„«       Zej                  	 	 	 	 dd„«       Zy)Ú_Methodc                ó   — t        «       ‚r1   ©ÚNotImplementedError©Úselfs    r-   Únamez_Method.name   s   € ä!Ó#Ð#r/   c                ó   — t        «       ‚r1   rO   ©rR   Úhandler_call_detailss     r-   Úhandlerz_Method.handlerƒ   s   € ô "Ó#Ð#r/   N©ÚreturnzOptional[str]©rV   rE   rY   úOptional[grpc.RpcMethodHandler])rF   rG   rH   ÚabcÚabstractmethodrS   rW   rI   r/   r-   rM   rM   ~   sD   „ Ø×Ñò$ó ð$ð 	×Ñð$Ø$7ð$à	(ò$ó ñ$r/   rM   c                  ó4   — e Zd Z	 	 	 	 dd„Zdd„Z	 	 	 	 dd„Zy)Ú_RegisteredMethodc                ó    — || _         || _        y r1   )Ú_nameÚ_registered_handler)rR   rS   Úregistered_handlers      r-   Ú__init__z_RegisteredMethod.__init__‹   s   € ð
 ˆŒ
Ø#5ˆÕ r/   c                ó   — | j                   S r1   )ra   rQ   s    r-   rS   z_RegisteredMethod.name“   s   € Ø�z‰zÐr/   c                ó   — | j                   S r1   )rb   rU   s     r-   rW   z_RegisteredMethod.handler–   s   € ð ×'Ñ'Ð'r/   N)rS   Ústrrc   r[   rX   rZ   ©rF   rG   rH   rd   rS   rW   rI   r/   r-   r_   r_   Š   s3   „ ð6àð6ð <ó6óð(Ø$7ð(à	(ô(r/   r_   c                  ó0   — e Zd Z	 	 dd„Zdd„Z	 	 	 	 dd„Zy)Ú_GenericMethodc                ó   — || _         y r1   )Ú_generic_handlers)rR   Úgeneric_handlerss     r-   rd   z_GenericMethod.__init__�   s   € ð "2ˆÕr/   c                 ó   — y r1   rI   rQ   s    r-   rS   z_GenericMethod.name£   s   € Ør/   c                óT   — | j                   D ]  }|j                  |«      }|€Œ|c S  y r1   )rl   Úservice)rR   rV   Úgeneric_handlerÚmethod_handlers       r-   rW   z_GenericMethod.handler¦   s;   € ð
  $×5Ñ5ò 	&ˆOØ,×4Ñ4Ð5IÓJˆNØÑ)Ø%Ò%ð	&ð r/   N)rm   úList[grpc.GenericRpcHandler]rX   rZ   rh   rI   r/   r-   rj   rj   œ   s)   „ ð2à6ó2óð	Ø$7ð	à	(ô	r/   rj   c                  óª   — e Zd ZU ded<   ded<   ee   Zded<   ded<   d	ed
<   ded<   d	ed<   ded<   ded<   ded<   d	ed<   ded<   ded<   d	ed<   d„ Zy)r9   zcontextvars.ContextÚcontextzthreading.ConditionÚ	conditionr   Úrequestrg   ÚclientÚboolÚinitial_metadata_allowedúOptional[grpc.Compression]Úcompression_algorithmÚdisable_next_compressionúOptional[MetadataType]Útrailing_metadatazOptional[grpc.StatusCode]r6   úOptional[bytes]rB   ÚstatusedzList[Exception]Ú
rpc_errorsz#Optional[List[NullaryCallbackType]]Ú	callbacksÚabortedc                ó6  — t        j                  «       | _        t        j                  «       | _        t        «       | _        d | _        t        | _
        d| _        d | _        d| _        d | _        d | _        d | _        d| _        g | _        g | _        d| _        y ©NTF)ÚcontextvarsÚContextru   Ú	threadingÚ	Conditionrv   ÚsetÚduerw   Ú_OPENrx   rz   r|   r}   r   r6   rB   r�   r‚   rƒ   r„   rQ   s    r-   rd   z_RPCState.__init__Ã   sƒ   € Ü"×*Ñ*Ó,ˆŒÜ"×,Ñ,Ó.ˆŒÜ“5ˆŒØˆŒÜˆŒØ(,ˆÔ%Ø%)ˆÔ"Ø(-ˆÔ%Ø!%ˆÔØˆŒ	ØˆŒØˆŒØˆŒØˆŒØˆ�r/   N)rF   rG   rH   Ú__annotations__r   rg   rŒ   rd   rI   r/   r-   r9   r9   ²   s`   … Ø Ó Ø"Ó"Ø
ˆc‰(€CØƒLØƒKØ"Ó"Ø5Ó5Ø"Ó"Ø-Ó-Ø
#Ó#ØÓØƒNØÓØ2Ó2ØƒMór/   c                ód   — t        j                  «       }| j                  j                  |«       |‚r1   )ÚgrpcÚRpcErrorr‚   Úappend)r=   Ú	rpc_errors     r-   Ú_raise_rpc_errorr”   Õ   s&   € Ü—‘“€IØ	×Ñ×Ñ˜IÔ&Ø
€Or/   c                ó–   — | j                   j                  |«       t        | «      s#| j                   s| j                  }d | _        | |fS y)N©NrI   )rŒ   ÚremoveÚ_is_rpc_state_activerƒ   )r=   Útokenrƒ   s      r-   Ú_possibly_finish_callrš   Û   sB   € ð 
‡I�I×Ñ�UÔÜ Ô&¨u¯yªyØ—O‘Oˆ	ØˆŒØ�iÐÐàr/   c                ó   ‡ ‡— ˆ ˆfd„}|S )Nc                ó`   •— ‰j                   5  t        ‰‰«      cd d d «       S # 1 sw Y   y xY wr1   )rv   rš   )Ú$unused_send_status_from_server_eventr=   r™   s    €€r-   r$   z9_send_status_from_server.<locals>.send_status_from_serverè   s)   ø€ Ø�_‰_ñ 	7Ü(¨°Ó6÷	7÷ 	7ò 	7ús   Ž$¤-rI   )r=   r™   r$   s   `` r-   Ú_send_status_from_serverrž   ç   s   ù€ õ7ð #Ð"r/   c                óê   — | j                   5  | j                  rDt        j                  | j                  «      f}|€|cd d d «       S |t	        |«      z   cd d d «       S |cd d d «       S # 1 sw Y   y xY wr1   )rv   r|   r   Ú!compression_algorithm_to_metadataÚtuple)r=   ÚmetadataÚcompression_metadatas      r-   Ú_get_initial_metadatar¤   ï   sz   € ð 
�‰ñ Ø×&Ò&ä×>Ñ>Ø×/Ñ/óð$Ð ð
 ÐØ+÷ñ ð ,¬e°H«oÑ=÷ñ ð ÷÷ ò ús   �0A)ÁA)ÁA)Á)A2c                óN   — t        j                  t        | |«      t        «      }|S r1   )r   ÚSendInitialMetadataOperationr¤   Ú_EMPTY_FLAGS)r=   r¢   Ú	operations      r-   Ú_get_initial_metadata_operationr©     s(   € ô ×3Ñ3Ü˜e XÓ.´ó€Ið Ðr/   c                óÖ  — | j                   t        ur×t        | |«      }| j                  €|n| j                  }| j                  r9t        | d «      t        j                  | j                  ||t        «      f}t        }n-t        j                  | j                  ||t        «      f}t        }|j                  |t        | |«      «       d| _        | j                  j!                  |«       y y ©NT)rx   Ú
_CANCELLEDr@   rB   rz   r©   r   ÚSendStatusFromServerOperationr   r§   Ú8_SEND_INITIAL_METADATA_AND_SEND_STATUS_FROM_SERVER_TOKENÚ_SEND_STATUS_FROM_SERVER_TOKENÚstart_server_batchrž   r�   rŒ   Úadd)r=   Úcallr6   rB   Úeffective_codeÚeffective_detailsÚ
operationsr™   s           r-   Ú_abortr¶   
  sÜ   € ð ‡|�|œ:Ñ%Ü'¨¨tÓ4ˆØ',§}¡}Ð'<™GÀ%Ç-Á-ÐØ×)Ò)ä/°°tÓ<Ü×4Ñ4Ø×+Ñ+Ø"Ø%Ü ó	ðˆJô M‰Eô ×4Ñ4Ø×+Ñ+Ø"Ø%Ü ó	ðˆJô 3ˆEØ×ÑØÔ0°¸Ó>ô	
ð ˆŒØ�	‰	�‰�eÕð9 &r/   c                ó   ‡ — ˆ fd„}|S )Nc                ó(  •— ‰j                   5  | j                  d   j                  «       rt        ‰_        n‰j                  t
        u rt        ‰_        ‰j                   j                  «        t        ‰t        «      cd d d «       S # 1 sw Y   y xY wr)   )
rv   r*   r'   r¬   rx   r�   Ú_CLOSEDÚ
notify_allrš   Ú_RECEIVE_CLOSE_ON_SERVER_TOKEN)Úreceive_close_on_server_eventr=   s    €r-   r    z9_receive_close_on_server.<locals>.receive_close_on_server-  so   ø€ Ø�_‰_ñ 	PØ,×=Ñ=¸aÑ@×JÑJÔLÜ)�•Ø—‘¤Ñ&Ü&�”Ø�O‰O×&Ñ&Ô(Ü(¨Ô0NÓO÷	P÷ 	Pò 	Pús   ŽA0BÂBrI   )r=   r    s   ` r-   Ú_receive_close_on_serverr½   ,  s   ø€ ôPð #Ð"r/   c                ó   ‡ ‡‡— ˆˆˆ fd„}|S )Nc                ó  •— t        | «      }|€]‰j                  5  ‰j                  t        u rt        ‰_        ‰j                  j                  «        t        ‰t        «      cd d d «       S t        j                  |‰«      }‰j                  5  |€'t        ‰‰t        j                  j                  d«       n|‰_        ‰j                  j                  «        t        ‰t        «      cd d d «       S # 1 sw Y   y xY w# 1 sw Y   y xY w)Ns    Exception deserializing request!)r.   rv   rx   r�   r¹   rº   rš   Ú_RECEIVE_MESSAGE_TOKENr   Údeserializer¶   r   r4   Úinternalrw   )Úreceive_message_eventÚserialized_requestrw   r²   Úrequest_deserializerr=   s      €€€r-   r"   z)_receive_message.<locals>.receive_message>  sò   ø€ Ü0Ð1FÓGÐØÐ%Ø—‘ñ LØ—<‘<¤5Ñ(Ü#*�E”LØ—‘×*Ñ*Ô,Ü,¨UÔ4JÓK÷	Lñ Lô ×)Ñ)Ø"Ð$8óˆGð —‘ñ LØ�?ÜØØÜ×)Ñ)×2Ñ2Ø;õ	ð %,�E”MØ—‘×*Ñ*Ô,Ü,¨UÔ4JÓK÷Lñ L÷Lð Lú÷Lð Lús   ›AC2ÂAC>Ã2C;Ã>DrI   )r=   r²   rÅ   r"   s   ``` r-   Ú_receive_messagerÆ   9  s   ú€ ö
Lð2 Ðr/   c                ó   ‡ — ˆ fd„}|S )Nc                óh   •— ‰j                   5  t        ‰t        «      cd d d «       S # 1 sw Y   y xY wr1   )rv   rš   Ú_SEND_INITIAL_METADATA_TOKEN)Ú"unused_send_initial_metadata_eventr=   s    €r-   r!   z5_send_initial_metadata.<locals>.send_initial_metadata[  s.   ø€ Ø�_‰_ñ 	NÜ(¨Ô0LÓM÷	N÷ 	Nò 	Nús   Ž(¨1rI   )r=   r!   s   ` r-   Ú_send_initial_metadatarË   Z  s   ø€ ôNð !Ð r/   c                ó   ‡ ‡— ˆ ˆfd„}|S )Nc                ó”   •— ‰j                   5  ‰j                   j                  «        t        ‰‰«      cd d d «       S # 1 sw Y   y xY wr1   )rv   rº   rš   )Úunused_send_message_eventr=   r™   s    €€r-   r#   z#_send_message.<locals>.send_messagec  s9   ø€ Ø�_‰_ñ 	7Ø�O‰O×&Ñ&Ô(Ü(¨°Ó6÷	7÷ 	7ò 	7ús	   Ž&>¾ArI   )r=   r™   r#   s   `` r-   Ú_send_messagerÏ   b  s   ù€ õ7ð
 Ðr/   c                  óè   — e Zd ZU ded<   ded<   ded<   	 	 	 	 	 	 dd„Zdd„Zd d	„Zd!d
„Zd"d„Zd!d„Z	d#d„Z
d$d„Zd%d„Zd&d„Zd'd„Zd(d„Zd)d„Zd*d„Zd#d„Zd+d„Zd,d„Zd-d„Zd.d„Zd/d„Zd0d„Zd!d„Zy)1Ú_Contextúcygrpc.BaseEventÚ
_rpc_eventr9   Ú_stateúOptional[DeserializingFunction]rÅ   c                ó.   — || _         || _        || _        y r1   )rÓ   rÔ   Ú_request_deserializer)rR   Ú	rpc_eventr=   rÅ   s       r-   rd   z_Context.__init__p  s   € ð $ˆŒØˆŒØ%9ˆÕ"r/   c                ó„   — | j                   j                  5  t        | j                   «      cd d d «       S # 1 sw Y   y xY wr1   )rÔ   rv   r˜   rQ   s    r-   Ú	is_activez_Context.is_activez  s0   € Ø�[‰[×"Ñ"ñ 	5Ü'¨¯©Ó4÷	5÷ 	5ò 	5ús   —6¶?c                ó€   — t        | j                  j                  j                  t	        j                  «       z
  d«      S r)   )ÚmaxrÓ   Úcall_detailsÚdeadlineÚtimerQ   s    r-   Útime_remainingz_Context.time_remaining~  s*   € Ü�4—?‘?×/Ñ/×8Ñ8¼4¿9¹9»;ÑFÈÓJÐJr/   c                óL   — | j                   j                  j                  «        y r1   )rÓ   r²   ÚcancelrQ   s    r-   râ   z_Context.cancel�  s   € Ø�‰×Ñ×#Ñ#Õ%r/   c                óæ   — | j                   j                  5  | j                   j                  €
	 d d d «       y| j                   j                  j                  |«       	 d d d «       y# 1 sw Y   y xY w)NFT)rÔ   rv   rƒ   r’   )rR   Úcallbacks     r-   Úadd_callbackz_Context.add_callback„  s^   € Ø�[‰[×"Ñ"ñ 	Ø�{‰{×$Ñ$Ð,Ø÷	ð 	ð —‘×%Ñ%×,Ñ,¨XÔ6Ø÷	÷ 	ñ 	ús   —A'¸&A'Á'A0c                ó|   — | j                   j                  5  d| j                   _        d d d «       y # 1 sw Y   y xY wr«   )rÔ   rv   r}   rQ   s    r-   Ú disable_next_message_compressionz)_Context.disable_next_message_compressionŒ  s0   € Ø�[‰[×"Ñ"ñ 	8Ø37ˆD�K‰KÔ0÷	8÷ 	8ñ 	8úó   —2²;c                ó.   — | j                   j                  S r1   )rÓ   rK   rQ   s    r-   rK   z_Context.invocation_metadata�  s   € Ø�‰×2Ñ2Ð2r/   c                óp   — t        j                  | j                  j                  j	                  «       «      S r1   )r   ÚdecoderÓ   r²   ÚpeerrQ   s    r-   rì   z_Context.peer“  s$   € Ü�~‰~˜dŸo™o×2Ñ2×7Ñ7Ó9Ó:Ð:r/   c                óT   — t        j                  | j                  j                  «      S r1   )r   Úpeer_identitiesrÓ   r²   rQ   s    r-   rî   z_Context.peer_identities–  s   € Ü×%Ñ% d§o¡o×&:Ñ&:Ó;Ð;r/   c                ó†   — t        j                  | j                  j                  «      }|€|S t	        j
                  |«      S r1   )r   Úpeer_identity_keyrÓ   r²   r   rë   )rR   Úid_keys     r-   rð   z_Context.peer_identity_key™  s4   € Ü×)Ñ)¨$¯/©/×*>Ñ*>Ó?ˆØ˜ˆvÐC¬W¯^©^¸FÓ-CÐCr/   c                óÚ   — t        j                  | j                  j                  «      }|€i n|}|j	                  «       D ��ci c]  \  }}t        j                  |«      |“Œ c}}S c c}}w r1   )r   Úauth_contextrÓ   r²   Úitemsr   rë   )rR   ró   Úauth_context_dictÚkeyÚvalues        r-   ró   z_Context.auth_context�  sf   € Ü×*Ñ*¨4¯?©?×+?Ñ+?Ó@ˆØ".Ð"6™B¸LÐð 0×5Ñ5Ó7÷
á��Uô �N‰N˜3Ó Ñ&ó
ð 	
ùó 
s   Á A'c                ó|   — | j                   j                  5  || j                   _        d d d «       y # 1 sw Y   y xY wr1   )rÔ   rv   r|   )rR   Úcompressions     r-   Úset_compressionz_Context.set_compression¥  s0   € Ø�[‰[×"Ñ"ñ 	<Ø0;ˆD�K‰KÔ-÷	<÷ 	<ñ 	<úrè   c                ó  — | j                   j                  5  | j                   j                  t        u rt	        | j                   «       n¬| j                   j
                  r‹t        | j                   |«      }| j                  j                  j                  |ft        | j                   «      «       d| j                   _        | j                   j                  j                  t        «       nt        d«      ‚d d d «       y # 1 sw Y   y xY w)NFz#Initial metadata no longer allowed!)rÔ   rv   rx   r¬   r”   rz   r©   rÓ   r²   r°   rË   rŒ   r±   rÉ   Ú
ValueError)rR   Úinitial_metadatar¨   s      r-   r!   z_Context.send_initial_metadata©  sÄ   € Ø�[‰[×"Ñ"ñ 	LØ�{‰{×!Ñ!¤ZÑ/Ü  §¡Õ-à—;‘;×7Ò7Ü ?ØŸ™Ð%5ó!�Ið —O‘O×(Ñ(×;Ñ;Ø"˜Ô&<¸T¿[¹[Ó&Iôð <A�D—K‘KÔ8Ø—K‘K—O‘O×'Ñ'Ô(DÕEä$Ð%JÓKÐK÷	L÷ 	Lñ 	Lús   —CC?Ã?Dc                ó|   — | j                   j                  5  || j                   _        d d d «       y # 1 sw Y   y xY wr1   )rÔ   rv   r   )rR   r   s     r-   Úset_trailing_metadataz_Context.set_trailing_metadataº  s0   € Ø�[‰[×"Ñ"ñ 	>Ø,=ˆD�K‰KÔ)÷	>÷ 	>ñ 	>úrè   c                ó.   — | j                   j                  S r1   )rÔ   r   rQ   s    r-   r   z_Context.trailing_metadata¾  s   € Ø�{‰{×,Ñ,Ð,r/   c                ó„  — |t         j                  j                  k(  r1t        j	                  d«       t         j                  j
                  }d}| j                  j                  5  || j                  _        t        j                  |«      | j                  _        d| j                  _        t        «       ‚# 1 sw Y   y xY w)Nz4abort() called with StatusCode.OK; returning UNKNOWNÚ T)r�   r4   ÚOKÚ_LOGGERÚerrorÚUNKNOWNrÔ   rv   r6   r   ÚencoderB   r„   Ú	Exception)rR   r6   rB   s      r-   Úabortz_Context.abortÁ  s‹   € à”4—?‘?×%Ñ%Ò%Ü�M‰MØFôô —?‘?×*Ñ*ˆDØˆGØ�[‰[×"Ñ"ñ 	Ø#ˆD�K‰KÔÜ")§.¡.°Ó"9ˆD�K‰KÔØ"&ˆD�K‰KÔÜ“+Ð÷		ð 	ús   Á%AB6Â6B?c                ó†   — |j                   | j                  _         | j                  |j                  |j                  «       y r1   )r   rÔ   r	  r6   rB   )rR   Ústatuss     r-   Úabort_with_statusz_Context.abort_with_statusÏ  s*   € Ø(.×(@Ñ(@ˆ�‰Ô%Ø�
‰
�6—;‘; §¡Õ/r/   c                ó|   — | j                   j                  5  || j                   _        d d d «       y # 1 sw Y   y xY wr1   )rÔ   rv   r6   )rR   r6   s     r-   Úset_codez_Context.set_codeÓ  s0   € Ø�[‰[×"Ñ"ñ 	$Ø#ˆD�K‰KÔ÷	$÷ 	$ñ 	$úrè   c                ó.   — | j                   j                  S r1   )rÔ   r6   rQ   s    r-   r6   z_Context.code×  s   € Ø�{‰{×ÑÐr/   c                ó¢   — | j                   j                  5  t        j                  |«      | j                   _        d d d «       y # 1 sw Y   y xY wr1   )rÔ   rv   r   r  rB   )rR   rB   s     r-   Úset_detailsz_Context.set_detailsÚ  s9   € Ø�[‰[×"Ñ"ñ 	:Ü")§.¡.°Ó"9ˆD�K‰KÔ÷	:÷ 	:ñ 	:ús   —%AÁAc                ó.   — | j                   j                  S r1   )rÔ   rB   rQ   s    r-   rB   z_Context.detailsÞ  s   € Ø�{‰{×"Ñ"Ð"r/   c                 ó   — y r1   rI   rQ   s    r-   Ú_finalize_statez_Context._finalize_stateá  s   € Ør/   N)rØ   rÒ   r=   r9   rÅ   rÕ   )rY   ry   )rY   Úfloat©rY   ÚNone)rä   r   rY   ry   )rY   r~   )rY   rg   )rY   zOptional[Sequence[bytes]]rX   )rY   zMapping[str, Sequence[bytes]])rù   zgrpc.CompressionrY   r  )rý   r   rY   r  )r   r   rY   r  )r6   úgrpc.StatusCoderB   rg   rY   r  )r  zgrpc.StatusrY   r  )r6   r  rY   r  )rY   r  )rB   rg   rY   r  )rY   Úbytes)rF   rG   rH   rŽ   rd   rÚ   rà   râ   rå   rç   rK   rì   rî   rð   ró   rú   r!   rÿ   r   r	  r  r  r6   r  rB   r  rI   r/   r-   rÑ   rÑ   k  s¡   … Ø Ó ØÓØ9Ó9ð:à#ð:ð ð:ð >ó	:ó5óKó&óó8ó3ó;ó<óDó
ó<óLó">ó-óó0ó$ó ó:ó#ôr/   rÑ   c                  óp   — e Zd ZU ded<   ded<   ded<   	 	 	 	 	 	 dd„Zdd„Zdd	„Zdd
„Zdd„Zdd„Z	dd„Z
y)Ú_RequestIteratorr9   rÔ   úcygrpc.CallÚ_callrÕ   r×   c                ó.   — || _         || _        || _        y r1   )rÔ   r  r×   )rR   r=   r²   rÅ   s       r-   rd   z_RequestIterator.__init__ê  s   € ð ˆŒØˆŒ
Ø%9ˆÕ"r/   c                ó²  — | j                   j                  t        u rt        | j                   «       y t	        | j                   «      s
t        «       ‚| j                  j                  t        j                  t        «      ft        | j                   | j                  | j                  «      «       | j                   j                  j                  t        «       y r1   )rÔ   rx   r¬   r”   r˜   ÚStopIterationr  r°   r   ÚReceiveMessageOperationr§   rÆ   r×   rŒ   r±   rÀ   rQ   s    r-   Ú_raise_or_start_receive_messagez0_RequestIterator._raise_or_start_receive_messageô  s�   € Ø�;‰;×Ñ¤Ñ+Ü˜TŸ[™[Õ)Ü% d§k¡kÔ2Ü“/Ð!à�J‰J×)Ñ)Ü×/Ñ/´Ó=Ð?Ü Ø—K‘K §¡¨T×-GÑ-Góôð �K‰K�O‰O×ÑÔ 6Õ7r/   c                óB  — | j                   j                  t        u rt        | j                   «       t        «       ‚| j                   j                  €&t
        | j                   j                  vr
t        «       ‚| j                   j                  }d | j                   _        |S r1   )	rÔ   rx   r¬   r”   rw   rÀ   rŒ   r   ÚAssertionError©rR   rw   s     r-   Ú_look_for_requestz"_RequestIterator._look_for_request  su   € Ø�;‰;×Ñ¤Ñ+Ü˜TŸ[™[Ô)ô ÓÐð �K‰K×ÑÐ'Ü&¨d¯k©k¯o©oÑ=ä“/Ð!à—k‘k×)Ñ)ˆGØ"&ˆD�K‰KÔØˆNr/   c                óî   — | j                   j                  5  | j                  «        	 | j                   j                  j                  «        | j	                  «       }|�|cd d d «       S ŒB# 1 sw Y   y xY wr1   )rÔ   rv   r"  Úwaitr&  r%  s     r-   Ú_nextz_RequestIterator._next  sh   € Ø�[‰[×"Ñ"ñ 	#Ø×0Ñ0Ô2ØØ—‘×%Ñ%×*Ñ*Ô,Ø×0Ñ0Ó2�ØÐ&Ø"÷	#ñ 	#à÷	#ð 	#ús   —A	A+Á*A+Á+A4c                ó   — | S r1   rI   rQ   s    r-   Ú__iter__z_RequestIterator.__iter__  s   € Øˆr/   c                ó"   — | j                  «       S r1   ©r)  rQ   s    r-   Ú__next__z_RequestIterator.__next__  ó   € Ø�z‰z‹|Ðr/   c                ó"   — | j                  «       S r1   r-  rQ   s    r-   Únextz_RequestIterator.next   r/  r/   N)r=   r9   r²   r  rÅ   rÕ   r  )rY   r   )rY   r  )rF   rG   rH   rŽ   rd   r"  r&  r)  r+  r.  r1  rI   r/   r-   r  r  å  sS   … ØÓØÓØ:Ó:ð:àð:ð ð:ð >ó	:ó8óó#óóôr/   r  c                ó   ‡ ‡‡— ˆˆ ˆfd„}|S )Nc            	     óü  •— ‰j                   5  t        ‰«      s
	 d d d «       y ‰j                  j                  t	        j
                  t        «      ft        ‰‰j                  ‰«      «       ‰j                  j                  t        «       	 ‰j                   j                  «        ‰j                  € ‰j                  t        u rrdj                  ‰j                   j"                  «      } t%        ‰‰j                  t        j&                  j(                  t+        j,                  | «      «       	 d d d «       y ‰j                  t.        u r(	 d d d «       y ‰j                  }d ‰_        |cd d d «       S Œå# 1 sw Y   y xY w)Nz*"{}" requires exactly one request message.)rv   r˜   r²   r°   r   r!  r§   rÆ   rŒ   r±   rÀ   r(  rw   rx   r¹   ÚformatrÝ   rJ   r¶   r4   Úunimplementedr   r  r¬   )rB   rw   rÅ   rØ   r=   s     €€€r-   Úunary_requestz%_unary_request.<locals>.unary_request)  s@  ø€ Ø�_‰_ñ 	'Ü'¨Ô.Ø÷	'ð 	'ð —‘×1Ñ1Ü×3Ñ3´LÓAÐCÜ$Ø˜yŸ~™~Ð/Cóôð —	‘	—‘Ô4Ô5ØØ—O‘O×(Ñ(Ô*Ø—}‘}Ð,Ø Ÿ<™<¬7Ñ2Ø&R×&YÑ&YØ )× 6Ñ 6× =Ñ =ó'˜Gô #Ø %Ø )§¡Ü &× 1Ñ 1× ?Ñ ?Ü '§¡¨wÓ 7ô	ð $(÷1	'ð 	'ð2 #Ÿ\™\¬ZÑ7Ø#'÷5	'ð 	'ð8 #(§-¡-˜Ø(,˜œØ&÷=	'ñ 	'ð ÷	'ð 	'ús#   ŽE2¤D
E2Ä7E2ÅE2Å1E2Å2E;rI   )rØ   r=   rÅ   r6  s   ``` r-   Ú_unary_requestr7  $  s   ú€ ö
'ðB Ðr/   c                ó:  — ddl m}  || ||«      5 }	 d }|� ||||«      }n	 |||«      }|dfcd d d «       S # t        $ �rL}	|j                  5  |j                  r1t        || j                  t        j                  j                  d«       nÛ|	|j                  vrÍ	 dj                  |	«      }
nb# t        $ rV d}
t        j                  t        j                  t!        |	«      |	|	j"                  «      «       t        j$                  «        Y nw xY wt        j                  |
«       t        || j                  t        j                  j                  t'        j(                  |
«      «       d d d «       n# 1 sw Y   nxY wY d }	~	d d d «       yd }	~	ww xY w# 1 sw Y   y xY w)Nr   )Ú_create_servicer_contextTó   RPC Abortedz!Exception calling application: {}z1Calling application raised unprintable Exception!©NF)r�   r9  r  rv   r„   r¶   r²   r   r4   r5   r‚   r4  r  Ú	exceptionÚ	tracebackÚformat_exceptionÚtypeÚ__traceback__Ú	print_excr   r  )rØ   r=   ÚbehaviorÚargumentrÅ   Úsend_response_callbackr9  ru   Úresponse_or_iteratorr<  rB   s              r-   Ú_call_behaviorrF  M  s–  € õ .á	!Ø�5Ð.ó
ð -à	ð*	Ø#'Ð Ø%Ð1Ù'/Ø˜gÐ'=ó(Ñ$ñ (0°¸'Ó'BÐ$Ø'¨Ð-÷-ñ -øô ó !	Ø—‘ñ Ø—=’=ÜØØ!Ÿ™Ü×)Ñ)×1Ñ1Ø&õ	ð  e×&6Ñ&6Ñ6ð.Ø"E×"LÑ"LØ%ó#™øô %ò .àOð  ô  ×)Ñ)Ü%×6Ñ6Ü $ Y£Ø )Ø )× 7Ñ 7óôô "×+Ñ+Ö-ð.úô ×%Ñ% gÔ.ÜØØ!Ÿ™Ü×)Ñ)×1Ñ1ÜŸ™ wÓ/ô	÷5÷ ñ úó@ ÷[-ð -ûð!	ú÷-ð -úsk   ‘F“8¸
FÁF	ÁAE0ÂB-Â,E0Â-AD	Ä	E0ÄD	ÄAE0Å'	F	Å0E9Å5F	Å<FÆ	FÆFÆFc           
     ó
  — 	 t        |«      dfS # t        $ r Y yt        $ rà}|j                  5  |j                  r1t        || j                  t        j                  j                  d«       nw||j                  vridj                  |«      }t        j                  |«       t        || j                  t        j                  j                  t        j                  |«      «       d d d «       n# 1 sw Y   nxY wY d }~yd }~ww xY w)NTr«   r:  z!Exception iterating responses: {}r;  )r1  r   r  rv   r„   r¶   r²   r   r4   r5   r‚   r4  r  r<  r   r  )rØ   r=   Úresponse_iteratorr<  rB   s        r-   Ú%_take_response_from_response_iteratorrI  ‡  sÚ   € ð
ÜÐ%Ó&¨Ð,Ð,øÜò ÙÜò Ø�_‰_ñ 	Ø�}Š}ÜØØ—N‘NÜ×%Ñ%×-Ñ-Ø"õ	ð  %×"2Ñ"2Ñ2Ø=×DÑDÀYÓO�Ü×!Ñ! 'Ô*ÜØØ—N‘NÜ×%Ñ%×-Ñ-Ü—N‘N 7Ó+ô	÷	÷ 	ñ 	úô" ûð%ús1   ‚ �	DšD¢C=®B5C,Ã#	C=Ã,C5	Ã1C=Ã=Dc                óÚ   — t        j                  ||«      }|€F|j                  5  t        || j                  t
        j                  j                  d«       d d d «       y |S # 1 sw Y   y xY w)Ns   Failed to serialize response!)r   Ú	serializerv   r¶   r²   r   r4   rÂ   )rØ   r=   ÚresponseÚresponse_serializerÚserialized_responses        r-   Ú_serialize_responserO  ¥  si   € ô "×+Ñ+¨HÐ6IÓJÐØÐ"Ø�_‰_ñ 	ÜØØ—‘Ü×!Ñ!×*Ñ*Ø0ô	÷	ð à"Ð"÷	ð ús   ¥1A!Á!A*c                óZ   — | j                   rt        j                  j                  S t        S r1   )r}   r   Ú	WriteFlagÚno_compressr§   r<   s    r-   Ú%_get_send_message_op_flags_from_staterS  ¹  s%   € ð ×%Ò%Ü×Ñ×+Ñ+Ð+äÐr/   c                óT   — | j                   5  d| _        d d d «       y # 1 sw Y   y xY wr;  )rv   r}   r<   s    r-   Ú_reset_per_message_staterU  Â  s&   € Ø	�‰ñ /Ø).ˆÔ&÷/÷ /ñ /ús   �ž'c                óH  — |j                   5  t        |«      s
	 d d d «       y|j                  r9t        |d «      t	        j
                  |t        |«      «      f}d|_        t        }n&t	        j
                  |t        |«      «      f}t        }| j                  j                  |t        ||«      «       |j                  j                  |«       t        |«       	 |j                   j                  «        ||j                  vrt        |«      cd d d «       S Œ=# 1 sw Y   y xY wr;  )rv   r˜   rz   r©   r   ÚSendMessageOperationrS  Ú-_SEND_INITIAL_METADATA_AND_SEND_MESSAGE_TOKENÚ_SEND_MESSAGE_TOKENr²   r°   rÏ   rŒ   r±   rU  r(  )rØ   r=   rN  rµ   r™   s        r-   Ú_send_responserZ  Ç  s  € ð 
�‰ñ 7Ü# EÔ*Ø÷7ð 7ð ×-Ò-ä3°E¸4Ó@Ü×/Ñ/Ø+Ü=¸eÓDóð�
ð 27�Ô.ÜE‘ô ×/Ñ/Ø+Ü=¸eÓDóð�
ô ,�Ø�N‰N×-Ñ-ØœM¨%°Ó7ôð �I‰I�M‰M˜%Ô Ü$ UÔ+ØØ—‘×$Ñ$Ô&Ø §	¡	Ñ)Ü/°Ó6÷=7ñ 7ð6 ÷77ð 7ús   �D£C*DÄDÄD!c           	     óH  — |j                   5  |j                  t        urït        |«      }t	        |«      }t        j                  |j                  ||t        «      g}|j                  r|j                  t        |d «      «       |�.|j                  t        j                  |t        |«      «      «       | j                  j                  |t!        |t"        «      «       d|_        t'        |«       |j(                  j+                  t"        «       d d d «       y # 1 sw Y   y xY wr«   )rv   rx   r¬   r>   rC   r   r­   r   r§   rz   r’   r©   rW  rS  r²   r°   rž   r¯   r�   rU  rŒ   r±   )rØ   r=   rN  r6   rB   rµ   s         r-   Ú_statusr\  ë  sõ   € ð
 
�‰ñ :Ø�<‰<œzÑ)Ü# EÓ*ˆDÜ˜u“oˆGä×4Ñ4Ø×+Ñ+¨T°7¼LóðˆJð
 ×-Ò-Ø×!Ñ!Ô"AÀ%ÈÓ"NÔOØ"Ð.Ø×!Ñ!Ü×/Ñ/Ø+Ü=¸eÓDóôð �N‰N×-Ñ-ØÜ(¨Ô0NÓOôð "ˆEŒNÜ$ UÔ+Ø�I‰I�M‰MÔ8Ô9÷1:÷ :ñ :ús   �DDÄD!c                óD  — t        j                  | «       	  |«       }|�1t        | ||||«      \  }}|rt        | |||«      }	|	�t	        | ||	«       t        j                  «        y # t
        $ r t        j                  «        Y Œ4w xY w# t        j                  «        w xY wr1   )	r   Ú'install_context_from_request_call_eventrF  rO  r\  r  r=  rA  Úuninstall_context)
rØ   r=   rB  Úargument_thunkrÅ   rM  rC  rL  ÚproceedrN  s
             r-   Ú_unary_response_in_poolrb    s©   € ô ×2Ñ2°9Ô=ð#Ù!Ó#ˆØÐÜ .Ø˜5 (¨HÐ6Jó!ÑˆH�gñ Ü&9Ø˜u hÐ0Có'Ð#ð 'Ð2Ü˜I uÐ.AÔBô 	× Ñ Õ"øô ò Ü×ÑÖðûô 	× Ñ Õ"ús#   —:A& Á&BÂB	 ÂBÂB	 Â	Bc                ó�  ‡ ‡‡— t        j                  ‰ «       dˆˆ ˆfd„}	  |«       }|�Lt        |d«      r|j                  rt	        ‰ ‰||||¬«       n"t	        ‰ ‰|||«      \  }}	|	rt        ‰ ‰||«       t        j                  «        y # t        $ r t        j                  «        Y Œ4w xY w# t        j                  «        w xY w)Nc                ób   •— | €t        ‰‰d «       y t        ‰‰| ‰«      }|�t        ‰‰|«       y y r1   )r\  rO  rZ  )rL  rN  rM  rØ   r=   s     €€€r-   Úsend_responsez/_stream_response_in_pool.<locals>.send_response1  sD   ø€ ØÐÜ�I˜u dÕ+ä"5Ø˜5 (Ð,?ó#Ðð #Ð.Ü˜y¨%Ð1DÕEð /r/   Úexperimental_non_blocking)rD  )rL  r   rY   r  )
r   r^  Úhasattrrf  rF  Ú3_send_message_callback_to_blocking_iterator_adapterr  r=  rA  r_  )
rØ   r=   rB  r`  rÅ   rM  re  rC  rH  ra  s
   ``   `    r-   Ú_stream_response_in_poolri  '  sÉ   ú€ ô ×2Ñ2°9Ô=÷Fð#Ù!Ó#ˆØÐä˜Ð"=Ô>Ø×6Ò6äØØØØØ(Ø+8öô .<Ø˜u h°Ð:Nó.Ñ*Ð! 7ñ ÜGØ! 5¨-Ð9Jôô 	× Ñ Õ"øô ò Ü×ÑÖðûô 	× Ñ Õ"ús$   ¢AB ÂB,Â)B/ Â+B,Â,B/ Â/Cc                óD   — | j                   t        uxr | j                   S r1   )rx   r¬   r�   r<   s    r-   r˜   r˜   X  s   € Ø�<‰<œzÐ)Ò@°%·.±.Ð.@Ð@r/   c                óT   — 	 t        | ||«      \  }}|r ||«       t        |«      sy y Œ(r1   )rI  r˜   )rØ   r=   rD  rH  rL  ra  s         r-   rh  rh  \  s>   € ð ÜAØ�uÐ/ó
Ñˆ�'ñ Ù" 8Ô,Ü'¨Ô.Øàð r/   c                ó~   — t        | d«      r0t        | j                  t        j                  «      r| j                  S |S )NÚexperimental_thread_pool)rg  Ú
isinstancerm  r   ÚThreadPoolExecutor)rB  Údefault_thread_pools     r-   Ú _select_thread_pool_for_behaviorrq  n  s;   € ô ˆxÐ3Ô4¼Ø×)Ñ)¬7×+EÑ+Eô:ð ×0Ñ0Ð0à"Ð"r/   c           
     óø   — t        | ||j                  «      }t        |j                  |«      }|j	                  |j
                  j                  t        | ||j                  ||j                  |j                  «      S r1   )	r7  rÅ   rq  Úunary_unaryÚsubmitru   Úrunrb  rM  ©rØ   r=   rr   rp  r6  Úthread_pools         r-   Ú_handle_unary_unaryrx  z  s|   € ô #Ø�5˜.×=Ñ=ó€Mô 3Ø×"Ñ"Ð$7ó€Kð ×ÑØ�‰×ÑÜØØØ×"Ñ"ØØ×+Ñ+Ø×*Ñ*ó	ð 	r/   c           
     óø   — t        | ||j                  «      }t        |j                  |«      }|j	                  |j
                  j                  t        | ||j                  ||j                  |j                  «      S r1   )	r7  rÅ   rq  Úunary_streamrt  ru   ru  ri  rM  rv  s         r-   Ú_handle_unary_streamr{  ’  s|   € ô #Ø�5˜.×=Ñ=ó€Mô 3Ø×#Ñ#Ð%8ó€Kð ×ÑØ�‰×ÑÜ ØØØ×#Ñ#ØØ×+Ñ+Ø×*Ñ*ó	ð 	r/   c           
     ó  ‡— t        || j                  |j                  «      Št        |j                  |«      }|j                  |j                  j                  t        | ||j                  ˆfd„|j                  |j                  «      S )Nc                 ó   •— ‰ S r1   rI   ©Úrequest_iterators   €r-   ú<lambda>z&_handle_stream_unary.<locals>.<lambda>¼  ó   ø€ Ð € r/   )
r  r²   rÅ   rq  Ústream_unaryrt  ru   ru  rb  rM  ©rØ   r=   rr   rp  rw  r  s        @r-   Ú_handle_stream_unaryr„  ª  s‚   ø€ ô (Øˆy�~‰~˜~×BÑBóÐô 3Ø×#Ñ#Ð%8ó€Kð ×ÑØ�‰×ÑÜØØØ×#Ñ#Û Ø×+Ñ+Ø×*Ñ*ó	ð 	r/   c           
     ó  ‡— t        || j                  |j                  «      Št        |j                  |«      }|j                  |j                  j                  t        | ||j                  ˆfd„|j                  |j                  «      S )Nc                 ó   •— ‰ S r1   rI   r~  s   €r-   r€  z'_handle_stream_stream.<locals>.<lambda>Ô  r�  r/   )
r  r²   rÅ   rq  Ústream_streamrt  ru   ru  ri  rM  rƒ  s        @r-   Ú_handle_stream_streamrˆ  Â  s‚   ø€ ô (Øˆy�~‰~˜~×BÑBóÐô 3Ø×$Ñ$Ð&9ó€Kð ×ÑØ�‰×ÑÜ ØØØ×$Ñ$Û Ø×+Ñ+Ø×*Ñ*ó	ð 	r/   c                óD  ‡— 	 	 	 	 dˆfd„}‰j                  «       }|s)t        j                  | j                  j                  «      }t        || j                  «      }|�'|j                  j                  |j                  ||«      S |j                  j                  ||«      S )Nc                ó&   •— ‰j                  | «      S r1   )rW   )rV   Úmethod_with_handlers    €r-   Úquery_handlersz,_find_method_handler.<locals>.query_handlersà  s   ø€ ð #×*Ñ*Ð+?Ó@Ð@r/   rZ   )
rS   r   rë   rÝ   rJ   rE   rK   ru   ru  Úexecute)rØ   r=   r‹  Úinterceptor_pipelinerŒ  Úmethod_namerV   s     `    r-   Ú_find_method_handlerr�  Ú  s¦   ø€ ðAØ1ðAà	(õAð
 &×*Ñ*Ó,€KÙÜ—n‘n Y×%;Ñ%;×%BÑ%BÓCˆä.ØØ×%Ñ%óÐð
 Ð'Ø�}‰}× Ñ Ø ×(Ñ(¨.Ð:Nó
ð 	
ð �}‰}× Ñ  Ð1EÓFÐFr/   c                óÄ   ‡— t        ‰d «      t        j                  t        «      t        j                  d ||t        «      f}| j
                  j                  |ˆfd„«       y )Nc                ó   •— ‰dfS r–   rI   )Úignored_eventÚ	rpc_states    €r-   r€  z_reject_rpc.<locals>.<lambda>  s   ø€ ØØð
€ r/   )r©   r   ÚReceiveCloseOnServerOperationr§   r­   r²   r°   )rØ   r”  r  rB   rµ   s    `   r-   Ú_reject_rpcr–  ö  sW   ø€ ô 	(¨	°4Ó8Ü×,Ñ,¬\Ó:Ü×,Ñ,Ø�&˜'¤<ó	
ð€Jð ‡N�N×%Ñ%Øó	
õr/   c                óì  — |j                   5  | j                  j                  t        j                  t
        «      ft        |«      «       |j                  j                  t        «       |j                  r:|j                  rt        | |||«      cd d d «       S t        | |||«      cd d d «       S |j                  rt        | |||«      cd d d «       S t        | |||«      cd d d «       S # 1 sw Y   y xY wr1   )rv   r²   r°   r   r•  r§   r½   rŒ   r±   r»   Úrequest_streamingÚresponse_streamingrˆ  r„  r{  rx  )rØ   r=   rr   rw  s       r-   Ú_handle_with_method_handlerrš    sá   € ð 
�‰ñ Ø�‰×)Ñ)Ü×1Ñ1´,Ó?ÐAÜ$ UÓ+ô	
ð 	�	‰	�‰Ô4Ô5Ø×+Ò+Ø×0Ò0Ü,Ø˜u n°kó÷ñ ô ,Ø˜u n°kó÷ñ ð  ×0Ò0Ü+Ø˜u n°kó÷#ñ ô* +Ø˜u n°kó÷+÷ ò ús   �BC*ÂC*Â0C*ÃC*Ã*C3c                ó8  — | j                   sy| j                  j                  s|j                  «       r�t	        «       }	 t        | |||«      }|€*t        | |t        j                  j                  d«       |dfS |r*t        | |t        j                  j                  d«       |dfS |t!        | |||«      fS y# t        $ rZ}dj                  |«      }t        j                  |«       t        | |t        j                  j                  d«       |dfcY d}~S d}~ww xY w)aä  Handles RPC based on provided handlers.

      When receiving a call event from Core, registered method will have it's
    name as tag, we pass the tag as registered_method_name to this method,
    then we can find the handler in registered_method_handlers based on
    the method name.

      For call event with unregistered method, the method name will be included
    in rpc_event.call_details.method and we need to query the generics handlers
    to find the actual handler.
    )NNzException servicing handler: {}s   Error in service handler!Ns   Method not found!s   Concurrent RPC limit exceeded!)ÚsuccessrÝ   rJ   rS   r9   r�  r  r4  r  r<  r–  r   r4   r5   r5  Úresource_exhaustedrš  )	rØ   r‹  rŽ  rw  Úconcurrency_exceededr”  rr   r<  rB   s	            r-   Ú_handle_callrŸ  ,  s2  € ð$ ×ÒØØ×Ñ×$Ò$Ð(;×(@Ñ(@Ô(BÜ“Kˆ	ð	#Ü1ØØØ#Ø$ó	ˆNð  Ð!ÜØØÜ×!Ñ!×/Ñ/Ø$ô	ð ˜d�?Ð"Ù!ÜØØÜ×!Ñ!×4Ñ4Ø1ô	ð ˜d�?Ð"ð Ü+Ø˜y¨.¸+óðð ð øôE ò 		#Ø7×>Ñ>¸yÓIˆGÜ×Ñ˜gÔ&ÜØØÜ×!Ñ!×)Ñ)Ø,ô	ð ˜d�?Õ"ûð		#ús   ¿B6 Â6	DÂ?ADÄDÄDc                  ó   — e Zd ZdZdZdZy)Ú_ServerStageÚstoppedÚstartedÚgraceN)rF   rG   rH   ÚSTOPPEDÚSTARTEDÚGRACErI   r/   r-   r¡  r¡  n  s   „ à€GØ€GØ�Er/   r¡  c                  óÄ   — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   	 	 	 	 	 	 	 	 	 	 	 	 d!d„Zy )"Ú_ServerStatezthreading.RLockÚlockúcygrpc.CompletionQueueÚcompletion_queueúcygrpc.ServerÚserverrs   rm   ú Dict[str, grpc.RpcMethodHandler]Úregistered_method_handlersú'Optional[_interceptor._ServicePipeline]rŽ  úfutures.ThreadPoolExecutorrw  r¡  Ústageúthreading.EventÚtermination_eventzList[threading.Event]Úshutdown_eventsúOptional[int]Úmaximum_concurrent_rpcsÚintÚactive_rpc_countzSet[_RPCState]Ú
rpc_stateszSet[str]rŒ   ry   Úserver_deallocatedc                ó‚  — t        j                  «       | _        || _        || _        t        |«      | _        || _        || _        t        j                  | _        t        j                  «       | _        | j                  g| _        || _        d| _        i | _        t%        «       | _        t%        «       | _        d| _        y )Nr   F)r‰   ÚRLockrª  r¬  r®  Úlistrm   rŽ  rw  r¡  r¥  r³  ÚEventrµ  r¶  r¸  rº  r°  r‹   r»  rŒ   r¼  )rR   r¬  r®  rm   rŽ  rw  r¸  s          r-   rd   z_ServerState.__init__‡  s¢   € ô —O‘OÓ%ˆŒ	Ø 0ˆÔØˆŒÜ $Ð%5Ó 6ˆÔØ$8ˆÔ!Ø&ˆÔÜ!×)Ñ)ˆŒ
Ü!*§¡Ó!2ˆÔØ $× 6Ñ 6Ð7ˆÔØ'>ˆÔ$Ø !ˆÔØ*,ˆÔ'ô ›%ˆŒÜ“5ˆŒð #(ˆÕr/   N)r¬  r«  r®  r­  rm   ú Sequence[grpc.GenericRpcHandler]rŽ  r±  rw  r²  r¸  r·  )rF   rG   rH   rŽ   rd   rI   r/   r-   r©  r©  u  s›   … Ø
ÓØ,Ó,ØÓØ2Ó2Ø @Ó@ØAÓAØ+Ó+ØÓØ&Ó&Ø*Ó*Ø*Ó*ØÓØÓØ	ƒMØÓð(à0ð(ð ð(ð ;ð	(ð
 Fð(ð 0ð(ð "/ô(r/   r©  c                ó|   — | j                   5  | j                  j                  |«       d d d «       y # 1 sw Y   y xY wr1   )rª  rm   Úextend)r=   rm   s     r-   Ú_add_generic_handlersrÄ  ¥  s5   € ð 
�‰ñ 8Ø×Ñ×%Ñ%Ð&6Ô7÷8÷ 8ñ 8úó   �2²;c                ó|   — | j                   5  | j                  j                  |«       d d d «       y # 1 sw Y   y xY wr1   )rª  r°  Úupdate)r=   Úmethod_handlerss     r-   Ú_add_registered_method_handlersrÉ  ¬  s8   € ð 
�‰ñ AØ×(Ñ(×/Ñ/°Ô@÷A÷ Añ AúrÅ  c                ó|   — | j                   5  | j                  j                  |«      cd d d «       S # 1 sw Y   y xY wr1   )rª  r®  Úadd_http2_port)r=   Úaddresss     r-   Ú_add_insecure_portrÍ  ³  s0   € Ø	�‰ñ 4Ø�|‰|×*Ñ*¨7Ó3÷4÷ 4ò 4ús   �2²;c                ó’   — | j                   5  | j                  j                  ||j                  «      cd d d «       S # 1 sw Y   y xY wr1   )rª  r®  rË  Ú_credentials)r=   rÌ  Úserver_credentialss      r-   Ú_add_secure_portrÑ  ¸  s>   € ð
 
�‰ñ 
Ø�|‰|×*Ñ*ØÐ'×4Ñ4ó
÷
÷ 
ò 
ús	   �&=½Ac                ó¬   — | j                   j                  | j                  | j                  t        «       | j                  j                  t        «       y r1   )r®  r   r¬  Ú_REQUEST_CALL_TAGrŒ   r±   r<   s    r-   Ú_request_callrÔ  Ã  s;   € Ø	‡L�L×ÑØ×Ñ × 6Ñ 6Ô8Iôð 
‡I�I‡M�MÔ#Õ$r/   c                ó¢   — |}| j                   j                  | j                  | j                  ||«       | j                  j	                  |«       y r1   )r®  Úrequest_registered_callr¬  rŒ   r±   )r=   rJ   Úregistered_call_tags      r-   Ú_request_registered_callrØ  Ê  sE   € Ø ÐØ	‡L�L×(Ñ(Ø×ÑØ×ÑØØô	ð 
‡I�I‡M�MÐ%Õ&r/   c                óÖ   — | j                   s]| j                  sQ| j                  j                  «        | j                  D ]  }|j                  «        Œ t        j                  | _        yyr†   )	r»  rŒ   r®  Údestroyr¶  r‹   r¡  r¥  r³  )r=   Úshutdown_events     r-   Ú_stop_servingrÜ  Ö  sU   € Ø×Ò E§I¢IØ�‰×ÑÔØ#×3Ñ3ò 	!ˆNØ×ÑÕ ð	!ä"×*Ñ*ˆŒØàr/   c                óp   — | j                   5  | xj                  dz  c_        d d d «       y # 1 sw Y   y xY w)Né   )rª  rº  r<   s    r-   Ú_on_call_completedrß  á  s/   € Ø	�‰ñ $Ø×Ò !Ñ#Õ÷$÷ $ñ $ús   �,¬5c                óÈ  ‡ — d}|j                   t        u rC‰ j                  5  ‰ j                  j	                  t        «       t        ‰ «      rd}d d d «       |S |j                   t        u s'|j                   ‰ j                  j                  «       v �r¡d }|j                   ‰ j                  j                  «       v r3|j                   }t        |‰ j                  j                  |d «      «      }nt        ‰ j                  «      }‰ j                  5  ‰ j                  j	                  |j                   «       ‰ j                  d uxr ‰ j                  ‰ j                  k\  }t        ||‰ j                   ‰ j"                  |«      \  }}|�‰ j$                  j'                  |«       |�)‰ xj                  dz  c_        |j)                  ˆ fd„«       ‰ j*                  t,        j.                  u r5|‰ j                  j                  «       v rt1        ‰ |«       nt3        ‰ «       nt        ‰ «      rd}d d d «       |S |j                  |«      \  }}|D ]
  }		  |	«        Œ |�?‰ j                  5  ‰ j$                  j	                  |«       t        ‰ «      rd}d d d «       |S |S # 1 sw Y   |S xY w# 1 sw Y   |S xY w# t4        $ r t6        j9                  d«       Y ŒŠw xY w# 1 sw Y   |S xY w)NTFrÞ  c                ó   •— t        ‰«      S r1   )rß  )Úunused_futurer=   s    €r-   r€  z-_process_event_and_continue.<locals>.<lambda>  s   ø€ Ô*<¸UÓ*C€ r/   zException calling callback!)ÚtagÚ_SHUTDOWN_TAGrª  rŒ   r—   rÜ  rÓ  r°  Úkeysr_   r3   rj   rm   r¸  rº  rŸ  rŽ  rw  r»  r±   Úadd_done_callbackr³  r¡  r¦  rØ  rÔ  r  r  r<  )
r=   ÚeventÚshould_continueÚregistered_method_namer‹  rž  r”  Ú
rpc_futurerƒ   rä   s
   `         r-   Ú_process_event_and_continuerë  ç  sÈ  ø€ ð €OØ‡y�y”MÑ!Ø�Z‰Zñ 	(Ø�I‰I×Ñœ]Ô+Ü˜UÔ#Ø"'�÷	(ð~ Ððu 	�	‰	Ô&Ñ&Ø�9‰9˜×8Ñ8×=Ñ=Ó?Ò?à!%ÐØ�9‰9˜×8Ñ8×=Ñ=Ó?Ñ?Ø%*§Y¡YÐ"Ü"3Ø&Ø×0Ñ0×4Ñ4Ø*¨Dóó#Ñô #1Ø×&Ñ&ó#Ðð �Z‰Zñ 	(Ø�I‰I×Ñ˜UŸY™YÔ'à×-Ñ-°TÐ9ò LØ×*Ñ*¨e×.KÑ.KÑKð !ô %1ØØ#Ø×*Ñ*Ø×!Ñ!Ø$ó%Ñ!ˆI�zð Ð$Ø× Ñ ×$Ñ$ YÔ/ØÐ%Ø×&Ò&¨!Ñ+Õ&Ø×,Ñ,ÛCôð �{‰{œl×2Ñ2Ñ2à*Ø×7Ñ7×<Ñ<Ó>ñ?ô -¨UÐ4JÕKä! %Õ(Ü˜uÔ%Ø"'�÷;	(ðT Ðð  %Ÿy™y¨Ó/Ñˆ	�9Ø!ò 	AˆHðAÙ•
ð	Að
 Ð Ø—‘ñ ,Ø× Ñ ×'Ñ'¨	Ô2Ü  Ô'Ø&+�O÷,ð Ðˆ?Ð÷	(ð~ Ðú÷U	(ðT Ðûô ò AÜ×!Ñ!Ð"?Ö@ðAú÷,ð Ðús6   ¢-JÄDJ&ÉJ3É$)KÊJ#Ê&J0Ê3KËKËK!c                ó  — 	 t        j                   «       t        z   }| j                  j                  |«      }| j                  rt        | «       |j                  t        j                  j                  k7  rt        | |«      sy d }Œ„r1   )rß   Ú"_DEALLOCATED_SERVER_CHECK_PERIOD_Sr¬  Úpollr¼  Ú_begin_shutdown_onceÚcompletion_typer   ÚCompletionTypeÚqueue_timeoutrë  )r=   Útimeoutrç  s      r-   Ú_serverô  .  sp   € Ø
Ü—)‘)“+Ô BÑBˆØ×&Ñ&×+Ñ+¨GÓ4ˆØ×#Ò#Ü  Ô'Ø× Ñ ¤F×$9Ñ$9×$GÑ$GÒGÜ.¨u°eÔ<Øð ˆð r/   c                ó:  — | j                   5  | j                  t        j                  u r^| j                  j                  | j                  t        «       t        j                  | _        | j                  j                  t        «       d d d «       y # 1 sw Y   y xY wr1   )rª  r³  r¡  r¦  r®  r   r¬  rä  r§  rŒ   r±   r<   s    r-   rï  rï  =  sg   € Ø	�‰ñ )Ø�;‰;œ,×.Ñ.Ñ.Ø�L‰L×!Ñ! %×"8Ñ"8¼-ÔHÜ&×,Ñ,ˆEŒKØ�I‰I�M‰Mœ-Ô(÷	)÷ )ñ )ús   �A;BÂBc                ó$  ‡ ‡‡— ‰ j                   5  ‰ j                  t        j                  u r/t	        j
                  «       Š‰j                  «        ‰cd d d «       S t        ‰ «       t	        j
                  «       Š‰ j                  j                  ‰«       ‰€‰ j                  j                  «        n8ˆˆˆ fd„}t	        j                  |¬«      }|j                  «        ‰cd d d «       S 	 d d d «       ‰j                  «        ‰S # 1 sw Y   ŒxY w)Nc                 ó    •— ‰j                  ‰ ¬«       ‰j                  5  ‰j                  j                  «        d d d «       y # 1 sw Y   y xY w©N)ró  )r(  rª  r®  Úcancel_all_calls)r¤  rÛ  r=   s   €€€r-   Úcancel_all_calls_after_gracez+_stop.<locals>.cancel_all_calls_after_graceS  s@   ø€ Ø"×'Ñ'°Ð'Ô6ØŸ™ñ 8ØŸ™×5Ñ5Ô7÷8÷ 8ñ 8ús    AÁA)Útarget)rª  r³  r¡  r¥  r‰   rÀ  r‹   rï  r¶  r’   r®  rù  ÚThreadÚstartr(  )r=   r¤  rú  ÚthreadrÛ  s   ``  @r-   Ú_stoprÿ  E  sÜ   ú€ Ø	�‰ñ &Ø�;‰;œ,×.Ñ.Ñ.Ü&Ÿ_™_Ó.ˆNØ×ÑÔ Ø!÷	&ñ &ô ! Ô'Ü&Ÿ_™_Ó.ˆNØ×!Ñ!×(Ñ(¨Ô8Øˆ}Ø—‘×-Ñ-Õ/ö8ô
 #×)Ñ)Ð1MÔN�Ø—‘”Ø%÷)&ñ &ð 0÷&ð* ×ÑÔØÐ÷-&ð &ús   �ADÁBDÄDc                óÄ  — | j                   5  | j                  t        j                  urt	        d«      ‚| j
                  j                  «        t        j                  | _        | j                  j                  «       D ]  }t        | |«       Œ t        | «       t        j                  t        | f¬«      }d|_        |j                  «        d d d «       y # 1 sw Y   y xY w)Nz$Cannot start already-started server!)rû  ÚargsT)rª  r³  r¡  r¥  rü   r®  rý  r¦  r°  rå  rØ  rÔ  r‰   rü  rô  Údaemon)r=   rJ   rþ  s      r-   Ú_startr  _  s¯   € Ø	�‰ñ Ø�;‰;œl×2Ñ2Ñ2ÜÐCÓDÐDØ�‰×ÑÔÜ"×*Ñ*ˆŒà×6Ñ6×;Ñ;Ó=ò 	4ˆFÜ$ U¨FÕ3ð	4ô 	�eÔÜ×!Ñ!¬°u°hÔ?ˆØˆŒØ�‰Œ÷÷ ñ ús   �C CÃCc                ód   — | D ]+  }t        |dd «      }|�Œt        dj                  |«      «      ‚ y )Nrp   zT"{}" must conform to grpc.GenericRpcHandler type but does not have "service" method!)ÚgetattrÚAttributeErrorr4  )Úgeneric_rpc_handlersÚgeneric_rpc_handlerÚservice_attributes      r-   Ú_validate_generic_rpc_handlersr
  o  sG   € ð  4ò ÐÜ#Ð$7¸ÀDÓIÐØÑ$Ü ð-ß-3©VÐ4GÓ-Hóð ñr/   c                óH   — t        j                  |«      }t        | «      |z   S r1   )r   Úcreate_channel_optionr¡   )Úbase_optionsrù   Úcompression_options      r-   Ú_augment_optionsr  {  s&   € ô &×;Ñ;¸KÓHÐÜ�ÓÐ!3Ñ3Ð3r/   c                  óœ   — e Zd ZU ded<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 dd„Zdd„Z	ddd
„Z
dd„Zd„ Zy	)Ú_Serverr©  rÔ   c                óì   — t        j                  «       }t        j                  t        ||«      |«      }	|	j	                  |«       t        ||	|t        j                  |«      ||«      | _        |	| _	        y r1   )
r   ÚCompletionQueueÚServerr  Úregister_completion_queuer©  r   Úservice_pipelinerÔ   Ú
_cy_server)
rR   rw  rm   ÚinterceptorsÚoptionsr¸  rù   Úxdsr¬  r®  s
             r-   rd   z_Server.__init__‡  sl   € ô "×1Ñ1Ó3ÐÜ—‘Ô/°¸ÓEÀsÓKˆØ×(Ñ(Ð)9Ô:Ü"ØØØÜ×)Ñ)¨,Ó7ØØ#ó
ˆŒð !ˆ�r/   c                óF   — t        |«       t        | j                  |«       y r1   )r
  rÄ  rÔ   )rR   r  s     r-   Úadd_generic_rpc_handlersz _Server.add_generic_rpc_handlersž  s   € ô 	'Ð';Ô<Ü˜dŸk™kÐ+?Õ@r/   c                óÂ  — | j                   j                  5  | j                   j                  t        j                  u r
	 d d d «       y 	 d d d «       |j                  «       D ��ci c]  \  }}t        j                  ||«      |“Œ }}}|j                  «       D ]  }| j                  j                  |«       Œ t        | j                   |«       y # 1 sw Y   Œ‡xY wc c}}w r1   )rÔ   rª  r³  r¡  r¦  rô   r   Úfully_qualified_methodrå  r  Úregister_methodrÉ  )rR   Úservice_namerÈ  rJ   rr   Úmethod_to_handlersr  s          r-   Úadd_registered_method_handlersz&_Server.add_registered_method_handlers¤  sÐ   € ð �[‰[×Ññ 	Ø�{‰{× Ñ ¤L×$8Ñ$8Ñ8Ø÷	ð 	Ø8÷	ð +:×*?Ñ*?Ó*A÷
á&�˜ô ×*Ñ*¨<¸Ó@À.ÑPð
Ðñ 
ð '9×&=Ñ&=Ó&?ò 	DÐ"Ø�O‰O×+Ñ+Ð,BÕCð	Dä'¨¯©Ð5GÕH÷	ð 	üó

s   —(CÁ$!CÃCc           	     ó|   — t        j                  |t        | j                  t        j                  |«      «      «      S r1   )r   Úvalidate_port_binding_resultrÍ  rÔ   r  )rR   rÌ  s     r-   Úadd_insecure_portz_Server.add_insecure_port·  s/   € Ü×3Ñ3ØÔ'¨¯©´W·^±^ÀGÓ5LÓMó
ð 	
r/   c           	     ó~   — t        j                  |t        | j                  t        j                  |«      |«      «      S r1   )r   r$  rÑ  rÔ   r  )rR   rÌ  rÐ  s      r-   Úadd_secure_portz_Server.add_secure_port¼  s7   € ô ×3Ñ3ØÜØ—‘œWŸ^™^¨GÓ4Ð6Hóó
ð 	
r/   c                ó.   — t        | j                  «       y r1   )r  rÔ   rQ   s    r-   rý  z_Server.startÆ  s   € Üˆt�{‰{Õr/   Nc                óª   — t        j                  | j                  j                  j                  | j                  j                  j                  |¬«      S rø  )r   r(  rÔ   rµ  Úis_set)rR   ró  s     r-   Úwait_for_terminationz_Server.wait_for_terminationÉ  s>   € ô �|‰|Ø�K‰K×)Ñ)×.Ñ.Ø�K‰K×)Ñ)×0Ñ0Øô
ð 	
r/   c                ó.   — t        | j                  |«      S r1   )rÿ  rÔ   )rR   r¤  s     r-   Ústopz_Server.stopÓ  s   € Ü�T—[‘[ %Ó(Ð(r/   c                ó@   — t        | d«      rd| j                  _        y y )NrÔ   T)rg  rÔ   r¼  rQ   s    r-   Ú__del__z_Server.__del__Ö  s   € Ü�4˜Ô"ð .2ˆD�K‰KÕ*ð #r/   )rw  r²  rm   rÁ  r  ú Sequence[grpc.ServerInterceptor]r  úSequence[ChannelArgumentType]r¸  r·  rù   r{   r  ry   ©r  ú Iterable[grpc.GenericRpcHandler]rY   r  )r   rg   rÈ  r¯  rY   r  )rÌ  rg   rY   r¹  )rÌ  rg   rÐ  úgrpc.ServerCredentialsrY   r¹  r  r1   )ró  úOptional[float]rY   ry   )r¤  r5  rY   r´  )rF   rG   rH   rŽ   rd   r  r"  r%  r'  rý  r+  r-  r/  rI   r/   r-   r  r  ƒ  sÄ   … ØÓð!à/ð!ð ;ð!ð 7ð	!ð
 /ð!ð "/ð!ð 0ð!ð ó!ð.AØ$DðAà	óAðIàðIð :ðIð 
ó	Ió&
ð

Øð
Ø0Fð
à	ó
óô
ó)ó2r/   r  c           	     ó:   — t        |«       t        | ||||||«      S r1   )r
  r  )rw  r  r  r  r¸  rù   r  s          r-   Úcreate_serverr7  Ý  s/   € ô #Ð#7Ô8ÜØØØØØØØóð r/   )r,   rÒ   rY   r  )r6   r  rY   úcygrpc.StatusCode)r=   r9   rY   r8  )r=   r9   r6   r8  rY   r8  )r=   r9   rY   r  )r=   r9   rY   r  )r=   r9   r™   rg   rY   r   )r=   r9   r™   rg   rY   r   )r=   r9   r¢   r~   rY   r~   )r=   r9   r¢   r~   rY   zcygrpc.Operation)
r=   r9   r²   r  r6   r8  rB   r  rY   r  )r=   r9   rY   r   )r=   r9   r²   r  rÅ   rÕ   rY   r   )rØ   rÒ   r=   r9   rÅ   rÕ   rY   úCallable[[], Any]r1   )rØ   rÒ   r=   r9   rB  r   rC  r   rÅ   rÕ   rD  z(Optional[Callable[[ResponseType], None]]rY   z8Tuple[Union[ResponseType, Iterator[ResponseType]], bool])rØ   rÒ   r=   r9   rH  úIterator[ResponseType]rY   zTuple[ResponseType, bool])
rØ   rÒ   r=   r9   rL  r   rM  úOptional[SerializingFunction]rY   r€   )r=   r9   rY   zUnion[int, cygrpc.WriteFlag])rØ   rÒ   r=   r9   rN  r  rY   ry   )rØ   rÒ   r=   r9   rN  r€   rY   r  )rØ   rÒ   r=   r9   rB  r   r`  r9  rÅ   r;  rM  r;  rY   r  )rØ   rÒ   r=   r9   rB  r   r`  r9  rÅ   rÕ   rM  r;  rY   r  )r=   r9   rY   ry   )
rØ   rÒ   r=   r9   rD  zCallable[[ResponseType], None]rH  r:  rY   r  )rB  r   rp  r²  rY   r²  )
rØ   rÒ   r=   r9   rr   úgrpc.RpcMethodHandlerrp  r²  rY   úfutures.Future)
rØ   rÒ   r=   r9   r‹  rM   rŽ  r±  rY   r[   )rØ   rÒ   r”  r9   r  r8  rB   r  )
rØ   rÒ   r=   r9   rr   r<  rw  r²  rY   r=  )rØ   rÒ   r‹  rM   rŽ  r±  rw  r²  rž  ry   rY   z4Tuple[Optional[_RPCState], Optional[futures.Future]])r=   r©  rm   r3  rY   r  )r=   r©  rÈ  r¯  rY   r  )r=   r©  rÌ  r  rY   r¹  )r=   r©  rÌ  r  rÐ  r4  rY   r¹  )r=   r©  rY   r  )r=   r©  rJ   rg   rY   r  )r=   r©  rY   ry   )r=   r©  rç  rÒ   rY   ry   )r=   r©  r¤  r5  rY   r´  r2  )r  r1  rù   r{   rY   r1  )rw  r²  r  rÁ  r  r0  r  r1  r¸  r·  rù   r{   r  ry   rY   r  )‚Ú__doc__Ú
__future__r   r\   ÚcollectionsÚ
concurrentr   r‡   ÚenumÚloggingr‰   rß   r=  Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   r�   r   r   r   Úgrpc._cythonr   Úgrpc._typingr   r   r   r   r   r   r   r   r   Ú	getLoggerrF   r  rä  rÓ  r»   rÉ   rÀ   rY  rX  r¯   r®   r�   r¹   r¬   r§   rí  Ú_INF_TIMEOUTr.   r8   r>   r@   rC   Ú
namedtupleÚHandlerCallDetailsrE   ÚABCrM   r_   rj   Úobjectr9   r”   rš   rž   r¤   r©   r¶   r½   rÆ   rË   rÏ   ÚServicerContextrÑ   r  r7  rF  rI  rO  rS  rU  rZ  r\  rb  ri  r˜   rh  rq  rx  r{  r„  rˆ  r�  r–  rš  rŸ  ÚuniqueÚEnumr¡  r©  rÄ  rÉ  rÍ  rÑ  rÔ  rØ  rÜ  rß  rë  rô  rï  rÿ  r  r
  r  r  r  r7  rI   r/   r-   ú<module>rP     s›  ðñ 2å "ã 
Û Ý Û Û Û Û Û Û ÷÷ ÷ ó ó Ý Ý Ý Ý Ý 3Ý ,Ý .Ý %Ý ,Ý %Ý ,Ý *Ý .à
ˆ'×
Ñ
˜HÓ
%€à€Ø"Ð à!:Ð Ø6Ð Ø*Ð Ø$Ð à*ð .ð ";Ð à5ð 9ð 	€Ø
€Ø€
à€à%(Ð "Ø€ó7óMó
-ð-Øð-Ø-ð-àó-ó;ô
	Ø€K×ÑØð	
óð 	×Ñô
	ô	$ˆc�g‰gô 	$ô(˜ô (ô$�Wô ô, �ô  óFð	Øð	Ø ð	àó	ó#ðØðØ 6ðàóð$ØðØ 6ðàóðØðØ'ðØ/@ðØKPðà	óóD
#ðØðà
ðð :ðð ó	óB!óôwˆt×#Ñ#ô wôt<�vô <ð~&Øð&àð&ð :ð&ð ó	&ð^ HLð7Øð7àð7ð )ð7ð ð	7ð
 :ð7ð Eð7ð >ó7ðtØðàðð .ðð ó	ð<#Øð#àð#ð ð#ð 7ð	#ð
 ó#ð(Øðà!óó/ð
!7Øð!7Ø(1ð!7ØHMð!7à	ó!7ðH:Øð:àð:ð )ð:ð 
ó	:ð@#Øð#àð#ð )ð#ð &ð	#ð
 8ð#ð 7ð#ð 
ó#ð8.#Øð.#àð.#ð )ð.#ð &ð	.#ð
 :ð.#ð 7ð.#ð 
ó.#óbAðØðàðð ;ðð .ð	ð
 
óð$	#Ø(ð	#à3ð	#ð  ó	#ðØðàðð *ðð 4ð	ð
 óð0Øðàðð *ðð 4ð	ð
 óð0Øðàðð *ðð 4ð	ð
 óð0Øðàðð *ðð 4ð	ð
 óð0GØðGàðGð !ðGð Bð	Gð
 %óGð8Øðàðð ðð ó	ð,Øðàðð *ðð ,ð	ð
 óð@?Øð?à ð?ð Bð?ð ,ð	?ð
 ð?ð :ó?ðD ‡�ô�4—9‘9ó ó ðô-(�6ô -(ð`8Øð8Ø+Kð8à	ó8ðAØðAØ*JðAà	óAó4ð

Øð
àð
ð /ð
ð 	ó	
ó%ó'óó$ðDØðDØ 0ðDà	óDóNó)óó4ð 	Ø:ð	à	ó	ð4Ø/ð4à+ð4ð #ó4ôW2ˆd�k‰kô W2ðtØ+ðà:ðð 3ðð +ð	ð
 +ðð ,ðð 
ðð ôr/   