§
    Ìtºfƒ  ã                   ó  — d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZm	Z	 d dl
mZ ddlmZm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 dd
lmZmZ  G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z dS )é    N)ÚRegisterOptionsÚCallDetails)ÚApplicationErrorÚTransportLost)ÚApplicationSessioné   )Úunpack_uint256Úpack_uint256)Útime_nsé   )ÚhlÚhlval)Úsign_eip712_channel_closeÚrecover_eip712_channel_closec                   óN   — e Zd ZdZd
d„Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
d	„ ZdS )Ú	KeySeriesz}
    Data encryption key series with automatic (time-based) key rotation
    and key offering (to the XBR market maker).
    Nc                 óî  — t          |¦  «        t          k    rt          |¦  «        dk    sJ ‚t          |¦  «        t          k    r|dk    sJ ‚|� t          |¦  «        t          k    r|dk    sJ ‚|� t          |¦  «        t          k    r|dk    sJ ‚|€|€|�|�J ‚|�t	          |¦  «        sJ ‚|| _        || _        || _        || _        d| _	        || _
        d| _        d| _        d| _        i | _        dS )aÿ  

        :param api_id: ID of the API for which to generate keys.
        :type api_id: bytes

        :param price: Price per key in key series.
        :type price: int

        :param interval: Interval in seconds after which to auto-rotate key.
        :type interval: int

        :param count: Number of encryption operations after which to auto-rotate key.
        :type count: int

        :param on_rotate: Optional user callback fired after key was rotated.
        :type on_rotate: callable
        é   r   N)ÚtypeÚbytesÚlenÚintÚcallableÚ_api_idÚ_priceÚ	_intervalÚ_countÚ_count_currentÚ
_on_rotateÚ_idÚ_keyÚ_boxÚ_archive)ÚselfÚapi_idÚpriceÚintervalÚcountÚ	on_rotates         úS/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/xbr/_seller.pyÚ__init__zKeySeries.__init__7   s  € õ$ �F‰|Œ|�uÒ$Ð$­¨V©¬¸Ò):Ð):Ð):Ð):Ý�E‰{Œ{�cÒ!Ð! e¨q¢j j j jØÐ¥D¨¡N¤NµcÒ$9Ð$9¸hÈºl¸l¸l¸lØˆ}¥ e¡¤µÒ!3Ð!3¸Àº	¸	¸	¸	ØÐ  UÐ%6¸HÐ<PÐUZÐUbÐUbÐUbØÐ ¥H¨YÑ$7Ô$7Ð Ð Ð àˆŒØˆŒØ!ˆŒØˆŒØˆÔØ#ˆŒàˆŒØˆŒ	ØˆŒ	ØˆŒˆˆó    c                 ó   — | j         S )zº
        Get current XBR data encryption key ID (of the keys being rotated
        in a series).

        :return: Current key ID in key series (16 bytes).
        :rtype: bytes
        )r    ©r$   s    r*   Úkey_idzKeySeries.key_id\   s   € ð Œxˆr,   c              ƒ   ó  K  — t          j        |¦  «        }| j        �A| xj        dz  c_        | j        | j        k    r!|                      ¦   «         ƒ d{V —† d| _        | j                             |¦  «        }| j        d|fS )zý
        Encrypt data with the current XBR data encryption key.

        :param payload: Application payload to encrypt.
        :type payload: object

        :return: The ciphertext for the encrypted application payload.
        :rtype: bytes
        Nr   r   Úcbor)Úcbor2Údumpsr   r   Ú_rotater"   Úencryptr    )r$   ÚpayloadÚdataÚ
ciphertexts       r*   r5   zKeySeries.encryptg   s�   è è € õ Œ{˜7Ñ#Ô#ˆàŒ;Ð"ØÐÔ 1Ñ$ÐÔØÔ" d¤kÒ1Ð1Ø—l’l‘n”nÐ$Ð$Ð$Ð$Ð$Ð$Ð$Ø&'�Ô#à”Y×&Ò& tÑ,Ô,ˆ
àŒx˜ Ð+Ð+r,   c                 óÀ  — t          |¦  «        t          k    rt          |¦  «        dk    sJ ‚t          |¦  «        t          k    rt          |¦  «        dk    sJ ‚| j        |         \  }}t          j                             t          j                             |t          j        j	        ¬¦  «        ¦  «        }| 
                    |t          j        j	        ¬¦  «        }|S )aÚ  
        Encrypt a (previously used) XBR data encryption key with a buyer public key.

        :param key_id: ID of the data encryption key to encrypt.
        :type key_id: bytes

        :param buyer_pubkey: Buyer WAMP public key (Ed25519) to asymmetrically encrypt
            the data encryption key (selected by ``key_id``) against.
        :type buyer_pubkey: bytes

        :return: The ciphertext for the encrypted data encryption key.
        :rtype: bytes
        r   é    )Úencoder)r   r   r   r#   ÚnaclÚpublicÚ	SealedBoxÚ	PublicKeyÚencodingÚ
RawEncoderr5   )r$   r/   Úbuyer_pubkeyÚkeyÚ_Úsendkey_boxÚencrypted_keys          r*   Úencrypt_keyzKeySeries.encrypt_key}   sÊ   € õ �F‰|Œ|�uÒ$Ð$­¨V©¬¸Ò):Ð):Ð):Ð):Ý�LÑ!Ô!¥UÒ*Ð*­s°<Ñ/@Ô/@ÀBÒ/FÐ/FÐ/FÐ/Fà”˜vÔ&‰ˆˆQå”k×+Ò+­D¬K×,AÒ,AÀ,ÝJNÌ-ÔJbð -Bñ -dô -dñ eô eˆð $×+Ò+¨C½¼Ô9QÐ+ÑRÔRˆàÐr,   c                 ó   — t          ¦   «         ‚©N©ÚNotImplementedErrorr.   s    r*   ÚstartzKeySeries.start—   ó   € Ý!Ñ#Ô#Ð#r,   c                 ó   — t          ¦   «         ‚rI   rJ   r.   s    r*   ÚstopzKeySeries.stopš   rM   r,   c           
   ƒ   ój  K  — t          j        d¦  «        | _        t          j                             t          j        j        j        ¦  «        | _	        t          j                             | j	        ¦  «        | _
        | j	        | j
        f| j        | j        <   | j                             dt          dd¬¦  «        t          t          j        | j        ¬¦  «        ¦  «        t          t          j        | j        ¬¦  «        ¦  «        ¬¦  «         | j        r|                      | ¦  «        ƒ d {V —† d S d S )Nr   z4{tx_type} key "{key_id}" rotated [api_id="{api_id}"]z
