§
    Ìtºf´h ã                   óä  — d dl mZmZmZmZmZmZmZ d dlZd dl	Z	d dl
mZ d dlmZ d dlmZmZ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mZmZmZ d dlmZmZm Z m!Z!m"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d„ Z: G d„ de¦  «        Z;e G d„ de;¦  «        ¦   «         Z< G d„ de<¦  «        Z= ej>        e<¦  «          G d„ de?¦  «        Z@dS )é    )ÚUnionÚOptionalÚDictÚAnyÚClassVarÚListÚCallableN)Úreduce)Úwamp)ÚpublicÚIdGeneratorÚObservableMixin)Úuri)Úmessage)Útypes)Úrole)Ú	exception)ÚApplicationErrorÚProtocolErrorÚSerializationErrorÚTypeCheckError)ÚISessionÚIPayloadCodecÚIAuthenticatorÚ
ITransportÚIMessage)Ú	ChallengeÚSessionDetailsÚCloseDetailsÚEncodedPayloadÚSubscribeOptionsÚ
CallResultÚRegisterOptions)ÚPayloadExceededError)ÚPublicationÚSubscriptionÚHandlerÚRegistrationÚEndpointÚPublishRequestÚSubscribeRequestÚUnsubscribeRequestÚCallRequestÚInvocationRequestÚRegisterRequestÚUnregisterRequestc                 óR   — t          j        | ¦  «        pt          j        | ¦  «        S ©N)ÚinspectÚismethodÚ
isfunction)Úfs    úU/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/wamp/protocol.pyÚis_method_or_functionr8   ;   s#   € ÝÔ˜AÑÔÐ7¥'Ô"4°QÑ"7Ô"7Ð7ó    c                   óø  — e Zd ZdZdZd„ Zedee         fd„¦   «         Z	e
defd„¦   «         Ze
defd„¦   «         Zedee         fd„¦   «         Zedee         fd	„¦   «         Zedee         fd
„¦   «         Zedee         fd„¦   «         Zedee         fd„¦   «         Zedee         fd„¦   «         Zedee         fd„¦   «         Zedeeeef                  fd„¦   «         Zddedee         fd„Zdd„Zd„ ZdS )ÚBaseSessionzi
    WAMP session base class.

    This class implements :class:`autobahn.wamp.interfaces.ISession`.
    Nc                 ó¨  — t          j        ¦   «         | _        |                      g d¢¬¦  «         d| _        i | _        t          j        t          t          j	        t          i| _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        t(          j        | _        d | _        d | _        t3          ¦   «         | _        d S )N)ÚjoinÚleaveÚreadyÚconnectÚ
disconnect)Úvalid_eventsF)ÚtxaioÚmake_loggerÚlogÚset_valid_eventsÚtraceback_appÚ_ecls_to_uri_patr   ÚINVALID_PAYLOADr   ÚPAYLOAD_SIZE_EXCEEDEDr$   Ú_uri_to_eclsÚ
_transportÚ_realmÚ_session_idÚ_authidÚ	_authroleÚ_authmethodÚ_authproviderÚ
_authextrar   ÚDEFAULT_CLIENT_ROLESÚ_session_rolesÚ_session_detailsÚ_payload_codecr   Ú_request_id_gen©Úselfs    r7   Ú__init__zBaseSession.__init__G   sç   € ÝÔ$Ñ&Ô&ˆŒà×Òðð ð ð 	ñ 	
ô 	
ð 	
ð #ˆÔð DFˆÔõ Ô,Õ.@ÝÔ2Õ4Hð2
ˆÔð 15ˆŒð &*ˆŒØ*.ˆÔØ&*ˆŒØ(,ˆŒØ*.ˆÔØ,0ˆÔØ48ˆŒõ =AÔ<UˆÔð ;?ˆÔð 8<ˆÔõ  +™}œ}ˆÔÐÐr9   Úreturnc                 ó   — | j         S )zY
        Implements :func:`autobahn.wamp.interfaces.ITransportHandler.transport`
        )rL   rY   s    r7   Ú	transportzBaseSession.transportz   s   € ð ŒÐr9   c                 óF   — | j         duo| j                              ¦   «         S )zS
        Implements :func:`autobahn.wamp.interfaces.ISession.is_connected`
        N)rL   ÚisOpenrY   s    r7   Úis_connectedzBaseSession.is_connectedƒ   s$   € ð
 Œ dÐ*ÐG¨t¬×/EÒ/EÑ/GÔ/GÐGr9   c                 ó<   — | j         duo|                      ¦   «         S )zR
        Implements :func:`autobahn.wamp.interfaces.ISession.is_attached`
        N)rN   ra   rY   s    r7   Úis_attachedzBaseSession.is_attachedŠ   s#   € ð
 Ô tÐ+ÐC°×0AÒ0AÑ0CÔ0CÐCr9   c                 ó   — | j         S )zV
        Implements :func:`autobahn.wamp.interfaces.ISession.session_details`
        )rV   rY   s    r7   Úsession_detailszBaseSession.session_details‘   s   € ð
 Ô$Ð$r9   c                 ó   — | j         S r2   )rM   rY   s    r7   ÚrealmzBaseSession.realm˜   s
   € àŒ{Ðr9   c                 ó   — | j         S r2   )rN   rY   s    r7   Ú
session_idzBaseSession.session_idœ   ó   € àÔÐr9   c                 ó   — | j         S r2   )rO   rY   s    r7   ÚauthidzBaseSession.authid    ó
   € àŒ|Ðr9   c                 ó   — | j         S r2   )rP   rY   s    r7   ÚauthrolezBaseSession.authrole¤   s
   € àŒ~Ðr9   c                 ó   — | j         S r2   )rQ   rY   s    r7   Ú
authmethodzBaseSession.authmethod¨   rj   r9   c                 ó   — | j         S r2   )rR   rY   s    r7   ÚauthproviderzBaseSession.authprovider¬   s   € àÔ!Ð!r9   c                 ó   — | j         S r2   )rS   rY   s    r7   Ú	authextrazBaseSession.authextra°   s
   € àŒÐr9   r   Úerrorc                 ód  — |€Wt          |d¦  «        r8|j        | j        |<   || j        |j        d                              ¦   «         <   dS t          d¦  «        ‚t          |d¦  «        s9t	          j        |t          j        j        ¦  «        g| j        |<   || j        |<   dS t          d¦  «        ‚)zM
        Implements :func:`autobahn.wamp.interfaces.ISession.define`
        NÚ	_wampurisr   zNcannot define WAMP exception from class with no decoration ("_wampuris" unset)z\cannot define WAMP exception: error URI is explicit, but class is decorated ("_wampuris" set)Úhasattrrx   rH   rK   r   ÚRuntimeErrorÚPatternÚURI_TARGET_HANDLER)rZ   r   rv   s      r7   ÚdefinezBaseSession.define´   sÄ   € ð ˆ=Ý�y +Ñ.Ô.ð uØ3<Ô3F�Ô% iÑ0ØBK�Ô! )Ô"5°aÔ"8×"<Ò"<Ñ">Ô">Ñ?Ð?Ð?å"Ð#sÑtÔtÐtå˜9 kÑ2Ô2ð CÝ47´KÀÅsÄ{ÔGeÑ4fÔ4fÐ3g�Ô% iÑ0Ø+4�Ô! %Ñ(Ð(Ð(å"ð  $Bñ  Cô  Cð  Cr9   c           	      óh  — d}t          |d¦  «        rt          |j        ¦  «        }d}t          |d¦  «        r|j        }|r|r||d<   nd|i}t	          |t
          j        ¦  «        r,t          |j        ¦  «        t          k    r|j        n|j        }n.|j
        | j        v r| j        |j
                 d         j        }nd}d}	| j        r| j                             d|||¦  «        }	|	r0t          j        ||||	j        |	j        |	j        |	j        ¬¦  «        }
nt          j        |||||¦  «        }
|
S )	aÿ  
        Create a WAMP error message from an exception.

        :param request_type: The request type this WAMP error message is for.
        :type request_type: int

        :param request: The request ID this WAMP error message is for.
        :type request: int

        :param exc: The exception.
        :type exc: Instance of :class:`Exception` or subclass thereof.

        :param tb: Optional traceback. If present, it'll be included with the WAMP error message.
        :type tb: list or None
        NÚargsÚkwargsÚ	tracebackr   zwamp.error.runtime_errorF©ÚpayloadÚenc_algoÚenc_keyÚenc_serializer)ry   Úlistr   r€   Ú
isinstancer   r   Útyperv   ÚstrÚ	__class__rH   Ú_urirW   Úencoder   ÚErrorrƒ   r„   r…   r†   )rZ   Úrequest_typeÚrequestÚexcÚtbr„   r   r€   rv   Úencoded_payloadÚmsgs              r7   Ú_message_from_exceptionz#BaseSession._message_from_exceptionÅ   si  € ð  ˆÝ�3˜ÑÔð 	"Ý˜œ‘>”>ˆDàˆÝ�3˜Ñ!Ô!ð 	 Ø”ZˆFàð 	+Øð +Ø&(��{Ñ#Ð#à% rÐ*�å�c�9Ô5Ñ6Ô6ð 	3Ý!% c¤i¡¤µCÒ!7Ð!7�C”I�I¸S¼YˆEˆEàŒ} Ô 5Ð5Ð5ØÔ-¨c¬mÔ<¸QÔ?ÔD��à2�àˆØÔð 	UØ"Ô1×8Ò8¸ÀÀtÈVÑTÔTˆOàð 	(Ý”- Ø 'Ø %Ø(7Ô(?Ø)8Ô)AØ(7Ô(?Ø/>Ô/MðOñ Oô OˆCˆCõ ”- Ø 'Ø %Ø $Ø &ñ	(ô (ˆCð ˆ
r9   c                 óŒ  — d}d}|j         �rk| j        s?d}| j                             |¦  «         t	          t          j        ||j         ¬¦  «        }�n%	 t          |j        |j         |j        |j	        ¦  «        }| j         
                    d|j        |¦  «        \  }|_        |_        |j        |k    r\| j                             d||j        ¬¦  «         t	          t          j        d                     ||j        ¦  «        |j         ¬¦  «        }ng# t           $ rZ}| j                             d|¬	¦  «         t	          t          j        d
                     |¦  «        |j         ¬¦  «        }Y d}~nd}~ww xY w|r|S |j        | j        v rŸ| j        |j                 }	 |j        r(|j        r ||j        i |j        ¤Ž}n* |di |j        ¤Ž}n|j        r ||j        Ž }n
 |¦   «         }n@# t           $ r3 	 |                      t)          j        ¦   «         d¦  «         n#  Y nxY wY nw xY w|s�|j        rI|j        r%t-          j        |j        g|j        ¢R i |j        ¤Ž}nZt-          j        |j        fi |j        ¤Ž}n=|j        rt-          j        |j        g|j        ¢R Ž }nt-          j        |j        ¦  «        }t/          |d¦  «        r|j         |_         t/          |d¦  «        r|j        |_        t/          |d¦  «        r|j        |_        t/          |d¦  «        r|j        |_        t/          |d¦  «        r|j        |_        |S )zÀ
        Create a user (or generic) exception from a WAMP error message.

        :param msg: A WAMP error message.
        :type msg: instance of :class:`autobahn.wamp.message.Error`
        Nú5received encoded payload, but no payload codec active©r„   TzZURI within encrypted payload ('{decrypted_error}') does not match the envelope ('{error}'))Údecrypted_errorrv   úFURI within encrypted payload ('{}') does not match the envelope ('{}')ú.failed to decrypt application payload 1: {err}©Úerrú+failed to decrypt application payload 1: {}zWhile re-constructing exceptionr„   ÚcalleeÚcallee_authidÚcallee_authroleÚforward_for© )r„   rW   rE   Úwarnr   ÚENC_NO_PAYLOAD_CODECr    rƒ   r†   r…   Údecoderv   r   r€   ÚENC_TRUSTED_URI_MISMATCHÚformatÚ	ExceptionÚENC_DECRYPT_ERRORrK   ÚonUserErrorrC   Úcreate_failurer   ry   rŸ   r    r¡   r¢   )	rZ   r”   r‘   Úenc_errÚlog_msgr“   r™   ÚeÚeclss	            r7   Ú_exception_from_messagez#BaseSession._exception_from_message   sÐ  € ð ˆØˆàŒ<ñ 	àÔ&ð ØQ�Ø”—’˜gÑ&Ô&Ð&Ý*Õ+;Ô+PÐRYÐdgÔdpÐqÑqÔq�‘ðÝ&4°S´[À#Ä,ÐPSÔPbÐdgÔdoÑ&pÔ&p�OØ<@Ô<O×<VÒ<VÐW[Ð]`Ô]fÐhwÑ<xÔ<xÑ9�O S¤X¨s¬zð ”y OÒ3Ð3ØœŸšØxØ,;Ø"%¤)ð &ñ ô ð õ
 #3Ý,ÔEØd×kÒkÐl{ð  ~Aô  ~Gñ  Hô  HØ%(¤\ð#ñ #ô #˜øøõ !ð ð ð Ø”H—M’MÐ"RÐXY�MÑZÔZÐZÝ.Ý(Ô:ØE×LÒLÈQÑOÔOØ!$¤ðñ ô �G�G�G�G�G�Gøøøøðøøøð( ð 	ØˆNàŒ9˜Ô)Ð)Ð)ØÔ$ S¤YÔ/ˆDðð ”:ð 	%Ø”xð 1Ø"˜d C¤HÐ;°´
Ð;Ð;˜˜à"˜dÐ0Ð0 S¤ZÐ0Ð0˜˜à”xð %Ø"˜d C¤H˜o˜˜à"˜d™fœf˜øøÝð ð ð ðØ×$Ò$ÝÔ,Ñ.Ô.Ø9ñô ð ð øðØ�Døøøøøðøøøð ð 	@àŒzð 	@Ø”8ð NÝ#Ô4°S´YÐXÀÄÐXÐXÐXÈSÌZÐXÐX�C�Cå#Ô4°S´YÐMÐMÀ#Ä*ÐMÐM�C�Cà”8ð @Ý#Ô4°S´YÐJÀÄÐJÐJÐJ�C�Cå#Ô4°S´YÑ?Ô?�Cõ �3˜
Ñ#Ô#ð 	(Øœ<ˆCŒLÝ�3˜Ñ!Ô!ð 	$ØœˆCŒJÝ�3˜Ñ(Ô(ð 	2Ø #Ô 1ˆCÔÝ�3Ð)Ñ*Ô*ð 	6Ø"%Ô"5ˆCÔÝ�3˜Ñ&Ô&ð 	.Ø!œoˆCŒOàˆ
sE   ÁAD Ä
E5ÄAE0Å0E5ÆAG) Ç)
H&Ç4'HÈH&ÈH ÈH&È%H&r2   ©NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rE   r[   Úpropertyr   r   r^   r   Úboolra   rc   r   re   rŠ   rg   Úintri   rl   ro   rq   rs   r   r   ru   r©   r}   r•   r±   r£   r9   r7   r;   r;   ?   sv  € € € € € ðð ð
 €Cð1-ð 1-ð 1-ðf ð˜8 JÔ/ð ð ð ñ „Xðð ðH˜dð Hð Hð Hñ „VðHð ðD˜Tð Dð Dð Dñ „VðDð ð% ¨.Ô!9ð %ð %ð %ñ „Xð%ð ð�x ”}ð ð ð ñ „Xðð ð ˜H SœMð  ð  ð  ñ „Xð ð ð˜ œð ð ð ñ „Xðð ð˜( 3œ-ð ð ð ñ „Xðð ð ˜H SœMð  ð  ð  ñ „Xð ð ð"˜h sœmð "ð "ð "ñ „Xð"ð ð˜8 D¨¨c¨¤NÔ3ð ð ð ñ „XððCð C 	ð C°(¸3´-ð Cð Cð Cð Cð"9ð 9ð 9ð 9ðvbð bð bð bð br9   r;   c                   óR  — e Zd ZdZd6deej                 fd„Zedej        fd„¦   «         Z	e
dee         fd„¦   «         Ze
dee         fd	„¦   «         Ze
d
efd„¦   «         Ze
d„ ¦   «         Ze
	 	 	 	 	 	 	 d7dedeee                  dee         dee         deeeef                  dee         dee         dee         fd„¦   «         Ze
d„ ¦   «         Ze
d„ ¦   «         Zd„ Zd„ Zdefd„Ze
d„ ¦   «         Ze
dedefd„¦   «         Z e
de!fd „¦   «         Z"e
d!e#j$        dee         fd"„¦   «         Z%d#„ Z&e
de'fd$„¦   «         Z(e
d8d%ee         d&ee         fd'„¦   «         Z)e
d(„ ¦   «         Z*e
d)edee+         fd*„¦   «         Z,e
	 	 d9d+e-e.ef         d)ee         d,ee/         d-ee         de-e0ee0         f         f