XBR ROTATEÚmagenta©Úcolor©r   )Útx_typer/   r%   )ÚosÚurandomr    r<   ÚutilsÚrandomÚsecretÚ	SecretBoxÚKEY_SIZEr!   r"   r#   ÚlogÚdebugr   ÚuuidÚUUIDr   r   r.   s    r*   r4   zKeySeries._rotate�   s  è è € å”:˜b‘>”>ˆŒõ ”J×%Ò%¥d¤kÔ&;Ô&DÑEÔEˆŒ	õ ”K×)Ò)¨$¬)Ñ4Ô4ˆŒ	ð $(¤9¨d¬iÐ"8ˆŒ�d”hÑàŒ�ŠØBÝ�|¨9Ð5Ñ5Ô5Ý•d”i d¤hÐ/Ñ/Ô/Ñ0Ô0Ý•d”i d¤lÐ3Ñ3Ô3Ñ4Ô4ð	 	ñ 	6ô 	6ð 	6ð Œ?ð 	(Ø—/’/ $Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð	(ð 	(r,   ©NNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+   Úpropertyr/   r5   rG   rL   rO   r4   © r,   r*   r   r   1   s™   € € € € € ðð ð
#ð #ð #ð #ðJ ðð ñ „Xðð,ð ,ð ,ð,ð ð ð4$ð $ð $ð$ð $ð $ð(ð (ð (ð (ð (r,   r   c                   ó   — e Zd Zd„ ZdS )ÚPayingChannelc                 ó
  — t          |¦  «        t          k    rt          |¦  «        dk    sJ ‚t          |¦  «        t          k    r|dk    sJ ‚t          |¦  «        t          k    r|dk    sJ ‚|| _        || _        || _        d S )Nr   r   )r   r   r   r   Ú_adrÚ_seqÚ_balance)r$   ÚadrÚseqÚbalances       r*   r+   zPayingChannel.__init__¶   sx   € Ý�C‰yŒy�EÒ!Ð!¥c¨#¡h¤h°"¢n n n nÝ�C‰yŒy�CÒÐ C¨1¢H H H HÝ�G‰}Œ}¥Ò#Ð#¨°1ª¨¨¨ØˆŒ	ØˆŒ	ØˆŒˆˆr,   N)rb   rc   rd   r+   rg   r,   r*   ri   ri   µ   s#   € € € € € ð ð  ð  ð  ð  r,   ri   c                   óz   — e Zd ZdZdZdZdZdZdZdZ	dd„Z
ed„ ¦   «         Zdd	„Zd
„ Zd„ Zd„ Zd„ Z	 dd„Zdd„ZdS )ÚSimpleSellerNr   r   r   é   é   c                 ój  — t          |¦  «        t          k    rt          |¦  «        dk    sJ d                     |¦  «        ¦   «         ‚t          |¦  «        t          k    rt          |¦  «        dk    sJ d                     |¦  «        ¦   «         ‚|�5t          |¦  «        t          k    sJ d                     |¦  «        ¦   «         ‚t          j        ¦   «         | _        t          j	        | _
        || _        d| _        || _        t          j                             |¦  «        | _        d| _        | j        j                             ¦   «         | _        d| _        |pt	          | j        j        ¦  «        | _        i | _        d| _        d| _        d| _        i | _        i | _        d| _        d| _        dS )aå  

        :param market_maker_adr: Market maker public Ethereum address (20 bytes).
        :type market_maker_adr: bytes

        :param seller_key: Seller (delegate) private Ethereum key (32 bytes).
        :type seller_key: bytes

        :param provider_id: Optional explicit data provider ID. When not given, the seller delegate
            public WAMP key (Ed25519 in Hex) is used as the provider ID. This must be a valid WAMP URI part.
        :type provider_id: string
        é   z0market_maker_adr must be bytes[20], but got "{}"r:   z/seller delegate must be bytes[32], but got "{}"Nz0provider_id must be None or string, but got "{}"r   ) r   r   r   ÚformatÚstrÚtxaioÚmake_loggerr]   rr   Ú
STATE_NONEÚ_stateÚ_market_maker_adrÚ_xbrmm_configÚ	_pkey_rawÚeth_keysÚkeysÚ
PrivateKeyÚ_pkeyÚ_acctÚ
public_keyÚto_canonical_addressÚ_addrÚ_caddrÚ_provider_idÚ	_channelsÚ_channelrm   rl   Ú_keysÚ	_keys_mapÚ_sessionÚ_session_regs)r$   Úmarket_maker_adrÚ
seller_keyÚprovider_ids       r*   r+   zSimpleSeller.__init__Ê   sÏ  € õ Ð$Ñ%Ô%­Ò.Ð.µ3Ð7GÑ3HÔ3HÈBÒ3NÐ3NÐ3Nð  QC÷  QJò  QJð  K[ñ  Q\ô  Q\Ñ3NÔ3NÐ3NÝ�JÑÔ¥5Ò(Ð(­S°©_¬_ÀÒ-BÐ-BÐ-BÐDu×D|ÒD|ð  ~Hñ  EIô  EIÑ-BÔ-BÐ-BØÐ"¥d¨;Ñ&7Ô&7½3Ò&>Ð&>Ð&>Ð@r×@yÒ@yð  {Fñ  AGô  AGÑ&>Ô&>Ð&>åÔ$Ñ&Ô&ˆŒõ #Ô-ˆŒð "2ˆÔØ!ˆÔð $ˆŒõ ”]×-Ò-¨jÑ9Ô9ˆŒ
ð
 ˆŒ
ð ”ZÔ*×?Ò?ÑAÔAˆŒ
ð
 ˆŒð (ÐE­3¨t¬zÔ/DÑ+EÔ+EˆÔàˆŒð ˆŒð ˆŒð ˆŒ	àˆŒ
ØˆŒð ˆŒØ!ˆÔÐÐr,   c                 ó   — | j         j        S )z�
        This seller delegate public Ethereum key.

        :return: Ethereum public key of this seller delegate.
        :rtype: bytes
        )rƒ   r…   r.   s    r*   r…   zSimpleSeller.public_key  s   € ð ŒzÔ$Ð$r,   c                 óª  ‡ ‡‡‡‡— t          ‰¦  «        t          k    rt          ‰¦  «        dk    r	‰‰ j        vsJ ‚t          ‰¦  «        t          k    r‰dk    sJ ‚|� t          |¦  «        t          k    r|dk    sJ ‚|� t          |¦  «        t          k    r|dk    sJ ‚|€|€|�|�J ‚‰�^t          ‰¦  «        t
          k    r<d„ ‰                     ¦   «         D ¦   «         rd„ ‰                     ¦   «         D ¦   «         s
J d¦   «         ‚ˆˆˆˆˆ fd„}‰                      ‰‰|||¬¦  «        }|‰ j        ‰<   ‰ j	         
                    d	|¬
¦  «         |S )a  
        Add a new (rotating) private encryption key for encrypting data on the given API.

        :param api_id: API for which to create a new series of rotating encryption keys.
        :type api_id: bytes

        :param price: Price in XBR token per key.
        :type price: int

        :param interval: Interval (in seconds) after which to auto-rotate the encryption key.
        :type interval: int

        :param count: Number of encryption operations after which to auto-rotate the encryption key.
        :type count: int
        r   r   Nc              3   óF   K  — | ]}t          |¦  «        t          k    V — Œd S rI   ©r   rx   )Ú.0Úks     r*   ú	<genexpr>z#SimpleSeller.add.<locals>.<genexpr>+  s-   è è € ÐCnÐCnÐWXÅDÈÁGÄGÍsÂNÐCnÐCnÐCnÐCnÐCnÐCnr,   c              3   óF   K  — | ]}t          |¦  «        t          k    V — Œd S rI   r–   )r—   Úvs     r*   r™   z#SimpleSeller.add.<locals>.<genexpr>+  s_   è è € ð  tað  tað  HIÕtxÐyzÑt{Ôt{õ  @Cò  uCð  tað  tað  tað  tað  tað  tar,   zZinvalid categories type (must be dict) or category key or value type (must both be string)c              “   óÔ  •K  — | j         }| ‰j        |<   d}|�rN	 t          ¦   «         dz
  }‰j        }t	          j        d¦  «        }‰j        }‰j                             d|‰	‰|||d ‰�t          ‰¦  «        nd ‰
d d |¬¦  «        ƒ d {V —†}‰j
                             dt          dd¬	¦  «        t          t          j        |¬
¦  «        ¦  «        t          t          j        ‰	¬
¦  «        ¦  «        t          t          ‰�t!          ‰dz  ¦  «        nd¦  «        dz   d¬	¦  «        t          t#          j        |¦  «                             ¦   «         ¦  «        t          ‰¦  «        ¬¦  «         ‰j
                             d|¬¦  «         d S # t(          $ rO}|j        dk    r‰j
                             d¦  «         n‰j
                             ¦   «          Y d }~d S Y d }~nId }~wt0          $ r ‰j
                             d¦  «         Y d S  ‰j
                             ¦   «          Y nxY w|dz  }‰j
                             d|¬¦  «         t3          j        d¦  «        ƒ d {V —† |�°Ld S d S )Né   l    d(	 éA   zxbr.marketmaker.place_offer)Úprivkeyr&   Ú
categoriesÚexpiresÚcopiesr’   zh{tx_type} key "{key_id}" offered for {price} [api_id={api_id}, prefix="{prefix}", delegate="{delegate}"]z
XBR OFFER rQ   rR   rT   ì     ÈNÎZor   ú XBR)rU   r/   r%   r&   ÚdelegateÚprefixzoffer={offer})Úofferzwamp.error.no_such_procedurez-xbr.marketmaker.offer: procedure unavailable!z2TransportLost while calling xbr.marketmaker.offer!r   z6Failed to place offer for key! Retrying {retries}/5 ..)Úretries)r/   r�   r   r‡   rV   rW   r‰   rŽ   Úcallr
   r]   r^   r   r_   r`   rx   r   ÚbinasciiÚb2a_hexÚdecoder   ÚerrorÚwarnÚfailurer   ÚasyncioÚsleep)Ú
key_seriesr/   r¨   Ú
valid_fromr¥   Ú	signaturer’   r§   Úer%   r    r¦   r&   r$   s            €€€€€r*   r)   z#SimpleSeller.add.<locals>.on_rotate-  sá  øè è € àÔ&ˆFà%/ˆDŒN˜6Ñ"ð
 ˆGØñ 1'ð,'Ý!(¡¤¨\Ñ!9�JØ#œz�Hå "¤
¨2¡¤�IØ"&Ô"3�Kà"&¤-×"4Ò"4Ð5RØ5;Ø5;Ø5;Ø5?Ø5=Ø5>Ø=AØRWÐRc½<ÈÑ;NÔ;NÐ;NÐimØ@JØ=AØ<@ØALð #5ñ #Nô #Nð Nð Nð Nð Nð Nð N�Eð ”H—N’Nð CÝ " <°yÐ AÑ AÔ AÝ!¥$¤)°&Ð"9Ñ"9Ô"9Ñ:Ô:Ý!¥$¤)°&Ð"9Ñ"9Ô"9Ñ:Ô:Ý ¥¸eÐ>O¥S¨°Ñ)9Ñ%:Ô%:Ð%:ÐUVÑ!WÔ!WÐZ`Ñ!`ÐhqÐrÑrÔrÝ!#¥HÔ$4°XÑ$>Ô$>×$EÒ$EÑ$GÔ$GÑ!HÔ!HÝ! &™zœzð #ñ +ô +ð +ð ”H—N’N ?¸%�NÑ@Ô@Ð@à�Eøå'ð ð ð Ø”wÐ"@Ò@Ð@ØœŸšÐ&UÑVÔVÐVÐVàœ×(Ò(Ñ*Ô*Ð*Ø˜˜˜˜˜ð WÐVÐVÐVÐVøøøøõ %ð ð ð Ø”H—M’MÐ"VÑWÔWÐWØ�E�Eð'Ø”H×$Ò$Ñ&Ô&Ð&Ð&Ð&øøøà˜1‘�Ø”—’ÐVÐ`g�ÑhÔhÐhÝ”m AÑ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ðc ñ 1'ð 1'ð 1'ð 1'ð 1's   ›E.F Æ
H%Æ?GÇ'H%È	H%)r'   r(   r)   z#Created new key series {key_series})r²   )r   r   r   rŒ   r   Údictr�   Úvaluesr   r]   r^   )	r$   r%   r¦   r&   r'   r(   r    r)   r²   s	   ````  `  r*   ÚaddzSimpleSeller.add  sÄ  øøøøø€ õ  �F‰|Œ|�uÒ$Ð$­¨V©¬¸Ò):Ð):¸vÈTÌZÐ?WÐ?WÐ?WÐ?WÝ�E‰{Œ{�cÒ!Ð! e¨q¢j j j jØÐ¥D¨¡N¤NµcÒ$9Ð$9¸hÈºl¸l¸l¸lØˆ}¥ e¡¤µÒ!3Ð!3¸Àº	¸	¸	¸	ØÐ  UÐ%6¸HÐ<PÐUZÐUbÐUbÐUbØÐ!¥d¨:Ñ&6Ô&6½$Ò&>Ð&>ÐCnÐCnÐ\f×\kÒ\kÑ\mÔ\mÐCnÑCnÔCnÐ&>ð  tað  tað  MW÷  M^ò  M^ñ  M`ô  M`ð  tañ  taô  taÐ&>Ð&>ð  d@Ñ&>Ô&>Ð&>ð;	'ð ;	'ð ;	'ð ;	'ð ;	'ð ;	'ð ;	'ð ;	'ð ;	'ðz —^’^ F¨E¸HÈEÐ]f�^ÑgÔgˆ
Ø'ˆŒ
�6ÑØŒ�ŠÐ<ÈˆÑTÔTÐTàÐr,   c           	   ƒ   óŽ  K  — t          |t          ¦  «        sJ d                     |¦  «        ¦   «         ‚| j        t          j        t          j        fv s
J d¦   «         ‚t          j        | _        || _        g | _	        | j
                             dt          | j        ¦  «        t          j        | j        j        dd…         ¦  «                             ¦   «         ¬¦  «         |                     d| j        ¦  «        ƒ d{V —†| _        | j        st-          d¦  «        ‚| j        d	         }t/          |¦  «        t0          k    rt3          |¦  «        d