d.„¦   «         Z1d/„ Z2e
d0ede-ee3f         fd1„¦   «         Z4e
	 	 	 d:d2e-e.ef         d0ee         d,ee5         d3ee         d-ee         de-e6ee6         f         fd4„¦   «         Z7d5„ Z8dS );ÚApplicationSessionzë
    WAMP application session for applications (networking framework agnostic parts).

    Implements (partially):

        * :class:`autobahn.wamp.interfaces.ITransportHandler`
        * :class:`autobahn.wamp.interfaces.ISession`
    NÚconfigc                 ó  — t                                | ¦  «         |pt          j        d¬¦  «        | _        d| _        d| _        d| _        i | _        i | _	        i | _
        i | _        i | _        i | _        i | _        i | _        i | _        dS )zF
        Implements :func:`autobahn.wamp.interfaces.ISession`
        Úrealm1©rg   FN)r;   r[   r   ÚComponentConfigÚ_configÚ_goodbye_sentÚ_transport_is_closingrW   Ú_publish_reqsÚ_subscribe_reqsÚ_unsubscribe_reqsÚ
_call_reqsÚ_register_reqsÚ_unregister_reqsÚ_subscriptionsÚ_registrationsÚ_invocations©rZ   r¼   s     r7   r[   zApplicationSession.__init__p  s¤   € õ 	×Ò˜TÑ"Ô"Ð"Ø.4Ð.]½Ô8MÐT\Ð8]Ñ8]Ô8]ˆŒð $)ˆÔØ+0ˆÔ"ð 8<ˆÔð  ˆÔØ!ˆÔØ!#ˆÔØˆŒØ ˆÔØ "ˆÔð !ˆÔð !ˆÔð ˆÔÐÐr9   r\   c                 ó   — | j         S r2   )rÁ   rY   s    r7   r¼   zApplicationSession.config�  rm   r9   Úpayload_codecc                 ó   — || _         dS )zX
        Implements :func:`autobahn.wamp.interfaces.ISession.set_payload_codec`
        N©rW   )rZ   rÏ   s     r7   Úset_payload_codecz$ApplicationSession.set_payload_codec“  s   € ð
 ,ˆÔÐÐr9   c                 ó   — | j         S )zX
        Implements :func:`autobahn.wamp.interfaces.ISession.get_payload_codec`
        rÑ   rY   s    r7   Úget_payload_codecz$ApplicationSession.get_payload_codecš  s   € ð
 Ô"Ð"r9   r^   c                 óò   ‡ — ‰ j                              d‰ j        |¬¦  «         |‰ _        ‰                      d‰ |¦  «        }t          j        |dˆ fd„¦  «         t          j        |ˆ fd„ˆ fd„¦  «         dS )zV
        Implements :func:`autobahn.wamp.interfaces.ITransportHandler.onOpen`
        z{func}(transport={transport}))Úfuncr^   r@   Nc                 ó0   •— ‰                      | d¦  «        S )NzWhile notifying 'connect'©Ú_swallow_error©ÚfailrZ   s    €r7   ú<lambda>z+ApplicationSession.onOpen.<locals>.<lambda>¯  ó   ø€ ˜×,Ò,¨TÐ3NÑOÔO€ r9   c                 ó6   •— t          j        ‰j        ¦  «        S r2   )rC   Ú	as_futureÚ	onConnect©Ú_rZ   s    €r7   rÜ   z+ApplicationSession.onOpen.<locals>.<lambda>³  s   ø€ •e”o d¤nÑ5Ô5€ r9   c                 ó0   •— ‰                      | d¦  «        S )NzWhile calling 'onConnect'rØ   rÚ   s    €r7   rÜ   z+ApplicationSession.onOpen.<locals>.<lambda>´  rÝ   r9   )rE   ÚdebugÚonOpenrL   ÚfirerC   Úadd_callbacks)rZ   r^   Úds   `  r7   rå   zApplicationSession.onOpen¡  s¥   ø€ ð
 	Œ�ŠÐ6¸T¼[ÐT]ˆÑ^Ô^Ð^ð $ˆŒð �IŠI�i  yÑ1Ô1ˆÝÔØˆtØOÐOÐOÐOñ	
ô 	
ð 	
õ 	ÔØØ5Ð5Ð5Ð5ØOÐOÐOÐOñ	
ô 	
ð 	
ð 	
ð 	
r9   c                 ó†   — | j                              d| j        ¬¦  «         |                      | j        j        ¦  «         dS )zP
        Implements :func:`autobahn.wamp.interfaces.ISession.onConnect`
        z{func}())rÖ   N)rE   rä   rà   r=   r¼   rg   rY   s    r7   rà   zApplicationSession.onConnect·  s;   € ð
 	Œ�Š�z¨¬ˆÑ7Ô7Ð7Ø�	Š	�$”+Ô#Ñ$Ô$Ð$Ð$Ð$r9   rg   Úauthmethodsrl   ro   ru   Ú	resumableÚresume_sessionÚresume_tokenc	                 óò   — | j         rt          d¦  «        ‚| j        st          d¦  «        ‚|| _        d| _        t          j        || j        |||||||¬¦	  «	        }	| j                             |	¦  «         dS )zK
        Implements :func:`autobahn.wamp.interfaces.ISession.join`
        zsession already joinedzno transport set for sessionF)	rg   Úrolesrê   rl   ro   ru   rë   rì   rí   N)	rN   r©   rL   rM   rÂ   r   ÚHellorU   Úsend)
rZ   rg   rê   rl   ro   ru   rë   rì   rí   r”   s
             r7   r=   zApplicationSession.join¿  s�   € ð Ôð 	6ÝÐ4Ñ5Ô5Ð5àŒð 	<ÝÐ:Ñ;Ô;Ð;ð ˆŒð #ˆÔõ Œm %Ø"&Ô"5Ø(3Ø#)Ø%-Ø&/Ø&/Ø+9Ø)5ð7ñ 7ô 7ˆð 	Œ×Ò˜SÑ!Ô!Ð!Ð!Ð!r9   c                 óJ   — | j         r| j                              ¦   «          dS dS )zQ
        Implements :func:`autobahn.wamp.interfaces.ISession.disconnect`
        N)rL   ÚcloserY   s    r7   rA   zApplicationSession.disconnectå  s2   € ð
 Œ?ð 	$ØŒO×!Ò!Ñ#Ô#Ð#Ð#Ð#ð	$ð 	$r9   c                 óX  — t          |d¦  «        r_t          |j        t          j        ¦  «        r@| j                             d| j        j        |j         	                    ¦   «         ¬¦  «         dS | j         
                    d| j        j        |t          j        |¦  «        ¬¦  «         dS )zR
        Implements :func:`autobahn.wamp.interfaces.ISession.onUserError`
        Úvaluez{klass}.onUserError(): "{msg}")Úklassr”   z*{klass}.onUserError(): "{msg}"
{traceback})rö   r”   r�   N)ry   rˆ   rõ   r   r   rE   r¤   r‹   r³   Úerror_messagerv   rC   Úfailure_format_traceback©rZ   rÛ   r”   s      r7   r«   zApplicationSession.onUserErrorí  s´   € õ
 �4˜Ñ!Ô!ð 
	¥j°´½YÔ=WÑ&XÔ&Xð 
	ØŒH�MŠMÐ:Ø $¤Ô 7Ø"œj×6Ò6Ñ8Ô8ð ñ :ô :ð :ð :ð :ð ŒH�NŠNØ=Ø”nÔ-ØÝÔ8¸Ñ>Ô>ð	 ñ ô ð ð ð r9   c                 óÔ   — 	 |                       ||¦  «         nO# t          $ rB | j                             dt	          j        t	          j        ¦   «         ¦  «        ¬¦  «         Y nw xY wdS )a˜  
        This is an internal generic error-handler for errors encountered
        when calling down to on*() handlers that can reasonably be
        expected to be overridden in user code.

        Note that it *cancels* the error, so use with care!

        Specifically, this should *never* be added to the errback
        chain for a Deferred/coroutine that will make it out to user
        code.
        zInternal error: {tb})r’   N)r«   r©   rE   rv   rC   rø   r¬   rù   s      r7   rÙ   z!ApplicationSession._swallow_errorþ  sƒ   € ð	Ø×Ò˜T 3Ñ'Ô'Ð'Ð'øÝð 	ð 	ð 	ØŒH�NŠNØ&ÝÔ1µ%Ô2FÑ2HÔ2HÑIÔIð ñ ô ð ð ð ð	øøøð
 ˆts   ‚ ™A	A%Á$A%c                 ó   ‡— ˆfd„}|S )zŸ
        Does parameter type checking and validation against type hints
        and appropriately tells the user code and the caller (through router).
        c               Ÿ   óÆ  •K  — t          j        ‰g| ¢R i |¤Ž}g }‰j                             ¦   «         D ]ï\  }}||v ræt	          |dd ¦  «        t
          k    rod„ |j        D ¦   «         }t          ||         |j        ¦  «        sB|                     d 	                    ||t          ||         ¦  «        j        ¦  «        ¦  «         Œ’t          ||         |¦  «        sG|                     d 	                    ||j        t          ||         ¦  «        j        ¦  «        ¦  «         Œð|r"t          d                     |¦  «        ¦  «        ‚t          j        ‰g| ¢R i |¤Žƒ d {V —†S )NÚ
__origin__c                 ó   — g | ]	}|j         ‘Œ
S r£   )r³   )Ú.0Úargs     r7   ú
<listcomp>zFApplicationSession.type_check.<locals>._type_check.<locals>.<listcomp>!  s   € Ð)PÐ)PÐ)P¸3¨#¬,Ð)PÐ)PÐ)Pr9   z'{}' expected types={} got={}z'{}' expected type={} got={}z, )r3   ÚgetcallargsÚ__annotations__ÚitemsÚgetattrr   Ú__args__rˆ   Úappendr¨   r‰   r³   r   r=   rC   rß   )r   r€   Ú	argumentsÚresponseÚnameÚkindÚexpected_typesrÖ   s          €r7   Ú_type_checkz2ApplicationSession.type_check.<locals>._type_check  s™  øè è € åÔ+¨DÐB°4ÐBÐBÐB¸6ÐBÐBˆIØˆHØ"Ô2×8Ò8Ñ:Ô:ð xð x‘
��dØ˜9Ð$Ð$õ ˜t \°4Ñ8Ô8½EÒAÐAØ)PÐ)PÀ$Ä-Ð)PÑ)PÔ)P˜Ý)¨)°D¬/¸4¼=ÑIÔIð hØ$ŸOšOØ ?× FÒ FÀtÈ^ÝGKÈIÐVZÌOÑG\ÔG\ÔGeñ!gô !gñhô hð høõ (¨	°$¬¸Ñ>Ô>ð xØ ŸšØ:×AÒAÀ$ÈÌÕW[Ð\eÐfjÔ\kÑWlÔWlÔWuÑvÔvñxô xð xøàð :Ý$ T§Y¢Y¨xÑ%8Ô%8Ñ9Ô9Ð9Ýœ¨Ð?°Ð?Ð?Ð?¸Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?r9   r£   )rZ   rÖ   r  s    ` r7   Ú
type_checkzApplicationSession.type_check  s)   ø€ ð
	@ð 	@ð 	@ð 	@ð 	@ð* Ðr9   r”   c                 óÊ(  ‡ ‡‡"‡#‡$‡%— ‰ j         �€it          ‰t          j        ¦  «        r=t	          j        ‰ j        ‰¦  «        }ˆˆ fd„}ˆ fd„}t	          j        |||¦  «         dS t          ‰t          j        ¦  «        r\t          j
        ‰j        ‰j        ¦  «        Š"t	          j        ‰ j        ‰"¦  «        }ˆ"ˆ fd„}ˆ fd„}t	          j        |||¦  «         dS t          ‰t          j        ¦  «        r[t          j        ‰j        ‰j        ¦  «        }t	          j        ‰ j        |¦  «        }ˆ fd„}ˆ fd„}t	          j        |||¦  «         dS t#          d                     ‰j        ¦  «        ¦  «        ‚t          ‰t          j        ¦  «        r˜‰ j        s-t          j        ¦   «         }‰ j                             |¦  «         d‰ _         t          j
        ‰j        ‰j        ¦  «        Š"t	          j        ‰ j        ‰"¦  «        }ˆ"ˆ fd	„}ˆˆ fd
„}t	          j        |||¦  «         dS t          ‰t          j        ¦  «        �r/‰j        ‰ j        v �rù‰ j        ‰j                 D �]ã}|j        Š#‰j        p|j        }	‰j        rÛ‰ j        s$‰ j                              d‰j        ¬¦  «          dS 	 tC          ‰j"        ‰j        ‰j#        ‰j$        ¦  «        }
‰ j         %                    d|	|
¦  «        \  }‰_&        ‰_'        |	|k    r‰ j                              d¦  «          dS n;# tP          $ r.}‰ j                              d|‰j        ¬¦  «         Y d}~ dS d}~ww xY w‰#j)        r‰#j)        fntU          ¦   «         }‰j&        r|tU          ‰j&        ¦  «        z   }‰j'        r‰j'        ntW          ¦   «         }‰#j,        rNt          j-        |‰j.        ‰j/        ‰j0        ‰j1        |	‰j2        ‰j3        ‰j        ‰j4        ¬¦
  «
        |‰#j,        <   ˆˆ fd„}ˆ#ˆˆ fd„}t	          j        ‰#j5        g|¢R i |¤Ž}t	          j        |||¦  «         �ŒådS t#          d                     ‰j        ¦  «        ¦  «        ‚t          ‰t          j6        ¦  «        r¿‰j7        ‰ j8        v rŠ‰ j8         9                    ‰j7        ¦  «        }t	          j:        |j;        ¦  «        rt	          j<        |j;        ¦  «        rdS t{          ‰j.        |j>        ¬¦  «        }t	          j?        |j;        |¦  «         dS t#          d                     ‰j7        ¦  «        ¦  «        ‚t          ‰t          j@        ¦  «        �r‰j7        ‰ jA        v rÒ‰ jA         9                    ‰j7        ¦  «        }t	          j:        |j;        ¦  «        rt	          j<        |j;        ¦  «        rdS ‰j        ‰ j        vrg ‰ j        ‰j        <   t…          ‰j        |j        ‰ |j        ¦  «        }‰ j        ‰j                  C                    |¦  «         t	          j?        |j;        |¦  «         dS t#          d                     ‰j7        ¦  «        ¦  «        ‚t          ‰t          jD        ¦  «        rÛ‰j7        ‰ jE        v r¦‰ jE         9                    ‰j7        ¦  «        }t	          j:        |j;        ¦  «        rt	          j<        |j;        ¦  «        rdS |jF        ‰ j        v r)‰ j        |jF                 D ]	}d|_G        Œ