k    sJ ‚t5          j        |¬¦  «        | _        d                     | j        ¦  «        }|                     | j        |tA          d¬¦  «        ¬¦  «        ƒ d{V —†}| j	         !                    |¦  «         | j
                             dt          |j"        ¦  «        ¬¦  «         d                     | j        ¦  «        }|                     | j#        |tA          d¬¦  «        ¬¦  «        ƒ d{V —†}| j	         !                    |¦  «         | j
                             dt          |j"        ¦  «        ¬¦  «         | j$         %                    ¦   «         D ]}| &                    ¦   «         ƒ d{V —† Œ|                     d¦  «        ƒ d{V —†| _'        |                     d| j        j        ¦  «        ƒ d{V —†}t/          |d         ¦  «        t0          k    rtQ          |d         ¦  «        |d<   |d         dk    st-          d¦  «        ‚tS          ||d         |d         ¦  «        | j*        |<   t          j+        | _        |d         | _,        t/          | j,        ¦  «        t0          k    rtQ          | j,        ¦  «        | _,        |d         | _-        | j
         .                    dt          | j        ¦  «        t_          | j,        ¦  «        t_          | j-        ¦  «        ¬¦  «         |d         S )zü
        Start rotating keys and placing key offers with the XBR market maker.

        :param session: WAMP session over which to communicate with the XBR market maker.
        :type session: :class:`autobahn.wamp.protocol.ApplicationSession`
        z/session must be an ApplicationSession, was "{}"zseller already runningzRStart selling from seller delegate address {address} (public key 0x{public_key}..)Né
   )Úaddressr…   z)xbr.marketmaker.get_active_paying_channelzno active paying channel foundÚchannel_oidr   rT   zxbr.provider.{}.sellÚdetails)Údetails_arg)Úoptionsz"Registered procedure "{procedure}")Ú	procedurezxbr.provider.{}.close_channelzxbr.marketmaker.get_configú*xbr.marketmaker.get_paying_channel_balanceÚ	remainingr   z0no off-chain balance remaining on paying channelro   zvOk, seller delegate started [active paying channel {channel_oid} with remaining balance {remaining} at sequence {seq}])r¼   rÂ   ro   )0Ú
isinstancer   rw   r|   rr   r{   ÚSTATE_STOPPEDÚSTATE_STARTINGrŽ   r�   r]   r^   r   rˆ   rª   r«   rƒ   r…   r¬   r©   r‡   r‹   Ú	Exceptionr   r   r   r_   r`   Ú_channel_oidr‰   ÚregisterÚsellr   ÚappendrÀ   Úclose_channelrŒ   r·   rL   r~   r	   ri   rŠ   ÚSTATE_STARTEDrm   rl   Úinfor   )r$   Úsessionr¼   rÀ   Úregr²   Úpaying_balances          r*   rL   zSimpleSeller.startp  s(  è è € õ ˜'Õ#5Ñ6Ô6ÐyÐyÐ8i×8pÒ8pÐqxÑ8yÔ8yÑyÔyÐyØŒ{�|Ô6½Ô8RÐSÐSÐSÐSÐUmÑSÔSÐSå"Ô1ˆŒØˆŒØˆÔàŒ�ŠÐkÝ! $¤+™œÝ"*Ô"2°4´:Ô3HÈÈ"ÈÔ3MÑ"NÔ"N×"UÒ"UÑ"WÔ"Wð 	ñ 	Yô 	Yð 	Yð
 &ŸlšlÐ+VÐX\ÔXbÑcÔcÐcÐcÐcÐcÐcÐcˆŒØŒ}ð 	>ÝÐ<Ñ=Ô=Ð=à”m MÔ2ˆÝ�KÑ Ô ¥EÒ)Ð)­c°+Ñ.>Ô.>À"Ò.DÐ.DÐ.DÐ.DÝ œI¨KÐ8Ñ8Ô8ˆÔà*×1Ò1°$Ô2CÑDÔDˆ	Ø×$Ò$ T¤Y°	Å?Ð_hÐCiÑCiÔCiÐ$ÑjÔjÐjÐjÐjÐjÐjÐjˆØÔ×!Ò! #Ñ&Ô&Ð&ØŒ�ŠÐ;ÅrÈ#Ì-ÑGXÔGXˆÑYÔYÐYà3×:Ò:¸4Ô;LÑMÔMˆ	Ø×$Ò$ TÔ%7¸ÍOÐhqÐLrÑLrÔLrÐ$ÑsÔsÐsÐsÐsÐsÐsÐsˆØÔ×!Ò! #Ñ&Ô&Ð&ØŒ�ŠÐ;ÅrÈ#Ì-ÑGXÔGXˆÑYÔYÐYàœ*×+Ò+Ñ-Ô-ð 	%ð 	%ˆJØ×"Ò"Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$à#*§<¢<Ð0LÑ#MÔ#MÐMÐMÐMÐMÐMÐMˆÔð  'Ÿ|š|Ð,XÐZ^ÔZkÔZqÑrÔrÐrÐrÐrÐrÐrÐrˆå�˜{Ô+Ñ,Ô,µÒ5Ð5Ý*8¸ÈÔ9TÑ*UÔ*UˆN˜;Ñ'à˜kÔ*¨QÒ.Ð.ÝÐNÑOÔOÐOå&3°KÀÐPUÔAVÐXfÐgrÔXsÑ&tÔ&tˆŒ�{Ñ#Ý"Ô0ˆŒð ' {Ô3ˆŒÝ�”ÑÔ¥%Ò'Ð'Ý*¨4¬=Ñ9Ô9ˆDŒMØ" 5Ô)ˆŒ	àŒ�Šð  OÝ"$ TÔ%6Ñ"7Ô"7Å5ÈÌÑCWÔCWÕ]bÐcgÔclÑ]mÔ]mð 	ñ 	oô 	oð 	oð ˜kÔ*Ð*r,   c              ƒ   óÔ  K  — | j         t          j        fv s
J d¦   «         ‚t          j        | _         g }| j                             ¦   «         D ]+}|                     ¦   «         }|                     |¦  «         Œ,| j        rZ| j	        rL| j	         
                    ¦   «         r3| j        D ]+}|                     ¦   «         }|                     |¦  «         Œ,d| _        t          j        |¦  «        }	 |ƒ d{V —† n #  | j                             ¦   «          Y nxY wt          j        | _         d| _	        n# t          j        | _         d| _	        w xY w| j                             d¦  «         dS )zF
        Stop rotating/offering keys to the XBR market maker.
        úseller not runningNzOk, seller delegate stopped.)r|   rr   rÌ   ÚSTATE_STOPPINGrŒ   r·   rO   rÊ   r�   rŽ   Úis_attachedÚ
unregisterry   Úgatherr]   r¯   rÄ   rÍ   )r$   Údlr²   ÚdrÏ   s        r*   rO   zSimpleSeller.stop±  sr  è è € ð Œ{�|Ô9Ð:Ð:Ð:Ð:Ð<PÑ:Ô:Ð:å"Ô1ˆŒàˆØœ*×+Ò+Ñ-Ô-ð 	ð 	ˆJØ—’Ñ!Ô!ˆAØ�IŠI�a‰LŒLˆLˆLàÔð 	&ØŒ}ð ! ¤×!:Ò!:Ñ!<Ô!<ð !àÔ-ð !ð !�CØŸšÑ(Ô(�AØ—I’I˜a‘L”L�L�LØ!%ˆDÔåŒL˜ÑÔˆð	!ØˆGˆGˆGˆGˆGˆGˆGˆGøð	ØŒH×ÒÑÔÐÐÐøøøå&Ô4ˆDŒKØ ˆDŒMˆMøõ 'Ô4ˆDŒKØ ˆDŒMÐ Ð Ð Ð àŒ�ŠÐ4Ñ5Ô5Ð5Ð5Ð5s   Ã/C8 Ã7D1 Ã8DÄD1 Ä1Ec              ƒ   ó  K  — | j         t          j        fvrt          d¦  «        ‚| j        r| j                             ¦   «         st          d¦  «        ‚| j                             d| j        d         ¦  «        ƒ d{V —†}|S )a   
        Return current (off-chain) balance of paying channel:

        * ``amount``: The initial amount with which the paying channel was opened.
        * ``remaining``: The remaining amount of XBR in the paying channel that can be earned.
        * ``inflight``: The amount of XBR allocated to sell transactions that are currently processed.

        :return: Current paying balance.
        :rtype: dict
        rÒ   z!market-maker session not attachedrÁ   r¼   N)r|   rr   rÌ   ÚRuntimeErrorrŽ   rÔ   r©   r‹   )r$   rÐ   s     r*   rp   zSimpleSeller.balanceÒ  s”   è è € ð Œ;�|Ô9Ð:Ð:Ð:ÝÐ3Ñ4Ô4Ð4ØŒ}ð 	D D¤M×$=Ò$=Ñ$?Ô$?ð 	DÝÐBÑCÔCÐCà#œ}×1Ò1Ð2^Ð`dÔ`mÐn{Ô`|Ñ}Ô}Ð}Ð}Ð}Ð}Ð}Ð}ˆàÐr,   c              ƒ   ó  K  — t          |¦  «        t          k    rt          |¦  «        dk    r	|| j        v sJ ‚t          |¦  «        t          k    sJ ‚|€J ‚| j        |         }|                     |¦  «        ƒ d{V —†\  }}}|||fS )aG  
        Encrypt and wrap application payload for a given API and destined for a specific WAMP URI.

        :param api_id: API for which to encrypt and wrap the application payload for.
        :type api_id: bytes

        :param uri: WAMP URI the application payload is destined for (eg the procedure or topic URI).
        :type uri: str

        :param payload: Application payload to encrypt and wrap.
        :type payload: object

        :return: The encrypted and wrapped application payload: a tuple with ``(key_id, serializer, ciphertext)``.
        :rtype: tuple
        r   N)r   r   r   rŒ   rx   r5   )r$   r%   Úurir6   Ú	keyseriesr/   Ú
serializerr8   s           r*   ÚwrapzSimpleSeller.wrapæ  s£   è è € õ  �F‰|Œ|�uÒ$Ð$­¨V©¬¸Ò):Ð):¸vÈÌÐ?SÐ?SÐ?SÐ?SÝ�C‰yŒy�CÒÐÐÐØÐ"Ð"Ð"à”J˜vÔ&ˆ	à/8×/@Ò/@ÀÑ/IÔ/IÐ)IÐ)IÐ)IÐ)IÐ)IÐ)IÑ&ˆ�
˜Jà�z :Ð-Ð-r,   c                 ó  — t          |¦  «        t          k    rt          |¦  «        dk    s*J d                     t          |¦  «        ¦  «        ¦   «         ‚t          |¦  «        t          k    rt          |¦  «        dk    s*J d                     t          |¦  «        ¦  «        ¦   «         ‚t          |¦  «        t          k    s*J d                     t          |¦  «        ¦  «        ¦   «         ‚t          |¦  «        t          k    rt          |¦  «        dk    s*J d                     t          |¦  «        ¦  «        ¦   «         ‚t          |¦  «        t
          k    s*J d                     t          |¦  «        ¦  «        ¦   «         ‚t          |¦  «        t          k    rt          |¦  «        d	k    s*J d
                     t          |¦  «        ¦  «        ¦   «         ‚|�t          |t          ¦  «        s
J d¦   «         ‚|| j        k    r|t          dd                     | j
        j        t          j        | j        ¦  «                             ¦   «         t          j        |¦  «                             ¦   «         ¦  «        ¦  «        ‚|| j        d         k    r›| j                             ¦   «          t          dd                     | j
        j        t          j        | j        d         ¦  «                             ¦   «         t          j        |¦  «                             ¦   «         ¦  «        ¦  «        ‚|| j        k    r7t          dd                     | j
        j        | j        dz   |¦  «        ¦  «        ‚t'          |¦  «        }|| j        k    r4t          dd                     | j
        j        | j        |¦  «        ¦  «        ‚t+          |||||¦  «        }||k    r·| j                             d| j
        j        t1          t          j        |¦  «                             ¦   «         ¦  «        t1          t          j        |¦  «                             ¦   «         ¦  «        ¬¦  «         t          dd                     | j
        j        ¦  «        ¦  «        ‚t3          | j        ||||¦  «        }	| j        |t9          |¦  «        ||	dœ}