‰ j        |jF        = t	          j?        |j;        d¦  «         dS t#          d                     ‰j7        ¦  «        ¦  «        ‚t          ‰t          jH        ¦  «        �r	‰j7        ‰ jI        v �rÓ‰ jI        ‰j7                 }|jJ        Š$d}‰j        �rB‰ j        s8d}‰ j                              |¦  «         t—          t–          jL        |¦  «        }�n	 tC          ‰j"        ‰j        ‰j#        ‰j$        ¦  «        }
‰ j         %                    d‰$|
¦  «        \  }‰_&        ‰_'        ‰$|k    rK‰ j                              d|‰$¬¦  «         t—          t–          jM        d                     |‰$¦  «        ¦  «        }n`# tP          $ rS}‰ j                              d|¬ ¦  «         t—          t–          jN        d!                     |¦  «        ¦  «        }Y d}~nd}~ww xY w‰jO        ró|jP        jQ        rå|r‰  R                    |d"¦  «         dS ‰j'        ptW          ¦   «         }‰j&        ptU          ¦   «         }ˆ fd#„}|jP        r^|jP        jS        rRt	          j        |jP        jQ        t          jT        ‰j&        ‰jU        ‰jV        ‰jW        ‰j4        d$œ‰j'        ¤Ž¦  «        }nt	          j        |jP        jQ        g|¢R i |¤Ž}t	          j        |d|¦  «         dS dS ‰ jI        ‰j7        = |j;        }t	          j:        |¦  «        rt	          j<        |¦  «        rdS |rt	          jX        ||¦  «         dS ‰j'        s|jP        r�|jP        jS        r�‰j'        pi }‰j&        r0t          jT        ‰j&        ‰jU        ‰jV        ‰jW        ‰j4        d$œ|¤Ž}n*t          jT        d<‰jU        ‰jV        ‰jW        ‰j4        d$œ|¤Ž}t	          j?        ||¦  «         dS ‰j&        rdt³          ‰j&        ¦  «        d%k    r*t          jT        ‰j&        Ž }t	          j?        ||¦  «         dS t	          j?        |‰j&        d         ¦  «         dS t	          j?        |d¦  «         dS t#          d&                     ‰j7        ¦  «        ¦  «        ‚t          ‰t          jZ        ¦  «        �r6‰j7        ‰ j[        v r't#          d'                     ‰j7        ¦  «        ¦  «        ‚‰j\        ‰ j]        vr't#          d(                     ‰j\        ¦  «        ¦  «        ‚‰ j]        ‰j\                 Š%‰%j^        }‰jJ        p‰%jJ        Š$d}‰j        �rB‰ j        s8d)}‰ j                              |¦  «         t—          t–          jL        |¦  «        }�n	 tC          ‰j"        ‰j        ‰j#        ‰j$        ¦  «        }
‰ j         %                    d‰$|
¦  «        \  }‰_&        ‰_'        ‰$|k    rK‰ j                              d*|‰$¬¦  «         t—          t–          jM        d+                     |‰$¦  «        ¦  «        }n`# tP          $ rS}‰ j                              d,|¬ ¦  «         t—          t–          jN        d-                     |¦  «        ¦  «        }Y d}~nd}~ww xY w|rG‰  _                    t          jZ        j`        ‰j7        |¦  «        }‰ j                             |¦  «         dS |j)        �	|j)        f}ntU          ¦   «         }‰j&        r|tU          ‰j&        ¦  «        z   }‰j'        r‰j'        ntW          ¦   «         }|j,        rN‰ja        rˆˆ$ˆ fd.„}nd}t          jb        ‰%|‰jc        ‰jd        ‰je        ‰$‰j2        ‰j        ¬/¦  «        ||j,        <   t	          j        |j5        g|¢R i |¤Ž}ˆˆ$ˆ%ˆ fd0„}ˆˆ%ˆ fd1„}tÍ          ‰j7        |¦  «        ‰ j[        ‰j7        <   t	          j        |||¦  «         dS t          ‰t          jg        ¦  «        r^‰j7        ‰ j[        vr#‰ j         h                    d2‰j7        ¬3¦  «         dS ‰ j[        ‰j7                 } t	          ji        | j;        ¦  «         dS t          ‰t          jj        ¦  «        �r
‰j7        ‰ jk        v rÕ‰ jk         9                    ‰j7        ¦  «        }t	          j:        |j;        ¦  «        rt	          j<        |j;        ¦  «        rdS ‰j\        ‰ j]        vr1tÙ          ‰ ‰j\        |jJ        |j^        ¦  «        Š%‰%‰ j]        ‰j\        <   n't#          d4                     ‰j\        ¦  «        ¦  «        ‚t	          j?        |j;        ‰%¦  «         dS t#          d5                     ‰j7        ¦  «        ¦  «        ‚t          ‰t          jm        ¦  «        �rR‰j7        dk    rr	 ‰ j]        ‰j\                 }!n5# tÜ          $ r( t#          d6                     ‰j\        ¦  «        ¦  «        ‚w xY w‰ j         h                    d7|!jJ        ‰j\        ¬8¦  «         dS ‰j7        ‰ jo        v r ‰ jo         9                    ‰j7        ¦  «        }t	          j:        |j;        ¦  «        rt	          j<        |j;        ¦  «        rdS |jp        ‰ j]        v r$d‰ j]        |jp                 _G        ‰ j]        |jp        = t	          j?        |j;        ¦  «         dS t#          d9                     ‰j7        ¦  «        ¦  «        ‚t          ‰t          jq        ¦  «        �r@d}‰jr        t          js        j`        k    r4‰j7        ‰ jI        v r&‰ jI         9                    ‰j7        ¦  «        j;        }�n�‰jr        t          jt        j`        k    r4‰j7        ‰ j8        v r&‰ j8         9                    ‰j7        ¦  «        j;        }�n3‰jr        t          ju        j`        k    r3‰j7        ‰ jA        v r%‰ jA         9                    ‰j7        ¦  «        j;        }næ‰jr        t          jv        j`        k    r3‰j7        ‰ jE        v r%‰ jE         9                    ‰j7        ¦  «        j;        }n™‰jr        t          jw        j`        k    r3‰j7        ‰ jk        v r%‰ jk         9                    ‰j7        ¦  «        j;        }nL‰jr        t          jx        j`        k    r2‰j7        ‰ jo        v r$‰ jo         9                    ‰j7        ¦  «        j;        }|r@t	          j<        |¦  «        s*t	          jX        |‰  y                    ‰¦  «        ¦  «         dS dS t#          d:                     ‰jr        ‰j7        ¦  «        ¦  «        ‚t#          d;                     ‰j        ¦  «        ¦  «        ‚)=zY
        Implements :func:`autobahn.wamp.interfaces.ITransportHandler.onMessage`
        Nc                 ó„  •— | �`‰j                              d| ¬¦  «         t          j        dd                     | ¦  «        ¦  «        }‰j                             |¦  «         d S ‰j        r‰j        ‰_        ‰j	        ‰_
        ‰j        ‰_        ‰j        ‰_        ‰j        ‰_        ‰j        ‰_        ‰j        ‰_        ‰j        ‰_        t/          ‰j        ‰j
        ‰j        ‰j        ‰j        ‰j        ‰j        ‰j        j        j        ‰j        j        ddd ¬¦  «        ‰_        ‰                     d‰‰j        ¦  «        }t;          j        |d ˆfd„¦  «         t;          j        |ˆfd	„d ¦  «         t;          j        |d ˆfd
„¦  «         t;          j        |ˆfd„d ¦  «         t;          j        |d ˆfd„¦  «         d S )Nz"Session denied by onWelcome: {res})Úresúwamp.error.cannot_authenticateú{0}F)rg   Úsessionrl   ro   rq   rs   ru   Ú
serializerr^   Úresumedrë   rí   r=   c                 ó0   •— ‰                      | d¦  «        S )NzWhile notifying 'join'rØ   ©r¯   rZ   s    €r7   rÜ   z?ApplicationSession.onMessage.<locals>.success.<locals>.<lambda>n  s   ø€  $×"5Ò"5°aÐ9QÑ"RÔ"R€ r9   c                 óB   •— t          j        ‰j        ‰j        ¦  «        S r2   )rC   rß   ÚonJoinrV   rá   s    €r7   rÜ   z?ApplicationSession.onMessage.<locals>.success.<locals>.<lambda>s  s   ø€ ¥%¤/°$´+¸tÔ?TÑ"UÔ"U€ r9   c                 ó0   •— ‰                      | d¦  «        S )NzWhile firing onJoinrØ   r  s    €r7   rÜ   z?ApplicationSession.onMessage.<locals>.success.<locals>.<lambda>y  s   ø€  $×"5Ò"5°aÐ9NÑ"OÔ"O€ r9   c                 ó0   •— ‰                      d‰¦  «        S )Nr?   ©ræ   rá   s    €r7   rÜ   z?ApplicationSession.onMessage.<locals>.success.<locals>.<lambda>~  s   ø€  $§)¢)¨G°TÑ":Ô":€ r9   c                 ó0   •— ‰                      | d¦  «        S )NzWhile notifying 'ready'rØ   r  s    €r7   rÜ   z?ApplicationSession.onMessage.<locals>.success.<locals>.<lambda>„  s   ø€  $×"5Ò"5°aÐ9RÑ"SÔ"S€ r9   )rE   rä   r   ÚAbortr¨   rL   rñ   rg   rM   r  rN   rl   rO   ro   rP   rq   rQ   rs   rR   ru   rS   rï   Ú_router_rolesr   Ú_serializerÚSERIALIZER_IDÚtransport_detailsrV   ræ   rC   rç   )r  Úreplyrè   r”   rZ   s      €€r7   Úsuccessz-ApplicationSession.onMessage.<locals>.successA  sÿ  ø€ Ø�ØœŸšÐ'KÐQT˜ÑUÔUÐUÝ '¤Ø<¸e¿lºlÈ3Ñ>OÔ>Oñ!ô !˜ð œ×,Ò,¨UÑ3Ô3Ð3Ø˜à”yð 0Ø&)¤i˜œØ'*¤{�DÔ$Ø#&¤:�D”LØ%(¤\�D”NØ'*¤~�DÔ$Ø),Ô)9�DÔ&Ø&)¤m�D”OØ),¬�DÔ&å,:Ø"œkØ $Ô 0Ø#œ|Ø!%¤Ø#'Ô#3Ø%)Ô%7Ø"%¤-Ø#'¤?Ô#>Ô#LØ"&¤/Ô"Cà %Ø"'Ø%)ð-ñ -ô -�DÔ)ð* Ÿ	š	 &¨$°Ô0EÑFÔF�Aõ Ô'Ø˜4ØRÐRÐRÐRñô ð õ
 Ô'ØØUÐUÐUÐUØñô ð õ Ô'Ø˜4ØOÐOÐOÐOñô ð õ
 Ô'ØØ:Ð:Ð:Ð:Øñô ð õ Ô'Ø˜4ØSÐSÐSÐSñô ð ð ð r9   c                 óŽ   •— t          j        dd¦  «        }‰j                             |¦  «         ‰                     | d¦  «        S )Nr  zError calling onWelcome handlerzWhile firing onWelcome)r   r  rL   rñ   rÙ   )r¯   r$  rZ   s     €r7   rv   z+ApplicationSession.onMessage.<locals>.error‡  sI   ø€ Ý#œMØ8Ð:[ñô �Eð ”O×(Ò(¨Ñ/Ô/Ð/Ø×.Ò.¨qÐ2JÑKÔKÐKr9   c                 óx   •‡ — ‰                      d‰‰¦  «        }ˆ fd„}ˆfd„}t          j        |||¦  «         |S )Nr>   c                 ó   •— ‰S r2   r£   )râ   r   s    €r7   Ú
return_argzAApplicationSession.onMessage.<locals>.success.<locals>.return_arg˜  s   ø€ Ø"˜
r9   c                 ó0   •— ‰                      | d¦  «        S )NzWhile firing 'leave' eventrØ   r  s    €r7   Ú_errorz=ApplicationSession.onMessage.<locals>.success.<locals>._error›  s   ø€ Ø#×2Ò2°1Ð6RÑSÔSÐSr9   )ræ   rC   rç   )r   rè   r)  r+  ÚdetailsrZ   s   `   €€r7   r%  z-ApplicationSession.onMessage.<locals>.success”  sj   øø€ àŸ	š	 '¨4°Ñ9Ô9�Að#ð #ð #ð #ð #ðTð Tð Tð Tð TåÔ'¨¨:°vÑ>Ô>Ð>Ø�Hr9   c                 ó0   •— ‰                      | d¦  «        S ©NzWhile firing onLeaverØ   r  s    €r7   r+  z,ApplicationSession.onMessage.<locals>._error   s   ø€ Ø×.Ò.¨qÐ2HÑIÔIÐIr9   c                 ón  •— | €t          d¦  «        ‚t          | ¦  «        t          k    r|                      d¦  «        } t          | ¦  «        t          k    r/t          d                     t          | ¦  «        ¦  «        ¦  «        ‚t          j        | ¦  «        }‰j         	                    |¦  «         d S )Nz4onChallenge user callback did not return a signatureÚutf8z"signature must be unicode (was {}))
r©   r‰   Úbytesr¦   rŠ   r¨   r   ÚAuthenticaterL   rñ   )Ú	signaturer$  rZ   s     €r7   r%  z-ApplicationSession.onMessage.<locals>.success©  s    ø€ Ø Ð(Ý'Ð(^Ñ_Ô_Ð_Ý˜I‘”­%Ò/Ð/Ø$-×$4Ò$4°VÑ$<Ô$<˜	Ý˜I‘”­#Ò-Ð-Ý'Ð(L×(SÒ(SÕTXÐYbÑTcÔTcÑ(dÔ(dÑeÔeÐeÝ#Ô0°Ñ;Ô;�EØ”O×(Ò(¨Ñ/Ô/Ð/Ð/Ð/r9   c                 óx  •‡— ‰                      | d¦  «         t          j        dd                     | j        ¦  «        ¦  «        }‰j                             |¦  «         t          j        |j	        |j        ¦  «        Št          j        ‰j        ‰¦  «        }ˆˆfd„}ˆfd„}t          j        |||¦  «         |S )NzAuthentication failedr  r  c                 ó6   •— ‰                      d‰‰¦  «         | S ©Nr>   r  ©r   r,  rZ   s    €€r7   r%  z<ApplicationSession.onMessage.<locals>.error.<locals>.success»  s   ø€ àŸ	š	 '¨4°Ñ9Ô9Ð9Ø"˜
r9   c                 ó0   •— ‰                      | d¦  «        S r.  rØ   r  s    €r7   r+  z;ApplicationSession.onMessage.<locals>.error.<locals>._errorÀ  s   ø€ Ø#×2Ò2°1Ð6LÑMÔMÐMr9   )r«   r   r  r¨   rõ   rL   rñ   r   r   ÚreasonrC   rß   ÚonLeaverç   )r�   r$  rè   r%  r+  r,  rZ   s        @€r7   rv   z+ApplicationSession.onMessage.<locals>.error³  sÔ   øø€ Ø×$Ò$ SÐ*AÑBÔBÐBÝ#œMÐ*JÈEÏLÊLÐY\ÔYbÑLcÔLcÑdÔd�EØ”O×(Ò(¨Ñ/Ô/Ð/å#Ô0°´¸u¼}ÑMÔM�GÝœ¨¬°gÑ>Ô>�Að#ð #ð #ð #ð #ð #ð
Nð Nð Nð Nð NåÔ'¨¨7°FÑ;Ô;Ð;ð �Hr9   z8Received {0} message, and session is not yet establishedc                 ó6   •— ‰                      d‰‰¦  «         | S r6  r  r7  s    €€r7   r%  z-ApplicationSession.onMessage.<locals>.successÚ  s   ø€ à—I’I˜g t¨WÑ5Ô5Ð5Ø�Jr9   c                 óp   •— d                      ‰j        ‰j        ¦  «        }‰                     | |¦  «        S )Nz7While firing onLeave for reason "{0}" and message "{1}")r¨   r9  r   rÙ   )r¯   Úerrmsgr”   rZ   s     €€r7   r+  z,ApplicationSession.onMessage.<locals>._errorß  s6   ø€ ØV×]Ò]Ð^aÔ^hÐjmÔjuÑvÔv�FØ×.Ò.¨q°&Ñ9Ô9Ð9r9   zjreceived encoded payload with enc_algo={enc_algo}, but no payload codec active - ignoring encoded payload!r˜   Fz-envelope topic URI does not match encoded onezNfailed to decode application payload encoded with enc_algo={enc_algo}: {error})rv   r„   )Ú	publisherÚpublisher_authidÚpublisher_authroleÚtopicÚtransaction_hashÚretainedr„   r¢   c                 óî   •— ‰j         rj‰j        d         j        rZ‰j        r5t	          j        ‰j        ¦  «        }‰j                             |¦  «         d S ‰j         	                    d¦  «         d S d S d S )NÚbrokerz}successfully processed event with acknowledged delivery, but could not send ACK, since the transport was lost in the meantime)
Úx_acknowledged_deliveryr   Úx_acknowledged_event_deliveryrL   r   ÚEventReceivedÚpublicationrñ   rE   r¤   )râ   r	  r”   rZ   s     €€r7   Ú_successz.ApplicationSession.onMessage.<locals>._success  s£   ø€ ð  #Ô:ð s¸tÔ?QÐRZÔ?[Ô?yð sØ#'¤?ð !sÝ/6Ô/DÀSÄ_Ñ/UÔ/U HØ$(¤O×$8Ò$8¸Ñ$BÔ$BÐ$BÐ$BÐ$Bà$(¤H§M¢Mð  3rñ  %sô  %sð  %sð  %sð  %sðsð sð sð sr9   c                 óp   •— d                      ‰j        ‰j        ¦  «        }‰                     | |¦  «        S )Nz&While firing {0} subscribed under {1}.)r¨   ÚfnÚsubscriptionrÙ   )r¯   r=  Úhandlerr”   rZ   s     €€€r7   r+  z,ApplicationSession.onMessage.<locals>._error  s8   ø€ Ø%M×%TÒ%TØ '¤
¨CÔ,<ñ&>ô &>˜Fà#'×#6Ò#6°q¸&Ñ#AÔ#AÐAr9   z5EVENT received for non-subscribed subscription ID {0}©Úwas_encryptedz1PUBLISHED received for non-pending request ID {0}z2SUBSCRIBED received for non-pending request ID {0}r   z4UNSUBSCRIBED received for non-pending request ID {0}r—   TzXURI within encrypted payload ('{decrypted_proc}') does not match the envelope ('{proc}'))Údecrypted_procÚprocrš   r›   rœ   rž   zLcould not deliver progressive call result, because payload decryption failedc                 ó4   •— ‰                      | d¦  «         d S )NzWhile firing on_progress)r«   rÚ   s    €r7   r+  z,ApplicationSession.onMessage.<locals>._error�  s    ø€ Ø$(×$4Ò$4°TÐ;UÑ$VÔ$VÐ$VÐ$VÐ$Vr9   )rŸ   r    r¡   r¢   é   z.RESULT received for non-pending request ID {0}z6INVOCATION received for request ID {0} already invokedz:INVOCATION received for non-registered registration ID {0}z<received encrypted INVOCATION payload, but no keyring activezcURI within encrypted INVOCATION payload ('{decrypted_proc}') does not match the envelope ('{proc}')zQURI within encrypted INVOCATION payload ('{}') does not match the envelope ('{}')z+failed to decrypt INVOCATION payload: {err}z(failed to decrypt INVOCATION payload: {}c                  óÔ  •— | �t          | ¦  «        t          t          fv sJ ‚|�t          |¦  «        t          k    sJ ‚d }‰j        r3‰j        st          d¦  «        ‚‰j                             d‰| |¦  «        }|r4t          j	        ‰j
        |j        d|j        |j        |j        ¬¦  «        }nt          j	        ‰j
        | |d¬¦  «        }‰j                             |¦  «         d S )Nú7trying to send encrypted payload, but no keyring activeFT)rƒ   Úprogressr„   r…   r†   )r   r€   rW  )r‰   r‡   ÚtupleÚdictr„   rW   r©   r�   r   ÚYieldr�   rƒ   r…   r†   rL   rñ   )r   r€   r“   Úprogress_msgr”   rR  rZ   s       €€€r7   rW  z.ApplicationSession.onMessage.<locals>.progress  s  ø€ Ø/3¨|½tÀD¹z¼zÍdÕTYÈ]Ð?ZÐ?ZÐ?ZÐ?ZØ/5¨~ÅÀfÁÄÕQUÒAUÐAUÐAUÐAUà:>¨Ø+.¬<ð )tØ37Ô3Fð -{Ý6?Ð@yÑ6zÔ6zÐ0zØ>BÔ>Q×>XÒ>XÐY^Ð`dÐfjÐlrÑ>sÔ>s¨Oà+:ð )XÝ;B¼=ÈÌØQ`ÔQhØRVØRaÔRjØQ`ÔQhØXgÔXvð<xñ <xô <x¨L¨Lõ <C¼=ÈÌØNRØPVØRVð<Xñ <Xô <X¨Lð
 )-¬×(<Ò(<¸\Ñ(JÔ(JÐ(JÐ(JÐ(Jr9   )rW  ÚcallerÚcaller_authidÚcaller_authroleÚ	procedurerB  r„   c                 ó¨  •— ‰	j         ‰j        = d }‰j        r¸‰	j        sd}‰	j                             |¦  «         n”	 t          | t          j        ¦  «        r(‰	j         	                    d‰| j
        | j        ¦  «        }n‰	j         	                    d‰| g¦  «        }n3# t          $ r&}‰	j                             d|¬¦  «         Y d }~nd }~ww xY w|r˜t          | t          j        ¦  «        rKt          j        ‰j        |j        |j        |j        |j        | j        | j        | j        | j        ¬¦	  «	        }n¨t          j        ‰j        |j        |j        |j        |j        ¬¦  «        }nut          | t          j        ¦  «        r?t          j        ‰j        | j
        | j        | j        | j        | j        | j        ¬¦  «        }nt          j        ‰j        | g¬¦  «        }‰	j        €:‰	j                             d	                     ‰j        ‰j        ¦  «        ¦  «         d S 	 ‰	j                             |¦  «         d S # t6          $ r�}t          j        t          j        j        ‰j        t>          j         d
                     |j!        |j"        ‰j        |¦  «        g¬¦  «        }‰	j                             |¦  «         Y d }~d S d }~wtF          $ r�}t          j        t          j        j        ‰j        t>          j$        d                     |j!        |j"        ‰j        |¦  «        g¬¦  «        }‰	j                             |¦  «         Y d }~d S d }~ww xY w)NrV  Fz,failed to encrypt application payload: {err}rœ   )rƒ   r„   r…   r†   rŸ   r    r¡   r¢   r‚   )r   r€   rŸ   r    r¡   r¢   ©r   zCSkipping result of "{}", request {} because transport disconnected.zasuccess return value (args={}, kwargs={}) from invoked procedure "{}" could not be serialized: {}zfsuccess return value (args={}, kwargs={}) from invoked procedure "{}" exceeds transport size limit: {})%rÌ   r�   r„   rW   rE   r¤   rˆ   r   r"   r�   ÚresultsÚ	kwresultsr©   r   rZ  rƒ   r…   r†   rŸ   r    r¡   r¢   rL   rä   r¨   r_  rñ   r   rŽ   Ú
InvocationÚMESSAGE_TYPEr   rI   r   r€   r$   rJ   )
r  r“   r®   r¯   r$  Úerror_replyr”   rR  ÚregistrationrZ   s
         €€€€r7   r%  z-ApplicationSession.onMessage.<locals>.success8  sZ  ø€ Ø$(Ô$5°c´kÐ$Bà26 Ø#&¤<ð !.Ø+/Ô+>ð %.Ø2k¨Ø(,¬¯ª°gÑ(>Ô(>Ð(>Ð(>ð	).Ý/9¸#½uÔ?OÑ/PÔ/Pð -qØBFÔBU×B\ÒB\Ð]bÐdhÐjmÔjuÐwzô  xEñ  CFô  CF°°àBFÔBU×B\ÒB\Ð]bÐdhÐknÐjoÑBpÔBp°øøÝ/8ð ).ð ).ð ).Ø,0¬H¯MªMØ0^Ø45ð -:ñ -.ô -.ð -.ð -.ð -.ð -.ð -.ð -.øøøøð).øøøð $3ð !JÝ'1°#µuÔ7GÑ'HÔ'Hð %mÝ07´¸c¼kØFUÔF]ØGVÔG_ØFUÔF]ØM\ÔMkØEHÄZØLOÔL]ØNQÔNaØJMÌ/ð1[ñ 1[ô 1[¨¨õ 18´¸c¼kØFUÔF]ØGVÔG_ØFUÔF]ØM\ÔMkð	1mñ 1mô 1m¨¨õ (2°#µuÔ7GÑ'HÔ'Hð 
%JÝ07´¸c¼kØCFÄ;ØEHÄ]ØEHÄZØLOÔL]ØNQÔNaØJMÌ/ð1[ñ 1[ô 1[¨¨õ 18´¸c¼kØDGÀ5ð1Jñ 1Jô 1J¨ð $(¤?Ð#:Ø$(¤H§N¢NÐ3x×3Ò3ð  AMô  AWð  Y\ô  Ydñ  4eô  4eñ  %fô  %fð  %fØ$* Fð!FØ$(¤O×$8Ò$8¸Ñ$?Ô$?Ð$?Ð$?Ð$?øÝ'9ð !Fð !Fð !Få29´-ÅÔ@RÔ@_ÐadÔalÕn~ô  oOð Gj÷  Gqò  Gqð  rwô  r|ð rwô  r~ð r~ô  rHð rsñGtô Gtð Fuð3vñ 3vô 3v Kð
 %)¤O×$8Ò$8¸Ñ$EÔ$EÐ$EÐ$EÐ$EÐ$EÐ$EÐ$EÐ$EøøøøÝ';ð !Fð !Fð !Fõ 3:´-ÅÔ@RÔ@_ÐadÔalÕn~ô  oUð Go÷  Gvò  Gvð  w|ô  wAð w|ô  wCð wCô  wMð wxñGyô Gyð Fzð3{ñ 3{ô 3{ Kð
 %)¤O×$8Ò$8¸Ñ$EÔ$EÐ$EÐ$EÐ$EÐ$EÐ$EÐ$EÐ$Eøøøøð!Føøøs>   ½AB Â
CÂ'CÃCÈ!H= È=
MÉA6KËMËA6MÍMc           
      ób  •— ‰j         ‰j        = t          j        | ¦  «        }	 ‰                     | |¦  «         n#  Y nxY wd }‰j        rt          j        | ¦  «        }‰                     t          j	        j
        ‰j        | j        |‰j        ¦  «        }	 ‰j                             |¦  «         ný# t          $ rt}t          j        t          j	        j
        ‰j        t"          j        d                     ‰j        |¦  «        g¬¦  «        }‰j                             |¦  «         Y d }~n„d }~wt*          $ rt}t          j        t          j	        j
        ‰j        t"          j        d                     ‰j        |¦  «        g¬¦  «        }‰j                             |¦  «         Y d }~nd }~ww xY wd S )NzLerror return value from invoked procedure "{0}" could not be serialized: {1}ra  zSsuccess return value from invoked procedure "{0}" exceeds transport size limit: {1})rÌ   r�   rC   Úfailure_messager«   rG   rø   r•   r   rd  re  rõ   r„   rL   rñ   r   rŽ   r   rI   r¨   r_  r$   rJ   )r�   r=  Úformatted_tbr$  r¯   r”   rg  rZ   s        €€€r7   rv   z+ApplicationSession.onMessage.<locals>.error‚  s,  ø€ Ø$(Ô$5°c´kÐ$Bå).Ô)>¸sÑ)CÔ)C ð!)Ø$(×$4Ò$4°S¸&Ñ$AÔ$AÐ$AÐ$Aøð!)Ø$( Døøøà/3 Ø#'Ô#5ð !WÝ38Ô3QÐRUÑ3VÔ3V Là(,×(DÒ(DÝ$+Ô$6Ô$CØ$'¤KØ$'¤IØ$0Ø$'¤Lñ)"ô )" ð!@Ø$(¤O×$8Ò$8¸Ñ$?Ô$?Ð$?Ð$?øÝ'9ð !@ð !@ð !@å,3¬M½'Ô:LÔ:YÐ[^Ô[fÕhxô  iIð AO÷  AVò  AVð  Wcô  Wmð  opñ  Aqô  Aqð  @rð-sñ -sô -s Eà$(¤O×$8Ò$8¸Ñ$?Ô$?Ð$?Ð$?Ð$?Ð$?Ð$?Ð$?øøøøÝ';ð !@ð !@ð !@õ -4¬M½'Ô:LÔ:YÐ[^Ô[fÕhxô  iOð AV÷  A]ò  A]ð  ^jô  ^tð  vwñ  Axô  Axð  @yð-zñ -zô -z Eà$(¤O×$8Ò$8¸Ñ$?Ô$?Ð$?Ð$?Ð$?Ð$?Ð$?Ð$?øøøøð!@øøøð (, ts.   ¤; »?ÂB2 Â2
F,Â<A*D+Ä+F,Ä8A*F'Æ'F,z7INTERRUPT received for non-pending invocation {request})r�   z<REGISTERED received for already existing registration ID {0}z2REGISTERED received for non-pending request ID {0}z:UNREGISTERED received for non-existant registration ID {0}z3Router unregistered procedure '{proc}' with ID {id})rR  Úidz4UNREGISTERED received for non-pending request ID {0}z^WampAppSession.onMessage(): ERROR received for non-pending request_type {0} and request ID {1}zUnexpected message {0}r£   )zrN   rˆ   r   ÚWelcomerC   rß   Ú	onWelcomerç   r  r   r   r9  r:  r   ÚmethodÚextraÚonChallenger   r¨   r‹   ÚGoodbyerÂ   rL   rñ   ÚEventrM  rÊ   rN  rA  r„   rW   rE   r¤   r    rƒ   r†   r…   r¦   r   r€   r©   ÚobjrX  rY  Údetails_argÚEventDetailsrI  r>  r?  r@  rB  rC  r¢   rL  Ú	Publishedr�   rÄ   ÚpopÚ	is_futureÚon_replyÚ	is_calledr%   rP  ÚresolveÚ
SubscribedrÅ   r&   r  ÚUnsubscribedrÆ   Úsubscription_idÚactiveÚResultrÇ   r_  r   r¥   r§   rª   rW  ÚoptionsÚon_progressr«   r,  r"   rŸ   r    r¡   ÚrejectÚlenrd  rÌ   rg  rË   Úendpointr•   re  Úreceive_progressÚCallDetailsr\  r]  r^  r.   Ú	Interrupträ   ÚcancelÚ
RegisteredrÈ   r(   ÚUnregisteredÚKeyErrorrÉ   Úregistration_idrŽ   r�   ÚCallÚPublishÚ	SubscribeÚUnsubscribeÚRegisterÚ
Unregisterr±   )&rZ   r”   rè   r%  rv   r+  Ú	challenger$  rM  rA  r“   Údecoded_topicr¯   Úinvoke_argsÚinvoke_kwargsrJ  ÚfutureÚpublish_requestrI  r�   Úcall_requestr­   r®   rQ  Úkwr   Úprog_dry  r€   r  r…  rW  ÚinvokedÚregr,  rN  rR  rg  s&   ``                                @@@@r7   Ú	onMessagezApplicationSession.onMessage/  s�  øøøøøø€ ð
 ÔÑ#õ ˜#�wœÑ/Ô/ð Svõ ”O D¤N°CÑ8Ô8�ðDð Dð Dð Dð Dð DðLLð Lð Lð Lð Lõ Ô# A w°Ñ6Ô6Ð6Ð6Ð6å˜C¥¤Ñ/Ô/ð ;våÔ,¨S¬Z¸¼ÑEÔE�Ý”O D¤L°'Ñ:Ô:�ð
ð 
ð 
ð 
ð 
ð 
ðJð Jð Jð Jð JåÔ# A w°Ñ7Ô7Ð7Ð7Ð7å˜C¥Ô!2Ñ3Ô3ð &vå!œO¨C¬J¸¼	ÑBÔB�	Ý”O DÔ$4°iÑ@Ô@�ð0ð 0ð 0ð 0ð 0ðð ð ð ð õ( Ô# A w°Ñ6Ô6Ð6Ð6Ð6õ $Ð$^×$eÒ$eÐfiÔfsÑ$tÔ$tÑuÔuÐuõ ˜#�wœÑ/Ô/ð I	TØÔ)ð 0å#œOÑ-Ô-�EØ”O×(Ò(¨Ñ/Ô/Ð/à#'�Ô õ  Ô,¨S¬Z¸¼ÑEÔE�Ý”O D¤L°'Ñ:Ô:�ðð ð ð ð ð ð
:ð :ð :ð :ð :ð :õ Ô# A w°Ñ7Ô7Ð7Ð7Ð7å˜C¥¤Ñ/Ô/ñ sTàÔ# tÔ':Ð:Ñ:ð )-Ô(;¸CÔ<LÔ(Mð /Fñ /F˜à".Ô"6˜Ø #¤	Ð ?¨\Ô-?˜àœ<ð /à#'Ô#6ð /Ø $¤§¢ð  /[ð  fiô  fr ñ  !sô  !sð  !sØ &  ð	!/Ý6DÀSÄ[ÐRUÔR^Ð`cÔ`rÐtwÔtñ  7Aô  7A OØJNÔJ]×JdÒJdÐejÐlqð  tCñ  KDô  KDÑ$G M°3´8¸S¼Zð
 (-°Ò'=Ð'=Ø(,¬¯ªÐ6eÑ(fÔ(fÐ(fØ(.¨¨ð (>øõ	 (1ð !+ð !+ð !+Ø$(¤H§M¢Mð  3Cð  KLð  WZô  Wc Mñ  %dô  %dð  %dØ$* F F F F F Føøøøð!+øøøð 9@¼Ð&P w¤{ n nÍÉÌ˜Øœ8ð HØ*5½¸c¼h¹¼Ñ*G˜KØ69´jÐ(L¨¬
¨
ÅdÁfÄf˜à"Ô.ð ]ÝAFÔASÐT`ÐbeÔbqð  ~Aô  ~Kð  ^aô  ^rð  GJô  G]ð  ejð  }@ô  }Qð  \_ô  \hð  svô  sð  MPô  M\ð  B]ñ  B]ô  B]˜M¨'Ô*=Ñ>ðsð sð sð sð sð sðBð Bð Bð Bð Bð Bð Bõ
 "'¤°´Ð![¸kÐ![Ð![Ð![È]Ð![Ð![˜ÝÔ+¨F°H¸fÑEÔEÐEÑEð_/Fð /Fõd (Ð(_×(fÒ(fÐgjÔgwÑ(xÔ(xÑyÔyÐyå˜C¥Ô!2Ñ3Ô3ð zTà”; $Ô"4Ð4Ð4ð '+Ô&8×&<Ò&<¸S¼[Ñ&IÔ&I�Oå” Ô'?Ñ@Ô@ð ÅUÄ_ÐUdÔUmÑEnÔEnð Ø˜õ #.¨c¬oÈ_ÔMjÐ"kÑ"kÔ"k�Kõ ”M /Ô":¸KÑHÔHÐHÐHÐHå'Ð([×(bÒ(bÐcfÔcnÑ(oÔ(oÑpÔpÐpå˜C¥Ô!3Ñ4Ô4ñ hTà”; $Ô"6Ð6Ð6ð #Ô2×6Ò6°s´{ÑCÔC�Gå” wÔ'7Ñ8Ô8ð ½U¼_ÈWÔM]Ñ=^Ô=^ð Ø˜ð Ô'¨tÔ/BÐBÐBØ@B˜Ô+¨CÔ,<Ñ=å#/°Ô0@À'Ä-ÐQUÐW^ÔWfÑ#gÔ#g�Lð Ô'¨Ô(8Ô9×@Ò@ÀÑNÔNÐNõ ”M 'Ô"2°LÑAÔAÐAÐAÐAå'Ð(\×(cÒ(cÐdgÔdoÑ(pÔ(pÑqÔqÐqå˜C¥Ô!5Ñ6Ô6ð PTà”; $Ô"8Ð8Ð8ð #Ô4×8Ò8¸¼ÑEÔE�Gå” wÔ'7Ñ8Ô8ð ½U¼_ÈWÔM]Ñ=^Ô=^ð Ø˜ð Ô.°$Ô2EÐEÐEØ,0Ô,?ÀÔ@WÔ,Xð 8ð 8˜LØ27˜LÔ/Ð/Ø Ô/°Ô0GÐHõ ”M 'Ô"2°AÑ6Ô6Ð6Ð6Ð6å'Ð(^×(eÒ(eÐfiÔfqÑ(rÔ(rÑsÔsÐså˜C¥¤Ñ0Ô0ñ {Tà”; $¤/Ð1Ñ1à#'¤?°3´;Ô#?�LØ'Ô1�DØ"�Gà”|ñ &à#Ô2ð &Ø&]˜GØ œHŸMšM¨'Ñ2Ô2Ð2Ý&6Õ7GÔ7\Ð^eÑ&fÔ&f˜G™Gð&Ý2@ÀÄÈcÌlÐ\_Ô\nÐpsÔp{Ñ2|Ô2| ØGKÔGZ×GaÒGaÐbfÐhlÐn}ÑG~ÔG~Ñ D °´¸#¼*ð $(¨>Ò#9Ð#9Ø$(¤H§M¢Mð )CØ7EØ-1ð %2ñ %&ô %&ð %&õ
 /?Ý(8Ô(QØ(p×(wÒ(wð  yGð  IMñ  )Nô  )Nñ/&ô /& Gøøõ! $-ð "ð "ð "Ø $¤§¢Ø$TØ()ð !.ñ !"ô !"ð !"õ +;Ý$4Ô$FØ$Q×$XÒ$XÐYZÑ$[Ô$[ñ+"ô +"      øøøøð"øøøð* ”|ð DBð (Ô/Ô;ð JØ&ð JØ $× 0Ò 0°ð  ;Iñ  !Jô  !Jð  !Jð  !Jð  !Jà%(¤ZÐ%9µ4±6´6 Ø'*¤xÐ':µ5±7´7 ð!Wð !Wð !Wð !Wð !Wð $0Ô#7ð !C¸LÔ<PÔ<Xð !CÝ-2¬_¸\Ô=QÔ=]Ý=BÔ=MÈsÌxØUXÔU_Ø\_Ô\mØ^aÔ^qØZ]ÔZið	>\ð >\ð
 QTÔPZð>\ð >\ñ.]ô .] F Fõ .3¬_¸\Ô=QÔ=]ð .CØ>Bð.Cð .Cð .Cà?Að.Cð .C Fõ !&Ô 3°F¸DÀ&Ñ IÔ IÐ IÐ IÐ Ið/Jð Jð: !œO¨C¬KÐ8ð $0Ô#8˜å œ?¨8Ñ4Ô4ð #½¼ÈÑ9RÔ9Rð #Ø"˜Fð #ð BÝ!œL¨°7Ñ;Ô;Ð;Ð;Ð;à"œzð B¨lÔ.Bð BÀ|ÔG[ÔGcð BØ),¬Ð)9°r Ø#&¤8ð !EÝ*/Ô*:¸C¼HØBEÄ*ØILÔIZØKNÔK^ØGJÄð	+Eð +Eð
 >Dð+Eð +E C Cõ +0Ô*:ð +EÀ#Ä*ØILÔIZØKNÔK^ØGJÄð+Eð +Eð >Dð	+Eð +E Cõ
 !&¤¨h¸Ñ <Ô <Ð <Ð <Ð <à#&¤8ð !BÝ'*¨3¬8¡}¤}°qÒ'8Ð'8Ý.3Ô.>ÀÄÐ.I¨Ý(-¬°hÀÑ(DÔ(DÐ(DÐ(DÐ(Då(-¬°hÀÄÈÄÑ(LÔ(LÐ(LÐ(LÐ(Lå$)¤M°(¸DÑ$AÔ$AÐ$AÐ$AÐ$Aå'Ð(X×(_Ò(_Ð`cÔ`kÑ(lÔ(lÑmÔmÐmå˜C¥Ô!3Ñ4Ô4ñ LTà”; $Ô"3Ð3Ð3å'Ð(`×(gÒ(gÐhkÔhsÑ(tÔ(tÑuÔuÐuð Ô'¨tÔ/BÐBÐBå+Ð,h×,oÒ,oÐpsô  qAñ  -Bô  -Bñ  Cô  Cð  Cð (,Ô':¸3Ô;KÔ'L˜Ø#/Ô#8˜Ø"œ}ÐF°Ô0F˜Ø"&˜àœ<ñ *Ø#'Ô#6ð *Ø*h Ø $¤§¢¨gÑ 6Ô 6Ð 6Ý*:Õ;KÔ;`ÐbiÑ*jÔ*j ¡ð!*Ý6DÀSÄ[ÐRUÔR^Ð`cÔ`rÐtwÔtñ  7Aô  7A OØKOÔK^×KeÒKeÐfkÐmqð  tCñ  LDô  LDÑ$H N°C´H¸c¼jð (,¨~Ò'=Ð'=Ø(,¬¯ªð-Uà;IØ15ð	 )6ñ )*ô )*ð )*õ 3CÝ,<Ô,UØ,÷  -Gò  -Gð  HVð  X\ñ  -]ô  -]ñ3*ô 3*¨øøõ# (1ð !&ð !&ð !&Ø$(¤H§M¢MØ(UØ,-ð %2ñ %&ô %&ð %&õ /?Ý(8Ô(JØ(R×(YÒ(YÐZ[Ñ(\Ô(\ñ/&ô /& G G G G G Gøøøøð!&øøøð, #ð oJð %)×$@Ò$@ÅÔASÔA`ÐbeÔbmÐovÑ$wÔ$w˜EØ œO×0Ò0°Ñ7Ô7Ð7Ð7Ð7ð  (œ|Ð7Ø/7¬|¨o  å.3©g¬g à"œxð LØ.9½EÀ#Ä(¹O¼OÑ.K à:=¼*Ð,P¨C¬J¨JÍ$É&Ì&˜Mà'Ô3ð &oà#&Ô#7ð !4ð%Kð %Kð %Kð %Kð %Kð %Kð %Kð %Kð2 04 HåFKÔFWÐXdØaiØ_bÔ_iØfiÔfwØhkÔh{ØbfØilÔi}ØadÔamðGoñ Goô Go ¨hÔ.BÑ Cõ (-¤°x´{Ð'bÀ[Ð'bÐ'bÐ'bÐTaÐ'bÐ'b˜HðHFð HFð HFð HFð HFð HFð HFð HFðT%,ð %,ð %,ð %,ð %,ð %,ð %,õN >OÈsÌ{Ð\dÑ=eÔ=e˜DÔ-¨c¬kÑ:å!Ô/°¸'À5ÑIÔIÐIÐIÐIå˜C¥Ô!2Ñ3Ô3ð jTà”; dÔ&7Ð7Ð7à”H—N’NÐ#\ÐfiÔfq�NÑrÔrÐrÐrÐrà"Ô/°´Ô<�Gõ ”L Ô!1Ñ2Ô2Ð2Ð2Ð2å˜C¥Ô!3Ñ4Ô4ñ ^Tà”; $Ô"5Ð5Ð5ð #Ô1×5Ò5°c´kÑBÔB�Gå” wÔ'7Ñ8Ô8ð ½U¼_ÈWÔM]Ñ=^Ô=^ð Ø˜ð Ô'¨tÔ/BÐBÐBÝ'3°D¸#Ô:JÈGÔL]Ð_fÔ_oÑ'pÔ'p˜Ø@L˜Ô+¨CÔ,<Ñ=Ð=å+Ð,j×,qÒ,qÐruô  sCñ  -Dô  -Dñ  Eô  Eð  Eå”M 'Ô"2°LÑAÔAÐAÐAÐAå'Ð(\×(cÒ(cÐdgÔdoÑ(pÔ(pÑqÔqÐqå˜C¥Ô!5Ñ6Ô6ñ ITà”; !Ò#Ð#ðØ"Ô1°#Ô2BÔC˜˜øÝ#ð ð ð Ý+ð&ß&,¢f¨SÔ-=Ñ&>Ô&>ñô ð ðøøøð
 ”H—N’NØMØ œ]ØÔ+ð #ñ ô ð ð ð ð
 ”[ DÔ$9Ð9Ð9ð #Ô3×7Ò7¸¼ÑDÔD�Gå” wÔ'7Ñ8Ô8ð ½U¼_ÈWÔM]Ñ=^Ô=^ð Ø˜ð Ô.°$Ô2EÐEÐEØNS˜Ô+¨GÔ,CÔDÔKØ Ô/°Ô0GÐHõ ”M 'Ô"2Ñ3Ô3Ð3Ð3Ð3å'Ð(^×(eÒ(eÐfiÔfqÑ(rÔ(rÑsÔsÐså˜C¥¤Ñ/Ô/ñ %Tð  �ð Ô#¥w¤|Ô'@Ò@Ð@ÀSÄ[ÐTXÔTcÐEcÐEcØ#œ×2Ò2°3´;Ñ?Ô?ÔH�H‘Hð Ô%­¬Ô)EÒEÐEÈ#Ì+ÐY]ÔYkÐJkÐJkØ#Ô1×5Ò5°c´kÑBÔBÔK�H‘Hð Ô%­Ô):Ô)GÒGÐGÈCÌKÐ[_Ô[oÐLoÐLoØ#Ô3×7Ò7¸¼ÑDÔDÔM�H�Hð Ô%­Ô)<Ô)IÒIÐIÈcÌkÐ]aÔ]sÐNsÐNsØ#Ô5×9Ò9¸#¼+ÑFÔFÔO�H�Hð Ô%­Ô)9Ô)FÒFÐFÈ3Ì;ÐZ^ÔZmÐKmÐKmØ#Ô2×6Ò6°s´{ÑCÔCÔL�H�Hð Ô%­Ô);Ô)HÒHÐHÈSÌ[Ð\`Ô\qÐMqÐMqØ#Ô4×8Ò8¸¼ÑEÔEÔN�Hàð pÝ œ?¨8Ñ4Ô4ð RÝœ X¨t×/KÒ/KÈCÑ/PÔ/PÑQÔQÐQÐQÐQðRð Rõ (ð  )I÷  )Pò  )Pð  QTô  Qað  cfô  cnñ  )oô  )oñ  pô  pð  põ $Ð$<×$CÒ$CÀCÄMÑ$RÔ$RÑSÔSÐSs]   Ê1AL%Ì%
MÌ/"MÍMß1Ab â
c0âA	c+ã+c0ñ>At  ô 
u=ô*A	u8õ8u=ÁBAB0 ÁB02AC"c                 óš  ‡ ‡‡— d‰ _         ‰ j        rt          j        t          j        j        d                     ‰ j        ¦  «        ¬¦  «        Št          j        ‰ j        ‰¦  «        }ˆˆ fd„}ˆ fd„}t          j	        |||¦  «         d‰ _        t          j        ‰ j
        ¦  «        }ˆ ˆfd„}ˆ fd„}t          j	        |||¦  «         dS )zW
        Implements :func:`autobahn.wamp.interfaces.ITransportHandler.onClose`
        Nz=WAMP transport was lost without closing the session {} before©r9  r   c                 ó6   •— ‰                      d‰‰¦  «         | S r6  r  r7  s    €€r7   r%  z+ApplicationSession.onClose.<locals>.success(  s   ø€ à—	’	˜' 4¨Ñ1Ô1Ð1Ø�
r9   c                 ó0   •— ‰                      | d¦  «        S r.  rØ   r  s    €r7   r+  z*ApplicationSession.onClose.<locals>._error-  s   ø€ Ø×*Ò*¨1Ð.DÑEÔEÐEr9   c                 ó4   •— ‰                      d‰‰¬¦  «        S )NrA   )Ú	was_cleanr  )r   rZ   ÚwasCleans    €€r7   r%  z+ApplicationSession.onClose.<locals>.success5  s   ø€ à—9’9˜\¨4¸8�9ÑDÔDÐDr9   c                 ó0   •— ‰                      | d¦  «        S )NzWhile firing onDisconnectrØ   r  s    €r7   r+  z*ApplicationSession.onClose.<locals>._error9  s   ø€ Ø×&Ò& qÐ*EÑFÔFÐFr9   )rL   rN   r   r   ÚREASON_TRANSPORT_LOSTr¨   rC   rß   r:  rç   ÚonDisconnect)rZ   r¦  rè   r%  r+  r,  s   ``   @r7   ÚonClosezApplicationSession.onClose  s+  øøø€ ð
 ˆŒàÔð 	$åÔ(ÝÔ)Ô?ØW×^Ò^Ð_cÔ_oÑpÔpðñ ô ˆGõ ” ¤¨gÑ6Ô6ˆAðð ð ð ð ð ð
Fð Fð Fð Fð FåÔ  7¨FÑ3Ô3Ð3à#ˆDÔåŒO˜DÔ-Ñ.Ô.ˆð	Eð 	Eð 	Eð 	Eð 	Eð 	Eð	Gð 	Gð 	Gð 	Gð 	GåÔ˜A˜w¨Ñ/Ô/Ð/Ð/Ð/r9   r”  c                 ó    — t          d¦  «        ‚)zR
        Implements :func:`autobahn.wamp.interfaces.ISession.onChallenge`
        zBreceived authentication challenge, but onChallenge not implemented)rz   )rZ   r”  s     r7   rp  zApplicationSession.onChallenge=  s   € õ Ð_Ñ`Ô`Ð`r9   r,  c                 ó   — dS )zM
        Implements :meth:`autobahn.wamp.interfaces.ISession.onJoin`
        Nr£   ©rZ   r,  s     r7   r  zApplicationSession.onJoinH  ó   € € € r9   Úwelcomec                 ó   — dS )zP
        Implements :meth:`autobahn.wamp.interfaces.ISession.onWelcome`
        Nr£   )rZ   r¯  s     r7   rm  zApplicationSession.onWelcomeN  r®  r9   c                 ób  ‡— t          j        d¦  «        }| j        | j        | j        | j        | j        | j        g}g }|D ]=}|                     | 	                    ¦   «         ¦  «         | 
                    ¦   «          Œ>|r)| j                             dt          |¦  «        ¬¦  «         |D ]ƒŠ| j                             d‰j        ‰j        ‰j        j        ¬¦  «         t          j        ‰j        ¦  «        st          j        ‰j        |¦  «         t          j        |ˆfd„ˆfd„¦  «         Œ„|S )zB
        Errback any still outstanding requests with exc.
        Nz'Cancelling {count} outstanding requests)Úcountzncleaning up outstanding {request_type} request {request_id}, firing errback on user handler {request_on_reply})Úrequest_on_replyÚ
request_idr�   c                 ó   •— ‰j         S r2   ©ry  ©râ   r�   s    €r7   rÜ   zBApplicationSession._errback_outstanding_requests.<locals>.<lambda>w  s
   ø€ ¨WÔ-=€ r9   c                 ó   •— ‰j         S r2   r¶  r·  s    €r7   rÜ   zBApplicationSession._errback_outstanding_requests.<locals>.<lambda>w  s
   ø€ ÈÔIY€ r9   )rC   Úcreate_future_successrÄ   rÅ   rÆ   rÇ   rÈ   rÉ   ÚextendÚvaluesÚclearrE   Úinfor„  rä   ry  r´  r‹   r³   rz  rƒ  rç   )rZ   r‘   rè   Úall_requestsÚoutstandingÚrequestsr�   s         @r7   Ú_errback_outstanding_requestsz0ApplicationSession._errback_outstanding_requestsT  sc  ø€ õ Ô'¨Ñ-Ô-ˆàÔØÔ ØÔ"ØŒOØÔØÔ!ð
ˆð ˆØ$ð 	ð 	ˆHØ×Ò˜xŸšÑ0Ô0Ñ1Ô1Ð1Ø�NŠNÑÔÐÐàð 	ØŒH�MŠMØ9Ý˜+Ñ&Ô&ð ñ ô ð ð #ð 	[ð 	[ˆGØŒH�NŠNðDà!(Ô!1Ø"Ô-Ø$Ô.Ô7ð ñ ô ð õ ”? 7Ô#3Ñ4Ô4ð 4Ý”˜WÔ-¨sÑ3Ô3Ð3õ Ô Ð#=Ð#=Ð#=Ð#=Ð?YÐ?YÐ?YÐ?YÑZÔZÐZÐZØˆr9   c                 ó  ‡ — |j         t          j        k    r'‰ j                             d|j         |j        ¬¦  «         t          |j         |j        ¦  «        }‰                      |¦  «        }ˆ fd„}t          j	        |||¦  «         |S )zN
        Implements :meth:`autobahn.wamp.interfaces.ISession.onLeave`
        z/session closed with reason {reason} [{message}]r¡  c                 óB   •— ‰j         r‰                     ¦   «          d S d S r2   )rL   rA   rá   s    €r7   rA   z.ApplicationSession.onLeave.<locals>.disconnect†  s-   ø€ ØŒð "Ø—’Ñ!Ô!Ð!Ð!Ð!ð"ð "r9   )
r9  r   ÚREASON_DEFAULTrE   r¤   r   r   rÁ  rC   rç   )rZ   r,  r‘   rè   rA   s   `    r7   r:  zApplicationSession.onLeavez  s•   ø€ ð
 Œ>�\Ô8Ò8Ð8ØŒH�MŠMÐKÐT[ÔTbÐlsÔl{ˆMÑ|Ô|Ð|õ ˜wœ~¨w¬Ñ?Ô?ˆØ×.Ò.¨sÑ3Ô3ˆð	"ð 	"ð 	"ð 	"ð 	"õ 	Ô˜A˜z¨:Ñ6Ô6Ð6Øˆr9   r9  r   c                 óF  — | j         s| j                             d¦  «         dS | j        sG|sd}t          j                             ||¬¦  «        }| j                             |¦  «         d| _        n| j                             d¦  «         | j        du p| j        j	        }|S )zL
        Implements :meth:`autobahn.wamp.interfaces.ISession.leave`
        z6session is not joined on a realm - no session to leaveNzwamp.close.normalr¡  TzBsession was already requested to leave - not sending GOODBYE again)
rN   rE   r¤   rÂ   r   r   rq  rL   rñ   Ú	is_closed)rZ   r9  r   r”   rÆ  s        r7   r>   zApplicationSession.leaveŒ  s®   € ð
 Ôð 	ØŒH�MŠMÐRÑSÔSÐSØˆFàÔ!ð 	`Øð -Ø,�Ý”,×&Ò&¨f¸gÐ&ÑFÔFˆCØŒO× Ò  Ñ%Ô%Ð%Ø!%ˆDÔÐàŒH�MŠMÐ^Ñ_Ô_Ð_à”O tÐ+ÐH¨t¬Ô/Hˆ	àÐr9   c                 óV   — t          j        ¦   «         }|                      |¦  «         dS )zS
        Implements :meth:`autobahn.wamp.interfaces.ISession.onDisconnect`
        N)r   ÚTransportLostrÁ  )rZ   r‘   s     r7   r©  zApplicationSession.onDisconnect¢  s,   € õ Ô%Ñ'Ô'ˆØ×*Ò*¨3Ñ/Ô/Ð/Ð/Ð/r9   rA  c                 óR  — t          |¦  «        t          k    sJ ‚|�t          |¦  «        t          t          fv sJ ‚|�t          |¦  «        t          k    sJ ‚t          j        |d                     | j        j	        ¦  «        ddd¬¦  «         | 
                    dd¦  «        }|r)t          |t          j        ¦  «        st          d¦  «        ‚| j        st!          j        ¦   «         ‚| j                             ¦   «         }d}| j        r| j                             d|||¦  «        }|rp|r?t          j        ||f|j        |j        |j        |j        dœ|                     ¦   «         ¤Ž}nrt          j        |||j        |j        |j        |j        ¬¦  «        }nC|r)t          j        ||f||d	œ|                     ¦   «         ¤Ž}nt          j        ||||¬	¦  «        }|rL|j        �|j        |_        |j        �|j        |_        |j        �|j        |_        |j        �|j        |_        |r7|j         r0tC          j"        ¦   «         }tG          |||du¬
¦  «        | j$        |<   nd}	 | j         %                    |¦  «         n%# t          $ r}	|| j$        v r| j$        |= |	‚d}	~	ww xY w|S )zP
        Implements :meth:`autobahn.wamp.interfaces.IPublisher.publish`
        Nz{}.publish()F©r   ÚstrictÚallow_empty_componentsÚ
allow_noner�  z,options must be of type a.w.t.PublishOptionsTr‚   ©r   r€   rO  )&r‰   rŠ   r‡   rX  rY  r   Úcheck_or_raise_urir¨   r‹   r³   rw  rˆ   r   ÚPublishOptionsr©   rL   r   rÈ  rX   ÚnextrW   r�   r�  rƒ   r„   r…   r†   Úmessage_attrÚcorrelation_idÚcorrelation_uriÚcorrelation_is_anchorÚcorrelation_is_lastÚacknowledgerC   Úcreate_futurer*   rÄ   rñ   )
rZ   rA  r   r€   r�  r´  r“   r”   ry  r¯   s
             r7   ÚpublishzApplicationSession.publish°  sF  € õ
 �E‰{Œ{�cÒ!Ð!Ð!Ð!Øˆ|�t D™zœz­dµE¨]Ð:Ð:Ð:Ð:Øˆ~¥ f¡¤µÒ!5Ð!5Ð!5Ð!5åÔ" 5Ø+9×+@Ò+@ÀÄÔAXÑ+YÔ+YØ*/Ø:?Ø.3ð		5ñ 	5ô 	5ð 	5ð —*’*˜Y¨Ñ-Ô-ˆØð 	L�: g­uÔ/CÑDÔDð 	LÝÐJÑKÔKÐKàŒð 	,ÝÔ)Ñ+Ô+Ð+àÔ)×.Ò.Ñ0Ô0ˆ
àˆØÔð 	TØ"Ô1×8Ò8¸¸uÀdÈFÑSÔSˆOàð 	5Øð UÝ”o jØ&+ð@à.=Ô.EØ/>Ô/GØ.=Ô.EØ5DÔ5Sð@ð @ð )0×(<Ò(<Ñ(>Ô(>ð@ð @��õ ”o jØ&+Ø.=Ô.EØ/>Ô/GØ.=Ô.EØ5DÔ5SðUñ Uô U��ð ð 
5Ý”o jØ&+ð@à+/Ø-3ð@ð @ð )0×(<Ò(<Ñ(>Ô(>ð	@ð @��õ ”o jØ&+Ø+/Ø-3ð5ñ 5ô 5�ð
 ð 	FØÔ%Ð1Ø%,Ô%;�Ô"ØÔ&Ð2Ø&-Ô&=�Ô#ØÔ,Ð8Ø,3Ô,I�Ô)ØÔ*Ð6Ø*1Ô*E�Ô'àð 	�wÔ*ð 	åÔ*Ñ,Ô,ˆHÝ-;¸JÈÐapÐx|Ða|Ð-~Ñ-~Ô-~ˆDÔ˜zÑ*Ð*àˆHð	ð ŒO× Ò  Ñ%Ô%Ð%Ð%øÝð 	ð 	ð 	Ø˜TÔ/Ð/Ð/ØÔ& zÐ2ØˆGøøøøð	øøøð
 ˆs   É'J Ê
J$ÊJÊJ$rN  r�  Úcheck_typesc                 ó0  ‡ — t          |¦  «        r|€t          |d¦  «        r|rJ ‚|�t          |¦  «        t          k    sJ ‚|�t	          |t
          j        ¦  «        sJ ‚‰ j        st          j	        ¦   «         ‚ˆ fd„}t          |¦  «        r |d||||¦  «        S g }t          j        |j        t          ¦  «        D ]Â}|d         }d|j        v r¯|j        d         D ]¡}	|	                     ¦   «         r‹|	                     ¦   «         }
|	j        p|}|€E|	j        t           j        j        k    rt          j        d¬¦  «        }nt          j        d¬¦  «        }|                      ||||
||	j        ¦  «        ¦  «         Œ¢ŒÃt/          j        |d	¬
¦  «        S )zS
        Implements :meth:`autobahn.wamp.interfaces.ISubscriber.subscribe`
        Nr‹   c                 ó¬  •— t          j        |d                     ‰	j        j        ¦  «        ddd¬¦  «         ‰	j                             ¦   «         }t          j        ¦   «         }|r‰	 	                    |¦  «        }t          || |r|j        nd ¦  «        }t          ||||¦  «        ‰	j        |<   |r&t          j        ||fi |                     ¦   «         ¤Ž}nt          j        ||¦  «        }|rL|j        �|j        |_        |j        �|j        |_        |j        �|j        |_        |j        �|j        |_        ‰	j                             |¦  «         |S )Nz{}.subscribe()FTrÊ  )r   rÏ  r¨   r‹   r³   rX   rÑ  rC   rØ  r  r'   rt  r+   rÅ   r�  rÒ  rÓ  rÔ  rÕ  rÖ  rL   rñ   )
rs  rL  rA  r�  rÚ  r´  ry  Úhandler_objr”   rZ   s
            €r7   Ú
_subscribez0ApplicationSession.subscribe.<locals>._subscribe  sl  ø€ ÝÔ& uØ/?×/FÒ/FÀtÄ~ÔG^Ñ/_Ô/_Ø.3Ø>BØ27ð	9ñ 9ô 9ð 9ð Ô-×2Ò2Ñ4Ô4ˆJÝÔ*Ñ,Ô,ˆHØð )Ø—_’_ RÑ(Ô(�Ý! " cÀ'Ð+S¨7Ô+>Ð+>ÈtÑTÔTˆKÝ/?À
ÈEÐS[Ð]hÑ/iÔ/iˆDÔ  Ñ,àð ;ÝÔ'¨
°EÐTÐT¸W×=QÒ=QÑ=SÔ=SÐTÐT��åÔ'¨
°EÑ:Ô:�àð JØÔ)Ð5Ø)0Ô)?�CÔ&ØÔ*Ð6Ø*1Ô*A�CÔ'ØÔ0Ð<Ø07Ô0M�CÔ-ØÔ.Ð:Ø.5Ô.I�CÔ+àŒO× Ò  Ñ%Ô%Ð%ØˆOr9   rT  rx   Úwildcard)ÚmatchÚexactT©Úconsume_exceptions)Úcallablery   r‰   rŠ   rˆ   r   r!   rL   r   rÈ  r3   Ú
getmembersr‹   r8   Ú__dict__Ú
is_handlerr   r�  Úuri_typer{   ÚURI_TYPE_WILDCARDr  Ú_check_typesrC   Úgather)rZ   rN  rA  r�  rÚ  rÞ  Ú
on_repliesÚkrR  ÚpatrŒ   Úsuboptss   `           r7   Ú	subscribezApplicationSession.subscribe  sÉ  ø€ õ ˜Ñ!Ô!Ðp eÐ&7½WÀWÈkÑ=ZÔ=ZÐ&7ÐcnÐ&7Ð&7Ð&7Øˆ}¥ U¡¤­sÒ 2Ð 2Ð 2Ð 2Øˆ¥*¨WµeÔ6LÑ"MÔ"MˆˆˆàŒð 	,ÝÔ)Ñ+Ô+Ð+ð	ð 	ð 	ð 	ð 	õ@ �GÑÔð 	Eà�:˜d G¨U°G¸[ÑIÔIÐIð
 ˆJÝÔ'¨Ô(9Õ;PÑQÔQð jð j�Ø˜”t�Ø $¤-Ð/Ð/Ø#œ}¨[Ô9ð 	jð 	j˜ØŸ>š>Ñ+Ô+ð jØ#&§7¢7¡9¤9˜DØ&)¤kÐ&<°W˜GØ&˜Ø#&¤<µ3´;Ô3PÒ#PÐ#PÝ.3Ô.DÈ:Ð.VÑ.VÔ.V G Gå.3Ô.DÈ7Ð.SÑ.SÔ.S GØ&×-Ò-¨j¨j¸À$ÈÈgÐWZÔWgÑ.hÔ.hÑiÔiÐiøøå”< 
¸tÐDÑDÔDÐDr9   c                 óŒ  — t          |t          ¦  «        sJ ‚|j        sJ ‚|j        | j        v sJ ‚|| j        |j                 v sJ ‚| j        st          j        ¦   «         ‚| j        |j                                      |¦  «         d|_        t          | j        |j                 ¦  «        }|dk    r€| j
                             ¦   «         }t          j        ¦   «         }t          |||j        ¦  «        | j        |<   t!          j        ||j        ¦  «        }| j                             |¦  «         |S t          j        |¦  «        S )zU
        Called from :meth:`autobahn.wamp.protocol.Subscription.unsubscribe`
        Fr   )rˆ   r&   r  rk  rÊ   rL   r   rÈ  Úremover„  rX   rÑ  rC   rØ  r,   rÆ   r   r‘  rñ   r¹  )rZ   rM  Úscountr´  ry  r”   s         r7   Ú_unsubscribezApplicationSession._unsubscribeQ  s?  € õ ˜,­Ñ5Ô5Ð6Ð6Ð6ØÔ"Ð"Ð"Ð"ØŒ $Ô"5Ð5Ð5Ð5Ð5Ø˜tÔ2°<´?ÔCÐCÐCÐCÐCàŒð 	,ÝÔ)Ñ+Ô+Ð+ð 	Ô˜LœOÔ,×3Ò3°LÑAÔAÐAØ#ˆÔõ �TÔ(¨¬Ô9Ñ:Ô:ˆà�QŠ;ˆ;àÔ-×2Ò2Ñ4Ô4ˆJåÔ*Ñ,Ô,ˆHÝ1CÀJÐPXÐZfÔZiÑ1jÔ1jˆDÔ" :Ñ.åÔ% j°,´/ÑBÔBˆCàŒO× Ò  Ñ%Ô%Ð%ØˆOõ Ô.¨vÑ6Ô6Ð6r9   r_  c                 óp  ‡ ‡	— t          |¦  «        t          k    sJ ‚|�t          |¦  «        t          t          fv sJ ‚|�t          |¦  «        t          k    sJ ‚t          j        |d                     ‰ j        j	        ¦  «        ddd¬¦  «         | 
                    dd¦  «        }|r)t          |t          j        ¦  «        st          d¦  «        ‚‰ j        st!          j        ¦   «         ‚‰ j                             ¦   «         Š	d}‰ j        r>	 ‰ j                             d|||¦  «        }n#  ‰ j                             ¦   «          ‚ xY w|rp|r?t          j        ‰	|f|j        |j        |j        |j        dœ|                     ¦   «         ¤Ž}nrt          j        ‰	||j        |j        |j        |j        ¬¦  «        }nC|r)t          j        ‰	|f||d	œ|                     ¦   «         ¤Ž}nt          j        ‰	|||¬	¦  «        }|rL|j        �|j        |_        |j        �|j        |_        |j         �|j         |_         |j!        �|j!        |_!        ˆ	ˆ fd