| j                             d| j
        j        t1          dd¬¦  «        t1          t=          t	          |d z  ¦  «        ¦  «        d!z   d¬¦  «        t1          |¦  «        t1          t          j        |¦  «                             ¦   «         ¦  «        t1          |j        ¦  «        t1          |j         ¦  «        ¬"¦  «         |
S )#zI
        Called by a XBR Market Maker to close a paying channel.
        rv   z.market_maker_adr must be bytes[20], but was {}r   z)channel_oid must be bytes[16], but was {}z#channel_seq must be int, but was {}r:   z-channel_balance must be bytes[32], but was {}z)channel_is_final must be bool, but was {}rž   z3marketmaker_signature must be bytes[65], but was {}Nú/details must be autobahn.wamp.types.CallDetailsz!xbr.error.unexpected_delegate_adrzS{}.sell() - unexpected market maker (delegate) address: expected 0x{}, but got 0x{}r¼   ú xbr.error.unexpected_channel_oidúJ{}.sell() - unexpected paying channel address: expected 0x{}, but got 0x{}ú xbr.error.unexpected_channel_seqúR{}.sell() - unexpected channel (after tx) sequence number: expected {}, but got {}r   ú$xbr.error.unexpected_channel_balanceúJ{}.sell() - unexpected channel (after tx) balance: expected {}, but got {}út{klass}.sell()::XBRSIG[4/8] - EIP712 signature invalid: signer_address={signer_address}, delegate_adr={delegate_adr}©ÚklassÚsigner_addressÚdelegate_adrúxbr.error.invalid_signatureúO{}.sell()::XBRSIG[4/8] - EIP712 signature invalid or not signed by market maker)r¥   ro   rp   Úis_finalr´   z·{klass}.close_channel() - {tx_type} closing channel {channel_oid}, closing balance {channel_balance}, closing sequence {channel_seq} [caller={caller}, caller_authid="{caller_authid}"]zXBR CLOSE  rQ   rR   r£   r¤   )rê   rU   Úchannel_balanceÚchannel_seqr¼   ÚcallerÚcaller_authid)!r   r   r   rw   r   ÚboolrÃ   r   r}   r   Ú	__class__rb   rª   r«   r¬   r‹   rŽ   Úleaverl   r	   rm   r   r]   r®   r   r   r   r‡   r
   r^   rx   rò   ró   )r$   r�   r¼   rñ   rð   Úchannel_is_finalÚmarketmaker_signaturer½   rë   Úseller_signatureÚreceipts              r*   rË   zSimpleSeller.close_channel   s÷  € õ
 Ð$Ñ%Ô%­Ò.Ð.µ3Ð7GÑ3HÔ3HÈBÒ3NÐ3NÐ3Nð  QA÷  QHò  QHõ  IMð  N^ñ  I_ô  I_ñ  Q`ô  Q`Ñ3NÔ3NÐ3NÝ�KÑ Ô ¥EÒ)Ð)­c°+Ñ.>Ô.>À"Ò.DÐ.DÐ.DÐFq×FxÒFxÕy}ð  Jñ  zKô  zKñ  GLô  GLÑ.DÔ.DÐ.DÝ�KÑ Ô ¥CÒ'Ð'Ð'Ð)N×)UÒ)UÕVZÐ[fÑVgÔVgÑ)hÔ)hÑ'Ô'Ð'Ý�OÑ$Ô$­Ò-Ð-µ#°oÑ2FÔ2FÈ"Ò2LÐ2LÐ2LÐN}÷  OEò  OEõ  FJð  KZñ  F[ô  F[ñ  O\ô  O\Ñ2LÔ2LÐ2LÝÐ$Ñ%Ô%­Ò-Ð-Ð-Ð/Z×/aÒ/aÕbfÐgwÑbxÔbxÑ/yÔ/yÑ-Ô-Ð-ÝÐ)Ñ*Ô*­eÒ3Ð3½Ð<QÑ8RÔ8RÐWbÒ8cÐ8cÐ8cð  f[÷  fbò  fbõ  cgð  h}ñ  c~ô  c~ñ  fô  fÑ8cÔ8cÐ8cØˆ¥*¨WµkÑ"BÔ"BˆˆÐDu‰Œˆð ˜tÔ5Ò5Ð5Ý"Ð#FØ#x×#Ò#ð  AEô  AOô  AXõ  Zbô  Zjð  koô  kAñ  ZBô  ZB÷  ZIò  ZIñ  ZKô  ZKõ  MUô  M]ð  ^nñ  Moô  Mo÷  Mvò  Mvñ  Mxô  Mxñ  $yô  $yñzô zð zð ˜$œ-¨Ô6Ò6Ð6ØŒM×ÒÑ!Ô!Ð!Ý"Ð#EØ#o×#vÒ#vÐw{ô  xFô  xOõ  QYô  Qað  bfô  boð  p}ô  b~ñ  Qô  Q÷  QFò  QFñ  QHô  QHõ  JRô  JZð  [fñ  Jgô  Jg÷  Jnò  Jnñ  Jpô  Jpñ  $qô  $qñrô rð rð ˜$œ)Ò#Ð#Ý"Ð#EØ#w×#~Ò#~ð  @Dô  @Nô  @Wð  Y]ô  Ybð  efñ  Yfð  hsñ  $tô  $tñuô uð uõ )¨Ñ9Ô9ˆØ˜dœmÒ+Ð+Ý"Ð#IØ#o×#vÒ#vÐw{ô  xFô  xOð  QUô  Q^ð  `oñ  $pô  $pñqô qð qõ 6°kÀ;ÐP_Ðaqð  tIñ  Jô  JˆØÐ-Ò-Ð-ØŒH�MŠMð  QØ $¤Ô 7Ý)+­HÔ,<¸^Ñ,LÔ,L×,SÒ,SÑ,UÔ,UÑ)VÔ)VÝ')­(Ô*:Ð;KÑ*LÔ*L×*SÒ*SÑ*UÔ*UÑ'VÔ'Vð ñ Xô Xð Xõ #Ð#@ð  CT÷  C[ò  C[ð  \`ô  \jô  \sñ  Ctô  Ctñ  uô  uð  uõ 5°T´^À[ÐR]Ð_nð  qAñ  Bô  BÐð œ
ØÝ# OÑ4Ô4Ø(Ø)ð
ð 
ˆð 	Œ�Šð  QØ!œ^Ô4Ý! -°yÐAÑAÔAÝ')­#­c°/ÀHÑ2LÑ.MÔ.MÑ*NÔ*NÐQWÑ*WÐ_hÐ'iÑ'iÔ'iÝ#% k¡?¤?Ý#%¥hÔ&6°{Ñ&CÔ&C×&JÒ&JÑ&LÔ&LÑ#MÔ#MÝ  ¤Ñ0Ô0Ý%'¨Ô(=Ñ%>Ô%>ð 	ñ 	@ô 	@ð 	@ð ˆr,   c
                 ó  — t          |¦  «        t          k    rt          |¦  «        dk    s
J d¦   «         ‚t          |¦  «        t          k    rt          |¦  «        dk    s
J d¦   «         ‚t          |¦  «        t          k    rt          |¦  «        dk    s
J d¦   «         ‚t          |¦  «        t          k    rt          |¦  «        dk    s
J d¦   «         ‚t          |¦  «        t          k    s
J d¦   «         ‚t          |¦  «        t          k    rt          |¦  «        dk    s*J d	                     t          |¦  «        ¦  «        ¦   «         ‚t          |¦  «        t          k    rt          |¦  «        dk    s*J d
                     t          |¦  «        ¦  «        ¦   «         ‚t          |¦  «        t          k    rt          |¦  «        dk    s
J d¦   «         ‚|	�t          |	t          ¦  «        s
J d¦   «         ‚t          |¦  «        }t          |¦  «        }|| j        k    r|t          dd                     | j
        j        t          j        | j        ¦  «                             ¦   «         t          j        |¦  «                             ¦   «         ¦  «        ¦  «        ‚|| j        vr.t          dd                     | j
        j        |¦  «        ¦  «        ‚| j        |         }
|| j        d         k    r›| j                             ¦   «          t          dd                     | j
        j        t          j        | j        d         ¦  «                             ¦   «         t          j        |¦  «                             ¦   «         ¦  «        ¦  «        ‚|| j        dz   k    r7t          dd                     | j
        j        | j        dz   |¦  «        ¦  «        ‚|| j        |z
  k    r7t          dd                     | j
        j        | j        |z
  |¦  «        ¦  «        ‚d}| j        d         }t          j        | j        d         dd…         ¦  «        }| j        d         }t/          |||||||d|¦	  «	        }||k    r·| j                             d | j
        j        t5          t          j        |¦  «                             ¦   «         ¦  «        t5          t          j        |¦  «                             ¦   «         ¦  «        ¬!¦  «         t          d"d#                     | j
        j        ¦  «        ¦  «        ‚| xj        dz  c_        | xj        |z  c_        |
                     ||¦  «        }t          |¦  «        t          k    rt          |¦  «        d$k    s(J d%                     | j
        j        |¦  «        ¦   «         ‚t9          | j        |||||| j        | j        d¦	  «	        }|| j        ||| j        || j        |d&œ}| j                             d'| j
        j        t5          d(d)¬*¦  «        t5          tA          j!        |¬+¦  «        ¦  «        t5          tE          t          |d,z  ¦  «        ¦  «        d-z   d)¬*¦  «        t5          tE          t          | j        d,z  ¦  «        ¦  «        d-z   d)¬*¦  «        t5          |	j#        ¦  «        t5          |	j$        ¦  «        t5          t          j        |¦  «                             ¦   «         ¦  «        ¬.¦	  «	         |S )/al  
        Called by a XBR Market Maker to buy a data encyption key. The XBR Market Maker here is
        acting for (triggered by) the XBR buyer delegate.

        :param market_maker_adr: The market maker Ethereum address. The technical buyer is usually the
            XBR market maker (== the XBR delegate of the XBR market operator).
        :type market_maker_adr: bytes of length 20

        :param buyer_pubkey: The buyer delegate Ed25519 public key.
        :type buyer_pubkey: bytes of length 32

        :param key_id: The UUID of the data encryption key to buy.
        :type key_id: bytes of length 16

        :param channel_oid: The on-chain channel contract address.
        :type channel_oid: bytes of length 16

        :param channel_seq: Paying channel sequence off-chain transaction number.
        :type channel_seq: int

        :param amount: The amount paid by the XBR Buyer via the XBR Market Maker.
        :type amount: bytes

        :param balance: Balance remaining in the payment channel (from the market maker to the
            seller) after successfully buying the key.
        :type balance: bytes

        :param signature: Signature over the supplied buying information, using the Ethereum
            private key of the market maker (which is the delegate of the marker operator).
        :type signature: bytes of length 65

        :param details: Caller details. The call will come from the XBR Market Maker.
        :type details: :class:`autobahn.wamp.types.CallDetails`

        :return: The data encryption key, itself encrypted to the public key of the original buyer.
        :rtype: bytes
        rv   zdelegate_adr must be bytes[20]r:   zbuyer_pubkey must be bytes[32]r   zkey_id must be bytes[16]zchannel_oid must be bytes[16]zchannel_seq must be intz)amount_paid must be bytes[32], but was {}z*post_balance must be bytes[32], but was {}rž   zsignature must be bytes[65]Nrá   z$xbr.error.unexpected_marketmaker_adrzH{}.sell() - unexpected market maker address: expected 0x{}, but got 0x{}zcrossbar.error.no_such_objectz{}.sell() - no key with ID "{}"r¼   râ   rã   r   rä   rå   ræ   rç   Úverifying_chain_idÚverifying_contract_adrr   Ú