„}tE          j#        |¬¦  «        }tI          ‰	|||¦  «        ‰ j%        ‰	<   	 ‰ j         &                    |¦  «         n#  ‰	‰ j%        v r‰ j%        ‰	= ‚ xY w|S )a{  
        Implements :meth:`autobahn.wamp.interfaces.ICaller.call`

        .. note::

            Regarding type hints for ``*args`` and ``**kwargs``, doesn't work as we
            can receive any Python types as list items or dict values, and because
            of what is discussed here
            https://adamj.eu/tech/2021/05/11/python-type-hints-args-and-kwargs/
        Nz	{}.call()FrÊ  r�  z)options must be of type a.w.t.CallOptionsTr‚   rÎ  c                 ód   •— t          j        ‰¦  «        }‰j                             |¦  «         d S r2   )r   ÚCancelrL   rñ   )rè   Ú
cancel_msgr´  rZ   s     €€r7   Ú	cancellerz*ApplicationSession.call.<locals>.cancellerÁ  s.   ø€ Ý œ¨
Ñ3Ô3ˆJØŒO× Ò  Ñ,Ô,Ð,Ð,Ð,r9   )rù  )'r‰   rŠ   r‡   rX  rY  r   rÏ  r¨   r‹   r³   rw  rˆ   r   ÚCallOptionsr©   rL   r   rÈ  rX   rÑ  rW   r�   rE   ÚfailurerŽ  rƒ   r„   r…   r†   rÒ  rÓ  rÔ  rÕ  rÖ  rC   rØ  r-   rÇ   rñ   )
rZ   r_  r   r€   r�  r“   r”   rù  ry  r´  s
   `        @r7   ÚcallzApplicationSession.calls  sL  øø€ õ �I‰Œ¥#Ò%Ð%Ð%Ð%Øˆ|�t D™zœz­dµE¨]Ð:Ð:Ð:Ð:Øˆ~¥ f¡¤µÒ!5Ð!5Ð!5Ð!5åÔ" 9Ø+6×+=Ò+=¸d¼nÔ>UÑ+VÔ+VØ*/Ø:?Ø.3ð		5ñ 	5ô 	5ð 	5ð —*’*˜Y¨Ñ-Ô-ˆØð 	I�: g­uÔ/@ÑAÔAð 	IÝÐGÑHÔHÐHàŒð 	,ÝÔ)Ñ+Ô+Ð+àÔ)×.Ò.Ñ0Ô0ˆ
àˆØÔð 	ðØ"&Ô"5×"<Ò"<¸TÀ9ÈdÐTZÑ"[Ô"[��øðØ”× Ò Ñ"Ô"Ð"Øøøøàð 	2Øð RÝ”l :Ø#,ð=à+:Ô+BØ,;Ô,DØ+:Ô+BØ2AÔ2Pð=ð =ð &-×%9Ò%9Ñ%;Ô%;ð=ð =��õ ”l :Ø#,Ø+:Ô+BØ,;Ô,DØ+:Ô+BØ2AÔ2PðRñ Rô R��ð ð 
2Ý”l :Ø#,ð=à(,Ø*0ð=ð =ð &-×%9Ò%9Ñ%;Ô%;ð	=ð =��õ ”l :Ø#,Ø(,Ø*0ð2ñ 2ô 2�ð
 ð 	FØÔ%Ð1Ø%,Ô%;�Ô"ØÔ&Ð2Ø&-Ô&=�Ô#ØÔ,Ð8Ø,3Ô,I�Ô)ØÔ*Ð6Ø*1Ô*E�Ô'ð	-ð 	-ð 	-ð 	-ð 	-ð 	-õ Ô&°Ð;Ñ;Ô;ˆÝ&1°*¸iÈÐSZÑ&[Ô&[ˆŒ˜
Ñ#ð	ð ŒO× Ò  Ñ%Ô%Ð%Ð%øð	Ø˜Tœ_Ð,Ð,Ø”O JÐ/Øøøøàˆs   ÄD, Ä,EÊJ ÊJ3r…  Úprefixc                 ó2  ‡ ‡— t          |¦  «        r|€t          |d¦  «        r|rJ ‚‰ j        st          j        ¦   «         ‚ˆˆ fd„}t          |¦  «        r |d||||¦  «        S g }t          j        |j        t          ¦  «        D ]{}|d         }	d|	j	        v rh|	j	        d         D ]Z}
|
 
                    ¦   «         rD|
                     ¦   «         }|
j        p|}|                      |||	|||
j        ¦  «        ¦  «         Œ[Œ|t          j        |d¬¦  «        S )zN
        Implements :meth:`autobahn.wamp.interfaces.ICallee.register`
        Nr‹   c                 óÜ  •— t          j        |d                     ‰
j        j        ¦  «        ddd¬¦  «         ‰
j                             ¦   «         }t          j        ¦   «         }|r‰
 	                    |¦  «        }t          || |r|j        nd ¦  «        }‰	�d                     ‰	|¦  «        }t          ||||¦  «        ‰
j        |<   |r&t          j        ||fi |                     ¦   «         ¤Ž}nt          j        ||¦  «        }|rL|j        �|j        |_        |j        �|j        |_        |j        �|j        |_        |j        �|j        |_        ‰
j                             |¦  «         |S )Nz{}.register()FTrÊ  z{}{})r   rÏ  r¨   r‹   r³   rX   rÑ  rC   rØ  r  r)   rt  r/   rÈ   r’  rÒ  rÓ  rÔ  rÕ  rÖ  rL   rñ   )rs  rL  r_  r�  rÚ  r´  ry  Úendpoint_objr”   rý  rZ   s            €€r7   Ú	_registerz.ApplicationSession.register.<locals>._registerè  s†  ø€ ÝÔ& yØ/>×/EÒ/EÀdÄnÔF]Ñ/^Ô/^Ø.3Ø>BØ27ð	9ñ 9ô 9ð 9ð Ô-×2Ò2Ñ4Ô4ˆJÝÔ*Ñ,Ô,ˆHØð )Ø—_’_ RÑ(Ô(�Ý# B¨ÀGÐ-U¨WÔ-@Ð-@ÐQUÑVÔVˆLØÐ!Ø"ŸMšM¨&°)Ñ<Ô<�	Ý.=¸jÈ(ÐT]Ð_kÑ.lÔ.lˆDÔ 
Ñ+àð >ÝÔ& z°9ÐWÐWÀ×@TÒ@TÑ@VÔ@VÐWÐW��åÔ& z°9Ñ=Ô=�àð JØÔ)Ð5Ø)0Ô)?�CÔ&ØÔ*Ð6Ø*1Ô*A�CÔ'ØÔ0Ð<Ø07Ô0M�CÔ-ØÔ.Ð:Ø.5Ô.I�CÔ+àŒO× Ò  Ñ%Ô%Ð%ØˆOr9   rT  rx   Trâ  )rä  ry   rL   r   rÈ  r3   rå  r‹   r8   ræ  Úis_endpointr   r�  r  rê  rC   rë  )rZ   r…  r_  r�  rý  rÚ  r  rì  rí  rR  rî  rŒ   Úregoptss   `   `        r7   ÚregisterzApplicationSession.registerÜ  s^  øø€ õ ˜Ñ"Ô"Ðv yÐ'<Å'È(ÐT_ÑB`ÔB`Ð'<ÐitÐ'<Ð'<Ð'<àŒð 	,ÝÔ)Ñ+Ô+Ð+ð 	ð  	ð  	ð  	ð  	ð  	õD �HÑÔð 	Eð �9˜T 8¨Y¸ÀÑMÔMÐMð
 ˆJÝÔ'¨Ô(:Õ<QÑRÔRð jð j�Ø˜”t�Ø $¤-Ð/Ð/Ø#œ}¨[Ô9ð jð j˜ØŸ?š?Ñ,Ô,ð jØ#&§7¢7¡9¤9˜DØ&)¤kÐ&<°W˜GØ&×-Ò-¨i¨i¸À$ÈÈgÐWZÔWgÑ.hÔ.hÑiÔiÐiøøå”< 
¸tÐDÑDÔDÐDr9   c                 ó–  — t          |t          ¦  «        sJ ‚|j        sJ ‚|j        | j        v sJ ‚| j        st          j        ¦   «         ‚| j         	                    ¦   «         }t          j        ¦   «         }t          |||j        ¦  «        | j        |<   t          j        ||j        ¦  «        }| j                             |¦  «         |S )zT
        Called from :meth:`autobahn.wamp.protocol.Registration.unregister`
        )rˆ   r(   r  rk  rË   rL   r   rÈ  rX   rÑ  rC   rØ  r0   rÉ   r   r“  rñ   )rZ   rg  r´  ry  r”   s        r7   Ú_unregisterzApplicationSession._unregister  sÆ   € õ ˜,­Ñ5Ô5Ð6Ð6Ð6ØÔ"Ð"Ð"Ð"ØŒ $Ô"5Ð5Ð5Ð5Ð5àŒð 	,ÝÔ)Ñ+Ô+Ð+àÔ)×.Ò.Ñ0Ô0ˆ
åÔ&Ñ(Ô(ˆÝ,=¸jÈ(ÐT`ÔTcÑ,dÔ,dˆÔ˜jÑ)åÔ  ¨\¬_Ñ=Ô=ˆàŒ×Ò˜SÑ!Ô!Ð!Øˆr9   r2   )NNNNNNNr²   )NNN)NNNN)9r³   r´   rµ   r¶   r   r   rÀ   r[   r·   r¼   r   r   rÒ   rÔ   r   rå   rà   rŠ   r   r   r   r¸   r¹   r=   rA   r«   rÙ   r  r   rŸ  rª  r   rp  r   r  r   rl  rm  rÁ  r   r:  r>   r©  r%   rÙ  r   r	   r!   r&   rð  rô  r"   rü  r#   r(   r  r  r£   r9   r7   r»   r»   e  s%  € € € € € ðð ðð ˜x¨Ô(=Ô>ð ð ð ð ð> ð˜Ô-ð ð ð ñ „Xðð ð,¨x¸Ô/Fð ,ð ,ð ,ñ „Vð,ð ð# 8¨MÔ#:ð #ð #ð #ñ „Vð#ð ð
 
ð 
ð 
ð 
ñ „Vð
ð* ð%ð %ñ „Vð%ð ð 15Ø%)Ø'+Ø37Ø)-Ø-1Ø+/ð#"ð #"Øð#"à" 4¨¤9Ô-ð#"ð ˜c”]ð#"ð   ”}ð	#"ð
 !  c¨3 h¤Ô0ð#"ð ! œð#"ð & cœ]ð#"ð $ Cœ=ð#"ð #"ð #"ñ „Vð#"ðJ ð$ð $ñ „Vð$ð ðð ñ „Vðð ð ð ð*ð ð ð8hT˜Xð hTð hTð hTð hTðT ð!0ð !0ñ „Vð!0ðF ða Yð a°3ð að að añ „Vðað ð˜nð ð ð ñ „Vðð
 ð ¤ð °X¸c´]ð ð ð ñ „Vðð
$ð $ð $ðL ð˜|ð ð ð ñ „Vðð" ðð ˜H SœMð ¸8ÀC¼=ð ð ð ñ „Vðð* ð0ð 0ñ „Vð0ð ðX˜Sð X°h¸{Ô6Kð Xð Xð Xñ „VðXðt ØNRØ\`ðCEð CE  x° }Ô!5ð CE¸hÀs¼mð CEØ#Ð$4Ô5ðCEØKSÐTXÌ>ðCEà�,  \Ô 2Ð2Ô3ðCEð CEð CEñ „VðCEðJ 7ð  7ð  7ðD ðf˜cð f°u¸SÀ*¸_Ô7Mð fð fð fñ „VðfðP ØRVØTXØ/3ð?Eð ?E  x° }Ô!5ð ?EÀ(È3Ä-ð ?EØ" ?Ô3ð?EØDLÈSÄMð?Eà& tœnð?Eà8=¸lÈDÐQ]ÔL^Ð>^Ô8_ð?Eð ?Eð ?Eñ „Vð?EðBð ð ð ð r9   r»   c                   ó^   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú_SessionShimar  
    shim that lets us present pep8 API for user-classes to override,
    but also backwards-compatible for existing code using
    ApplicationSession "directly".

    **NOTE:** this is not public or intended for use; you should import
    either autobahn.asyncio.wamp.Session or
    autobahn.twisted.wamp.Session depending on which async
    framework yo're using.
    Nc                 ó,   — |                       |¦  «        S r2   )Úon_joinr­  s     r7   r  z_SessionShim.onJoinC  s   € Ø�|Š|˜GÑ$Ô$Ð$r9   c                 óœ  — | j         r°d„ | j                              ¦   «         D ¦   «         d         }d„ | j                              ¦   «         D ¦   «         d         }|                      ¦   «         }|                      | j        j        t          | j                              ¦   «         ¦  «        |||¬¦  «         d S |                      ¦   «          d S )Nc                 óD   — g | ]}|j                              d d¦  «        ‘ŒS )rl   N©Ú_argsÚget©rÿ   Úxs     r7   r  z*_SessionShim.onConnect.<locals>.<listcomp>K  s(   € ÐYÐYÐY°a�a”g—k’k (¨DÑ1Ô1ÐYÐYÐYr9   éÿÿÿÿc                 óD   — g | ]}|j                              d d¦  «        ‘ŒS )ro   Nr  r  s     r7   r  z*_SessionShim.onConnect.<locals>.<listcomp>L  s(   € Ð]Ð]Ð]¸!˜œŸš J°Ñ5Ô5Ð]Ð]Ð]r9   )rê   rl   ro   ru   )	Ú_authenticatorsr»  Ú_merged_authextrar=   r¼   rg   r‡   ÚkeysÚ