market_oidFrè   ré   rí   rî   éP   zC{}.sell() - unexpected sealed key computed (expected bytes[80]): {})r/   r¥   rB   Ú
sealed_keyrñ   Úamountrp   r´   z«{klass}.sell() - {tx_type} key "{key_id}" sold for {amount_earned} - balance is {balance} [caller={caller}, caller_authid="{caller_authid}", buyer_pubkey="{buyer_pubkey}"]z
XBR SELL  rQ   rR   rT   r£   r¤   )rê   rU   r/   Úamount_earnedrp   rò   ró   rB   )%r   r   r   r   rw   rÃ   r   r	   r}   r   rõ   rb   rª   r«   r¬   r�   r‹   rŽ   rö   rl   rm   r~   Úa2b_hexr   r]   r®   r   rG   r   r   r‡   rÍ   r_   r`   rx   rò   ró   )r$   r�   rB   r/   r¼   rñ   r  rp   r´   r½   r²   Úcurrent_block_numberrü   rý   rþ   rë   r   rù   rú   s                      r*   rÉ   zSimpleSeller.sellB  sQ  € õL Ð$Ñ%Ô%­Ò.Ð.µ3Ð7GÑ3HÔ3HÈBÒ3NÐ3NÐ3NÐPpÑ3NÔ3NÐ3NÝ�LÑ!Ô!¥UÒ*Ð*­s°<Ñ/@Ô/@ÀBÒ/FÐ/FÐ/FÐHhÑ/FÔ/FÐ/FÝ�F‰|Œ|�uÒ$Ð$­¨V©¬¸Ò):Ð):Ð):Ð<VÑ):Ô):Ð):Ý�KÑ Ô ¥EÒ)Ð)­c°+Ñ.>Ô.>À"Ò.DÐ.DÐ.DÐFeÑ.DÔ.DÐ.DÝ�KÑ Ô ¥CÒ'Ð'Ð'Ð)BÑ'Ô'Ð'Ý�F‰|Œ|�uÒ$Ð$­¨V©¬¸Ò):Ð):Ð):Ð<g×<nÒ<nÕosÐtzÑo{Ôo{Ñ<|Ô<|Ñ):Ô):Ð):Ý�G‰}Œ}¥Ò%Ð%­#¨f©+¬+¸Ò*;Ð*;Ð*;Ð=i×=pÒ=pÕquÐv}Ñq~Ôq~Ñ=Ô=Ñ*;Ô*;Ð*;Ý�I‰Œ¥%Ò'Ð'­C°	©N¬N¸{Ò,KÐ,KÐ,KÐMjÑ,KÔ,KÐ,KØˆ¥*¨WµkÑ"BÔ"BˆˆÐDu‰Œˆå Ñ'Ô'ˆÝ  Ñ)Ô)ˆð ˜tÔ5Ò5Ð5Ý"Ð#IØ#m×#tÒ#tÐuyô  vDô  vMõ  OWô  O_ð  `dô  `vñ  Owô  Ow÷  O~ò  O~ñ  O@ô  O@õ  BJô  BRð  Scñ  Bdô  Bd÷  Bkò  Bkñ  Bmô  Bmñ  $nô  $nñoô oð oð ˜œÐ'Ð'Ý"Ð#BÐDe×DlÒDlÐmqÔm{ô  nEð  GMñ  ENô  ENñ  Oô  Oð  OØ”^ FÔ+ˆ
ð ˜$œ-¨Ô6Ò6Ð6ØŒM×ÒÑ!Ô!Ð!Ý"Ð#EØ#o×#vÒ#vÐw{ô  xFô  xOõ  QYô  Qað  bfô  boð  p}ô  b~ñ  Qô  Q÷  QFò  QFñ  QHô  QHõ  JRô  JZð  [fñ  Jgô  Jg÷  Jnò  Jnñ  Jpô  Jpñ  $qô  $qñrô rð rð ˜$œ) a™-Ò'Ð'Ý"Ð#EØ#w×#~Ò#~ð  @Dô  @Nô  @Wð  Y]ô  Ybð  efñ  Yfð  hsñ  $tô  $tñuô uð uð �d”m fÑ,Ò,Ð,Ý"Ð#IØ#o×#vÒ#vÐw{ô  xFô  xOð  QUô  Q^ð  agñ  Qgð  ipñ  $qô  $qñrô rð rð  !ÐØ!Ô/Ð0DÔEÐÝ!)Ô!1°$Ô2DÐE]Ô2^Ð_`Ð_aÐ_aÔ2bÑ!cÔ!cÐà”] <Ô0ˆ
õ 6Ð6HÐJ`ÐbvØ6@À+È{Ð\cÐejÐluñwô wˆàÐ-Ò-Ð-ØŒH�MŠMð  QØ $¤Ô 7Ý)+­HÔ,<¸^Ñ,LÔ,L×,SÒ,SÑ,UÔ,UÑ)VÔ)VÝ')­(Ô*:Ð;KÑ*LÔ*L×*SÒ*SÑ*UÔ*UÑ'VÔ'Vð ñ Xô Xð Xõ #Ð#@ð  CT÷  C[ò  C[ð  \`ô  \jô  \sñ  Ctô  Ctñ  uô  uð  uð 	ˆ	Œ	�Q‰ˆ	Œ	ØˆŒ˜ÑˆŒð  ×+Ò+¨F°LÑAÔAˆ
å�JÑÔ¥5Ò(Ð(­S°©_¬_ÀÒ-BÐ-BÐ-Bð  EJ÷  EQò  EQð  RVô  R`ô  Rið  kuñ  Evô  EvÑ-BÔ-BÐ-Bõ 5°T´^ÐEWÐYoØ5IÈ:ÐWbÐdhÔdmØ59´]ÀEñKô KÐð ð œ
ð )ð
 %ð  œ9ð ð ”}ð *ð3
ð 
ˆð8 	Œ�Šð  DØ œNÔ3Ý  °YÐ?Ñ?Ô?Ý¥¤	°Ð 7Ñ 7Ô 7Ñ8Ô8Ý$&¥s­3¨v¸Ñ/@Ñ+AÔ+AÑ'BÔ'BÀVÑ'KÐS\Ð$]Ñ$]Ô$]Ý ¥¥S¨¬¸Ñ)AÑ%BÔ%BÑ!CÔ!CÀfÑ!LÐT]Ð^Ñ^Ô^å ¤Ñ/Ô/Ý$& wÔ'<Ñ$=Ô$=Ý#%¥hÔ&6°|Ñ&DÔ&D×&KÒ&KÑ&MÔ&MÑ#NÔ#Nð 	ñ 		Pô 		Pð 		Pð ˆr,   rI   ra   )rb   rc   rd   r]   r   r{   rÅ   rÌ   rÓ   rÄ   r+   rf   r…   r¸   rL   rO   rp   rß   rË   rÉ   rg   r,   r*   rr   rr   ¿   sú   € € € € € à
€CØ€Ià€JØ€NØ€MØ€NØ€Mð@"ð @"ð @"ð @"ðD ð%ð %ñ „Xð%ðXð Xð Xð Xðt?+ð ?+ð ?+ðB6ð 6ð 6ðBð ð ð(.ð .ð .ð6 6:ð@ð @ð @ð @ðDTð Tð Tð Tð Tð Tr,   rr   )!r°   rª   rV   r_   Úautobahn.wamp.typesr   r   Úautobahn.wamp.exceptionr   r   Úautobahn.wamp.protocolr   Ú_utilr	   r
   ry   r   r2   r€   Únacl.secretr<   Ú
nacl.utilsÚnacl.publicÚutilr   r   Ú_eip712_channel_closer   r   Úobjectr   ri   rr   rg   r,   r*   ú<module>r     s¡  ðð6 €€€Ø €€€Ø 	€	€	€	Ø €€€à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð à €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð Ð Ð Ø ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZðA(ð A(ð A(ð A(ð A(�ñ A(ô A(ð A(ðH ð  ð  ð  ð  �Fñ  ô  ð  ðWð Wð Wð Wð W�6ñ Wô Wð Wð Wð Wr,   