on_connect)rZ   rl   ro   ru   s       r7   rà   z_SessionShim.onConnectF  sÛ   € ØÔð 	ð ZÐY¸4Ô;O×;VÒ;VÑ;XÔ;XÐYÑYÔYÐZ\Ô]ˆFØ]Ð]¸tÔ?S×?ZÒ?ZÑ?\Ô?\Ð]Ñ]Ô]Ð^`ÔaˆHð ×.Ò.Ñ0Ô0ˆIØ�IŠIØ”Ô!Ý  Ô!5×!:Ò!:Ñ!<Ô!<Ñ=Ô=ØØ!Ø#ð ñ ô ð ð ð ð �OŠOÑÔÐÐÐr9   c                 ó$  — 	 | j         |j                 }ng# t          $ rZ t          d                     |j        t          t          | j                              ¦   «         ¦  «        ¦  «        ¦  «        ¦  «        ‚w xY w|                     | |¦  «        S )NzBReceived challenge for unknown authmethod '{}' [authenticators={}])	r  rn  rŒ  rz   r¨   rŠ   Úsortedr  Úon_challenge)rZ   r”  Úauthenticators      r7   rp  z_SessionShim.onChallenge[  s™   € ð	Ø Ô0°Ô1AÔBˆMˆMøÝð 	ð 	ð 	ÝØT×[Ò[ØÔ$Ý�˜tÔ3×8Ò8Ñ:Ô:Ñ;Ô;Ñ<Ô<ñô ñô ð ð	øøøð ×)Ò)¨$°	Ñ:Ô:Ð:s
   ‚ •A$A9c                 óN  — |j         �| j        €d S 	 | j        |j                  }ng# t          $ rZ t          d                     |j         t          t          | j                             ¦   «         ¦  «        ¦  «        ¦  «        ¦  «        ‚w xY w|                     | |j	        ¦  «        S )NzBReceived onWelcome for unknown authmethod '{}' [authenticators={}])
rq   r  rŒ  rz   r¨   rŠ   r  r  Ú
on_welcomeru   )rZ   r”   r  s      r7   rm  z_SessionShim.onWelcomeg  s®   € ØŒ>Ð! TÔ%9Ð%AàˆFð	Ø Ô0°´Ô@ˆMˆMøÝð 	ð 	ð 	ÝØT×[Ò[Ø”NÝ�˜tÔ3×8Ò8Ñ:Ô:Ñ;Ô;Ñ<Ô<ñô ñô ð ð	øøøð ×'Ò'¨¨c¬mÑ<Ô<Ð<s
   ’% ¥A$B	c                 ó,   — |                       |¦  «        S r2   )Úon_leaver­  s     r7   r:  z_SessionShim.onLeavev  s   € Ø�}Š}˜WÑ%Ô%Ð%r9   c                 ó*   — |                       ¦   «         S r2   )Úon_disconnectrY   s    r7   r©  z_SessionShim.onDisconnecty  s   € Ø×!Ò!Ñ#Ô#Ð#r9   c           	      óˆ  ‡ ‡— t          ‰t          ¦  «        sJ ‚‰ j        €i ‰ _        ˆˆ fd„} |d¦  «          |d¦  «         ‰j        }‰                      ¦   «         }|                     ¦   «         D ]?\  }}||v r6||         |k    r*t          d                     ||||         ¦  «        ¦  «        ‚Œ@‰‰ j        ‰j        <   d S )Nc                 ó"  •‡ — t          ˆ fd„t          ‰j                             ¦   «         ¦  «        ‰gz   D ¦   «         ¦  «        }t	          |¦  «        dk    r6t          d                     ‰ d                     |¦  «        ¦  «        ¦  «        ‚d S )Nc                 ó<   •— g | ]}‰|j         v ¯|j         ‰         ‘ŒS r£   )r  )rÿ   Úar
  s     €r7   r  zG_SessionShim.add_authenticator.<locals>.at_most_one.<locals>.<listcomp>‰  s2   ø€ ð ð ð àØ˜1œ7�?�?ð ”˜”à"�?�?r9   rT  zInconsistent {}s: {}ú )Úsetr‡   r  r»  r„  Ú
ValueErrorr¨   r=   )r
  Úunir  rZ   s   ` €€r7   Úat_most_onez3_SessionShim.add_authenticator.<locals>.at_most_oneˆ  s¤   øø€ Ýð ð ð ð å˜dÔ2×9Ò9Ñ;Ô;Ñ<Ô<À¸ÑNðñ ô ñ ô ˆCõ
 �3‰xŒx˜!Š|ˆ|Ý Ø*×1Ò1ØØŸš ™œñô ñô ð ð ˆ|r9   rl   ro   z4Inconsistent authextra values for '{}': '{}' vs '{}')	rˆ   r   r  ru   r  r  r(  r¨   r
  )rZ   r  r*  ru   Úmergedrí  Úvs   ``     r7   Úadd_authenticatorz_SessionShim.add_authenticator~  s  øø€ Ý˜-­Ñ8Ô8Ð8Ð8Ð8ØÔÐ'Ø#%ˆDÔ ð	ð 	ð 	ð 	ð 	ð 	ð 	ˆ�HÑÔÐð 	ˆ�JÑÔÐð "Ô+ˆ	Ø×'Ò'Ñ)Ô)ˆØ—L’L‘N”Nð 	ð 	‰DˆAˆqØ�Iˆ~ˆ~ )¨A¤,°!Ò"3Ð"3Ý ØJ×QÒQØ˜1˜i¨œlñô ñô ð øð 4AˆÔ˜]Ô/Ñ0Ð0Ð0r9   c                 ó²   ‡‡— d„ | j                              ¦   «         D ¦   «         Šd„ }t          |‰t          ¦   «         ¦  «        }ˆfd„Šˆfd„|D ¦   «         S )a:  
        internal helper

        :returns: a single 'authextra' dict, consisting of all keys
            from any authenticator's authextra.

        Note that when the authenticator was added, we already checked
        that any keys it does contain has the same value as any
        existing authextra.
        c                 ó   — g | ]	}|j         ‘Œ
S r£   )ru   )rÿ   r%  s     r7   r  z2_SessionShim._merged_authextra.<locals>.<listcomp>¶  s   € ÐIÐIÐI a�a”kÐIÐIÐIr9   c                 óJ   — | t          |                     ¦   «         ¦  «        z  S r2   )r'  r  )r  Úys     r7   Úextract_keysz4_SessionShim._merged_authextra.<locals>.extract_keys¸  s   € Ø•s˜1Ÿ6š6™8œ8‘}”}Ñ$Ð$r9   c                 ón   •— ‰D ]}| |v r
||          c S Œt          d                     | ¦  «        ¦  «        ‚)zÌ
            for anything already in self._authenticators, we checked
            that it has the same value for any keys in its authextra --
            so here we just extract the first one
            zNo values for '{}')r(  r¨   )rí  ru   Ú
authextrass     €r7   Úfirst_value_forz7_SessionShim._merged_authextra.<locals>.first_value_for½  sW   ø€ ð (ð (ð (�	Ø˜	�>�>Ø$ Qœ<Ð'Ð'Ð'ð "õ Ø$×+Ò+¨AÑ.Ô.ñô ð r9   c                 ó(   •— i | ]}| ‰|¦  «        “ŒS r£   r£   )rÿ   rí  r5  s     €r7   ú
<dictcomp>z2_SessionShim._merged_authextra.<locals>.<dictcomp>Ë  s5   ø€ ð 
ð 
ð 
àð ˆˆ˜qÑ!Ô!ð
ð 
ð 
r9   )r  r»  r
   r'  )rZ   r2  Úunique_keysr4  r5  s      @@r7   r  z_SessionShim._merged_authextra«  s“   øø€ ð JÐI¨4Ô+?×+FÒ+FÑ+HÔ+HÐIÑIÔIˆ
ð	%ð 	%ð 	%õ ˜\¨:µs±u´uÑ=Ô=ˆð	ð 	ð 	ð 	ð 	ð
ð 
ð 
ð 
à ð
ñ 
ô 
ð 	
r9   c                 ó   — d S r2   r£   r­  s     r7   r
  z_SessionShim.on_joinÓ  ó   € Øˆr9   c                 ó.   — |                       ¦   «          d S r2   )rA   r­  s     r7   r  z_SessionShim.on_leaveÖ  s   € Ø�ŠÑÔÐÐÐr9   c                 óD   — |                       | j        j        ¦  «         d S r2   )r=   r¼   rg   rY   s    r7   r  z_SessionShim.on_connectÙ  s   € Ø�	Š	�$”+Ô#Ñ$Ô$Ð$Ð$Ð$r9   c                 ó   — d S r2   r£   rY   s    r7   r!  z_SessionShim.on_disconnectÜ  r:  r9   )r³   r´   rµ   r¶   r  r  rà   rp  rm  r:  r©  r-  r  r
  r  r  r!  r£   r9   r7   r  r  4  sÞ   € € € € € ð	ð 	ð €Oð%ð %ð %ðð ð ð*
;ð 
;ð 
;ð=ð =ð =ð&ð &ð &ð$ð $ð $ð
+Að +Að +AðZ#
ð #
ð #
ðPð ð ðð ð ð%ð %ð %ðð ð ð ð r9   r  c                   ó&   — e Zd ZdZeZ	 dd„Zd„ ZdS )ÚApplicationSessionFactoryz(
    WAMP endpoint session factory.
    Nc                 ó>   — |pt          j        d¬¦  «        | _        dS )z•

        :param config: The default component configuration.
        :type config: instance of :class:`autobahn.wamp.types.ComponentConfig`
        r¾   r¿   N)r   rÀ   r¼   rÍ   s     r7   r[   z"ApplicationSessionFactory.__init__î  s"   € ð ÐE¥Ô 5¸HÐ EÑ EÔ EˆŒˆˆr9   c                 óH   — |                       | j        ¦  «        }| |_        |S )z²
        Creates a new WAMP application session.

        :returns: -- An instance of the WAMP application session class as
                     given by `self.session`.
        )r  r¼   Úfactory)rZ   r  s     r7   Ú__call__z"ApplicationSessionFactory.__call__ö  s#   € ð —,’,˜tœ{Ñ+Ô+ˆØˆŒØˆr9   r2   )r³   r´   rµ   r¶   r»   r  r[   rC  r£   r9   r7   r?  r?  ä  sQ   € € € € € ðð ð !€GððFð Fð Fð Fð	ð 	ð 	ð 	ð 	r9   r?  )AÚtypingr   r   r   r   r   r   r	   rC   r3   Ú	functoolsr
   Úautobahnr   Úautobahn.utilr   r   r   Úautobahn.wampr   r   r   r   r   Úautobahn.wamp.exceptionr   r   r   r   Úautobahn.wamp.interfacesr   r   r   r   r   Úautobahn.wamp.typesr   r   r   r    r!   r"   r#   Úautobahn.exceptionr$   Úautobahn.wamp.requestr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r8   r;   r»   r  Úabc_registerÚobjectr?  r£   r9   r7   ú<module>rP     s1  ðð4 HÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gà €€€Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gØ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bÐ bð ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  à 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð8ð 8ð 8ðcð cð cð cð c�/ñ cô cð cðL	 ðKð Kð Kð Kð K˜ñ Kô Kñ „ðKð\.ið ið ið ið iÐ%ñ iô ið iðZ €Ô Ð(Ñ )Ô )Ð )ðð ð ð ð  ñ ô ð ð ð r9   