ó
    ð›‘hÇœ  ã                   ó–  • S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKJr  S SK	r	\	R                  " SS5        S SKJr  S SKJr  S SKJr  \R"                  " 5         S SKr\R&                  " 5         S S	KJr  S S
KJr  S SKJr  S SKrS SKrS SKrS SKJrJr  S SK J!r!J"r"J#r#J$r$  S SK%J&r&  S SK'J(r(  S SK)J*r*  S SK+J,r,  S SK+J-r-J.r.J/r/  S SK0J1r1  S SK2J3r3J4r4  \Rj                  " SS5      r6\7" \6\ Rp                  Rs                  \65      5         " S S\Rt                  5      r; " S S\15      r< " S S\=5      r>S r?S r@\AS:X  a  \@" 5         gg) é    N)Úpprint)Útime_nsÚGtkz3.0)r   )ÚColor)Úgtk3reactor)Úreact)ÚinlineCallbacks)Úreactor)ÚnaturaldeltaÚnaturaltime)Úparse_activation_codeÚhltypeÚhlidÚhlval)ÚCBORSerializer)Úsleep)ÚApplicationRunner)Úunpack_uint256)Úaccount_from_seedphraseÚgenerate_seedphraseÚaccount_from_ethkey)ÚClient)Ú
UserConfigÚProfileÚautobahnzasset/xbr_gray.svgc                   ó„   • \ rS rSrSr\R                  " 5       rSrSr	Sr
SrS r\S 5       rS	 rS
 rS rS rS rS rSrg)ÚApplicationWindowéH   aÙ  
Main application window which provides UI for the following functions:

* N) New account
* R) Recover account:
   - R1) Backup cloud device in account enabled => download encrypted account data
       from cloud backup device, requires email (and 2FA) verification and password
   - R2) At least one device left in account and at hand => synchronize with existing device,
       direct device-to-device encrypted account data transfer
   - R3) Only cold storage recovery seed phrase left => account from seed-phrase full
       recovery, including new email and 2FA verification.

See also:
* https://python-gtk-3-tutorial.readthedocs.io/en/latest/
* https://twistedmatrix.com/documents/current/core/howto/choosing-reactor.html
r   é   é   é   c                 óH  • [         R                  R                  U 5        Xl        X l        X0l        X@l        XPl        X`l        S U l	        S U l
        S U l        S U l        S U l        S U l        S U l        [         R"                  " SS9U l        U R'                  S5        U R)                  SS5        U R+                  S5        U R-                  S5        U R/                  5         U R1                  5         U R3                  5         U R5                  5         U R7                  5         g )Ns                   ©ÚbyteszXBR NetworkiX  é2   F)r   Ú	AssistantÚ__init__r
   ÚsessionÚconfigÚconfig_pathÚprofileÚprofile_nameÚinput_seedphraseÚinput_emailÚinput_passwordÚoutput_accountÚoutput_ethadrÚoutput_ethadr_rawÚoutput_member_dataÚuuidÚUUIDÚoutput_member_data_oidÚ	set_titleÚset_default_sizeÚset_border_widthÚset_resizableÚ_setup_page1Ú_setup_page2Ú_setup_page3Ú_setup_page4Ú_setup_page5)Úselfr
   r(   r)   r*   r+   r,   s          ÚUC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\autobahn/xbr/_gui.pyr'   ÚApplicationWindow.__init__`   sõ   € Ü�‰×Ñ˜tÔ$àŒØŒØŒØ&ÔØŒØ(Ôà $ˆÔØˆÔØ"ˆÔà"ˆÔØ!ˆÔØ!%ˆÔØ"&ˆÔÜ&*§i¢i°lÑ&CˆÔ#ð 	�‰�}Ô%Ø×Ñ˜c 3Ô'Ø×Ñ˜bÔ!Ø×Ñ˜5Ô!ð 	×ÑÔØ×ÑÔØ×ÑÔØ×ÑÔØ×ÑÕó    c              #   óÞ
  #   • U R                   (       Gaµ  [        U R                   R                  5      U l        [        R
                  R                  U R                  R                  5      U l        [        R                  " U R                  SS  5      U l        U R                  R                  5       v •nU(       Gaz  [        [        R                   " [        R                   " US   S   S5      S5      5      nU R"                  R%                  U5        U R&                  R%                  [        US   S   5      5        U R(                  R%                  [        US   S   5      5        U R*                  R%                  [        US   S   S	   5      5        U R,                  R%                  [        US   S   S
   5      5        U R.                  R%                  S[        R0                  " US   S   S   5      R3                  5       -   5        U R4                  R%                  [        US   S   S   5      5        [7        U5        U R                  R9                  U R                  5      v •nU(       d�  U R:                  R=                  SU R                  S9  U R                   R>                  (       a  U RA                  S5        g U R                   R                  (       a  U RA                  S5        g U RA                  S5        g U R:                  R=                  SU R                  US9  X0l!        [E        [        R                   " [G        5       S5      U RB                  S   -
  S-  5      n[I        [        R                   " U RB                  S   S5      5      nU RJ                  R%                  [        U RB                  S   5      5        U RL                  R%                  [        U RB                  S   5      5        U RN                  R%                  SRQ                  XT5      5        U RR                  R%                  [        U RB                  S   5      5        U RT                  R%                  [        U RB                  S   S   5      5        U RV                  R%                  [        U RB                  S   S   5      5        U RA                  S5        g [Y        5       nU RZ                  Ul.        S Ul        S Ul/        S Ul0        S Ul1        SUl2        S	Ul3        S Ul4        S Ul        S Ul5        S Ul6        S Ul7        S Ul8        S Ul9        S Ul:        S Ul;        S Ul<        X`l         U RA                  S 5        g 7f)!Nr    ÚstatusÚnowÚnsÚsÚchainr)   Ú	contractsÚ
xbrnetworkÚxbrtokenÚ0xÚblockÚhashÚnumberú*ethadr {output_ethadr} is NOT yet a member©r1   r!   r   ú=ok, ethadr {output_ethadr} already is a member: {member_data}©r1   Úmember_dataÚcreatedg    eÍÍAÚoidÚaddressz{} ({} ago)ÚlevelÚbalanceÚethÚxbré   úws://localhost:8090/wsr   )=r+   r   Úethkeyr0   Úweb3ÚWeb3ÚtoChecksumAddressrX   r1   ÚbinasciiÚa2b_hexr2   r(   Ú
get_statusÚstrÚnpÚ
datetime64Ú_label5_nowÚ	set_labelÚ_label5_chainÚ_label5_statusÚ_label5_xbrnetworkÚ_label5_xbrtokenÚ_label5_blockhashÚb2a_hexÚdecodeÚ_label5_blocknumberr   Ú
get_memberÚlogÚinfoÚvaction_oidÚset_current_pager3   r   r   r   Ú_label2Ú_label4Ú_label6ÚformatÚ_label8Ú_label10Ú_label12r   r*   ÚpathÚcskeyÚusernameÚemailÚnetwork_urlÚnetwork_realmÚ
member_oidÚvaction_requestedÚvaction_verifiedÚdata_urlÚ
data_realmÚ
infura_urlÚinfura_networkÚ
infura_keyÚinfura_secret)r@   ru   rF   rU   Úcreated_agorV   r+   s          rA   ÚstartÚApplicationWindow.start�   sG  é € ð �<�<ˆ<Ü"5°d·l±l×6IÑ6IÓ"JˆDÔÜ!%§¡×!<Ñ!<¸T×=PÑ=P×=XÑ=XÓ!YˆDÔÜ%-×%5Ò%5°d×6HÑ6HÈÈÐ6LÓ%MˆDÔ"ØŸ™×0Ñ0Ó2Ñ2ˆDßÜœ"Ÿ-š-¬¯ª°d¸8±nÀUÑ6KÈTÓ(RÐTWÓXÓY�Ø× Ñ ×*Ñ*¨3Ô/Ø×"Ñ"×,Ñ,¬S°°h±ÀÑ1HÓ-IÔJØ×#Ñ#×-Ñ-¬c°$°x±.ÀÑ2JÓ.KÔLØ×'Ñ'×1Ñ1´#°d¸8±nÀ[Ñ6QÐR^Ñ6_Ó2`ÔaØ×%Ñ%×/Ñ/´°D¸±NÀ;Ñ4OÐPZÑ4[Ó0\Ô]Ø×&Ñ&×0Ñ0°¼×8HÒ8HÈÈhÉÐX_ÑI`ÐagÑIhÓ8i×8pÑ8pÓ8rÑ1rÔsØ×(Ñ(×2Ñ2´3°t¸H±~ÀgÑ7NÈxÑ7XÓ3YÔZä�4ŒLØ $§¡× 7Ñ 7¸×8NÑ8NÓ OÑOˆKÞØ—‘—‘ÐJØ,0×,>Ñ,>ð ñ @à—<‘<×+×+à×)Ñ)¨!Õ,à—|‘|×*×*à×-Ñ-¨aÕ0ð ×-Ñ-¨aÕ0à—‘—‘Ð]Ø,0×,>Ñ,>ÈKð ñ Yà*5Ô'Ü*¬B¯MªM¼'»)ÀTÓ,JÈT×MdÑMdÐenÑMoÑ,oÐs~Ñ+~Ó�Ü%¤b§m¢m°D×4KÑ4KÈIÑ4VÐX[Ó&\Ó]�Ø—‘×&Ñ&¤s¨4×+BÑ+BÀ5Ñ+IÓ'JÔKØ—‘×&Ñ&¤s¨4×+BÑ+BÀ9Ñ+MÓ'NÔOØ—‘×&Ñ& }×';Ñ';¸GÓ'QÔRØ—‘×&Ñ&¤s¨4×+BÑ+BÀ7Ñ+KÓ'LÔMØ—‘×'Ñ'¬¨D×,CÑ,CÀIÑ,NÈuÑ,UÓ(VÔWØ—‘×'Ñ'¬¨D×,CÑ,CÀIÑ,NÈuÑ,UÓ(VÔWð ×%Ñ% aÕ(ä“iˆGØ×+Ñ+ˆGŒLØ!ˆGŒNØ ˆGŒMØ#ˆGÔØ ˆGŒMØ":ˆGÔØ$0ˆGÔ!Ø!%ˆGÔØ"&ˆGÔØ(,ˆGÔ%Ø'+ˆGÔ$Ø#ˆGÔØ!%ˆGÔØ!%ˆGÔØ%)ˆGÔ"Ø!%ˆGÔØ$(ˆGÔ!Ø"ŒLð ×!Ñ! !Õ$ùs   ‚U+U-c                 óX   • U R                  U R                  UR                  5       5        g ©N)Úset_page_completeÚcompleteÚ
get_active)r@   Úcheckbuttons     rA   Úon_complete_toggledÚ%ApplicationWindow.on_complete_toggledÉ   s   € Ø×Ñ˜tŸ}™}¨k×.DÑ.DÓ.FÕGrC   c                 óÔ  ^ • [         R                  " 5       nUR                  S5        UR                  S5        UR	                  S5        UR                  S5        UR                  S5        UR                  S5        [         R                  " 5       nUR                  [        5        UR                  USSSS5        [         R                  " SS9nUR                  SS5        UR                  USSSS5        [         R                  " SS9nUR                  SS5        UR                  [         R                  R                   5        UR                  USSSS5        [         R"                  R%                  S	5      nU 4S
 jnUR'                  SU5        UR                  USSSS5        [         R                  " SS9nUR                  SS5        UR                  USSSS5        [         R                  " SS9nUR                  SS5        UR                  [         R                  R                   5        UR)                  S5        UR+                  S5        UR                  USSSS5        [         R"                  R%                  S5      n	U 4S jn
U	R'                  SU
5        UR                  U	SSSS5        [         R                  " SS9nUR                  SS5        UR                  [         R                  R                   5        UR)                  S5        UR+                  S5        UR                  USSSS5        [         R"                  R%                  S5      nU 4S jnUR'                  SU5        UR                  USSSS5        [         R                  " SS9nUR                  SS5        UR                  [         R                  R                   5        UR)                  S5        UR+                  S5        UR                  USSSS5        [         R"                  R%                  S5      nU 4S jnUR'                  SU5        UR                  USSSS5        T R-                  U5        g)z†
Setup page shown when no config/profile could be found. Allows to select from:

* new account
* synchronize device
* recover account
é   r   r    r   z+

I am new and do not have an account yet:
©Úlabelç      à?zMCreate a new account or start from fresh. You only need an email address. [N]zNew accountc                 ó\   >• TR                   R                  SU S9  TR                  S5        g )NzSELECTED_NEW: {res}©Úresr   ©rt   ru   rw   ©r    r@   s    €rA   Ú
on_button1Ú2ApplicationWindow._setup_page1.<locals>.on_button1í   s&   ø€ Ø�H‰H�M‰MÐ/°SˆMÑ9Ø×!Ñ! !Õ$rC   Úclickedz;

I already have an existing account and want to use that:
r!   zŽRestore account from cloud backup to this device. You will need access to
your account password and access to your account email address. [R1]Té   r]   zRestore accountc                 ó\   >• TR                   R                  SU S9  TR                  S5        g )NzSELECTED_RESTORE: {res}rŸ   r    r¡   r¢   s    €rA   Úon_button22Ú3ApplicationWindow._setup_page1.<locals>.on_button22  ó&   ø€ Ø�H‰H�M‰MÐ3¸ˆMÑ=Ø×!Ñ! !Õ$rC   z�Synchronize device with other device in account. You will need access to
another device currently connected to your account. [R2]é   zSynchronize accountc                 ó\   >• TR                   R                  SU S9  TR                  S5        g )NzSELECTED_SYNCRONIZE: {res}rŸ   r    r¡   r¢   s    €rA   Ú
on_button2Ú2ApplicationWindow._setup_page1.<locals>.on_button2  s&   ø€ Ø�H‰H�M‰MÐ6¸CˆMÑ@Ø×!Ñ! !Õ$rC   ztRecover account from account seed phrase. You only need access to
your 12-24 word account recovery seed phrase. [R3]é   zRecover accountc                 ó\   >• TR                   R                  SU S9  TR                  S5        g )NzSELECTED_RECOVER: {res}rŸ   r!   r¡   r¢   s    €rA   Ú
on_button3Ú2ApplicationWindow._setup_page1.<locals>.on_button3$  rª   rC   N)r   ÚGridÚset_row_spacingÚset_column_spacingÚset_margin_topÚset_margin_bottomÚset_margin_startÚset_margin_endÚImageÚset_from_fileÚLOGO_RESOURCEÚattachÚLabelÚset_alignmentÚset_justifyÚJustificationÚLEFTÚButtonÚnew_with_labelÚconnectÚset_line_wrapÚset_width_charsÚappend_page)r@   Úgrid1Úimage1Úlabel0Úlabel1Úbutton1r£   Úlabel12Úlabel22Úbutton22r¨   Úlabel2Úbutton2r­   Úlabel3Úbutton3r±   s   `                rA   r;   ÚApplicationWindow._setup_page1Í   s˜  ø€ ô —’“
ˆØ×Ñ˜bÔ!Ø× Ñ  Ô$Ø×Ñ˜RÔ Ø×Ñ Ô#Ø×Ñ˜rÔ"Ø×Ñ˜RÔ ä—’“ˆà×Ñœ]Ô+Ø�‰�V˜Q  1 aÔ(ä—’Ð!QÑRˆØ×Ñ˜Q Ô$Ø�‰�V˜Q  1 aÔ(ä—’Ð!pÑqˆØ×Ñ˜Q Ô$Ø×Ñœ3×,Ñ,×1Ñ1Ô2Ø�‰�V˜Q  1 aÔ(ä—*‘*×+Ñ+¨MÓ:ˆõ	%ð 	�‰˜	 :Ô.Ø�‰�W˜a  A qÔ)ä—)’)Ð"bÑcˆØ×Ñ˜a Ô%Ø�‰�W˜a  A qÔ)ä—)’)ð #iñ jˆà×Ñ˜a Ô%Ø×ÑœC×-Ñ-×2Ñ2Ô3Ø×Ñ˜dÔ#Ø×Ñ Ô#Ø�‰�W˜a  A qÔ)ä—:‘:×,Ñ,Ð->Ó?ˆõ	%ð 	×Ñ˜ KÔ0Ø�‰�X˜q ! Q¨Ô*ä—’ð "\ñ ]ˆà×Ñ˜Q Ô$Ø×Ñœ3×,Ñ,×1Ñ1Ô2Ø×Ñ˜TÔ"Ø×Ñ˜rÔ"Ø�‰�V˜Q  1 aÔ(ä—*‘*×+Ñ+Ð,AÓBˆõ	%ð 	�‰˜	 :Ô.Ø�‰�W˜a  A qÔ)ä—’ð "Vñ Wˆà×Ñ˜Q Ô$Ø×Ñœ3×,Ñ,×1Ñ1Ô2Ø×Ñ˜TÔ"Ø×Ñ˜rÔ"Ø�‰�V˜Q  1 aÔ(ä—*‘*×+Ñ+Ð,=Ó>ˆõ	%ð 	�‰˜	 :Ô.Ø�‰�W˜a  A qÔ)à×Ñ˜ÕrC   c                 óÆ  ^ ^
^^^^• [         R                  " 5       n[         R                  " 5       n[         R                  " 5       nUR	                  [
        5        UR                  U5        UR                  U5        [         R                  R                  S5      nUU U4S jnUR                  SU5        UR                  U5        [         R                  " SS9nUR                  SS5        UR                  [         R                  R                  5        UR                  U5        [         R                  " 5       nUR!                  5       mTR#                  S5        UR%                  S	5        UR'                  [         R                  R(                  5        UR+                  S
5        UR-                  [         R.                  R0                  5        UR                  U5        [         R                  " 5       n[         R2                  " SS9mTR5                  S	5        TR7                  S	5        U
4S jn	TR                  SU	5        UR                  T5        [         R                  R                  S5      m
T
R7                  S	5        [8        U 4S j5       mUUU 4S jmT
R                  ST5        UR                  T
5        UR                  U5        T R;                  U5        g)z1
Setup page shown to generate a new seed phrase.
zGenerate seedphrasec                 ó|   >• [        SSS9Tl        TR                  TR                  5        TR                  S5        g )Né   Úenglish)ÚstrengthÚlanguageT)r   r-   Úset_textÚset_sensitive)Ú_Úcheckbutton2_1r@   Útextbuffer2_1s    €€€rA   Úon_button2_1Ú4ApplicationWindow._setup_page2.<locals>.on_button2_1<  s4   ø€ Ü$7ÀÈyÑ$YˆDÔ!Ø×"Ñ" 4×#8Ñ#8Ô9Ø×(Ñ(¨Õ.rC   r¥   zQBackup your new seed phrase in a secure offline location (e.g. on printed paper):r›   r   r�   z




FTzI have backed up my seed phrasec                 ó(   >• TR                  S5        g ©NT)rÝ   )rÞ   Ú	button2_2s    €rA   Úon_checkbutton2_1Ú9ApplicationWindow._setup_page2.<locals>.on_checkbutton2_1X  s   ø€ Ø×#Ñ# DÕ)rC   ÚtoggledÚContinuec              3   ó4  >#   • [        TR                  SS9Tl        [        R                  R                  TR                  R                  5      Tl        [        R                  " TR                  SS  5      Tl
        [        TR                  R                  5      TR                  l        [        TR                  R                   5      TR                  l        TR                  R%                  TR                  5        TR                  TR&                  R(                  TR*                  '   TR&                  R-                  TR.                  5        TR0                  R3                  STR                  TR                  S9  TR                  R5                  TR                  5      v •n[7        U5        U(       d6  TR0                  R3                  STR                  S9  TR9                  S5        g TR0                  R3                  STR                  US	9  [:        R<                  " US
   S9TR                  l        TR                  TR                  l         US   TR                  l!        US   TR                  l"        TR                  TR&                  R(                  TR*                  '   TR&                  R-                  TR.                  5        UTl#        TRH                  RK                  [M        TRN                  S   5      5        TR9                  S5        g 7f)Nr   )Úindexr    zVXBR ETH key at address {ethadr} set from seed phrase (BIP39 account 0): "{seedphrase}")ÚethadrÚ
seedphraserQ   rR   rS   rT   r…   r#   r‚   r�   rW   r]   )(r   r-   r0   r`   ra   rb   rX   r1   rc   rd   r2   r$   Úkeyr+   r_   r(   Ú
_cskey_rawr€   Úset_ethkey_from_profiler)   Úprofilesr,   Úsaver/   rt   ru   rs   r   rw   r4   r5   r…   Ú
member_adrr‚   r�   r3   rx   rj   rf   Ú_member_data)rÞ   rU   r@   s     €rA   Úon_button2_2Ú4ApplicationWindow._setup_page2.<locals>.on_button2_2a  sQ  øé € ä"9¸$×:OÑ:OÐWXÑ"YˆDÔÜ!%§¡×!<Ñ!<¸T×=PÑ=P×=XÑ=XÓ!YˆDÔÜ%-×%5Ò%5°d×6HÑ6HÈÈÐ6LÓ%MˆDÔ"ô #(¨×(;Ñ(;×(?Ñ(?Ó"@ˆD�L‰LÔÜ!& t§|¡|×'>Ñ'>Ó!?ˆD�L‰LÔð �L‰L×0Ñ0°·±Ô>ð 7;·l±lˆD�K‰K× Ñ  ×!2Ñ!2Ñ3Ø�K‰K×Ñ˜T×0Ñ0Ô1à�H‰H�M‰MÐrØ!%×!3Ñ!3Ø%)×%:Ñ%:ð ñ <ð !%§¡× 7Ñ 7¸×8NÑ8NÓ OÑOˆKÜ�;ÔÞØ—‘—‘ÐJØ,0×,>Ñ,>ð ñ @à×%Ñ% aÕ(à—‘—‘Ð]Ø,0×,>Ñ,>ÈKð ñ Yô +/¯)ª)¸+ÀlÑ:SÑ*T�—‘Ô'Ø*.×*<Ñ*<�—‘Ô'Ø%0°Ñ%9�—‘Ô"Ø(3°JÑ(?�—‘Ô%ð ;?¿,¹,�—‘×$Ñ$ T×%6Ñ%6Ñ7Ø—‘× Ñ  ×!4Ñ!4Ô5à*5�Ô'Ø—‘×&Ñ&¤s¨4×+<Ñ+<¸UÑ+CÓ'DÔEØ×%Ñ% aÕ(ùs   ƒLLc                 ó~   >• TR                   R                  S[        T5      U S9  [        R                  " STU 5        g ©Nz{func}({widget}))ÚfuncÚwidgetr   ©rt   ru   r   r
   Ú	callLater)rú   rõ   Úrun_on_button2_2r@   s    €€€rA   rý   Ú8ApplicationWindow._setup_page2.<locals>.run_on_button2_2�  s3   ø€ Ø�H‰H�M‰MÐ,´6Ð:JÓ3KÐTZˆMÑ[Ü×Ò˜a ¨vÕ6rC   N)r   ÚVBoxÚHBoxrº   r»   r¼   ÚaddrÃ   rÄ   rÅ   r¾   r¿   rÀ   rÁ   rÂ   ÚTextViewÚ
get_bufferrÜ   Úset_editableÚset_justificationÚCENTERÚset_monospaceÚset_wrap_modeÚWrapModeÚWORDÚCheckButtonÚ
set_activerÝ   r	   rÈ   )r@   Úbox2_1Úbox2_2Úimage2_1Ú	button2_1rá   Úlabel2_1Útextview2_1Úbox2_3ræ   rå   rß   rõ   rý   rà   s   `         @@@@@rA   r<   ÚApplicationWindow._setup_page2.  s  ý€ ô —’“ˆä—’“ˆÜ—9’9“;ˆØ×Ñœ}Ô-Ø�
‰
�8ÔØ�
‰
�6Ôä—J‘J×-Ñ-Ð.CÓDˆ	÷	/ð
 	×Ñ˜) \Ô2Ø�
‰
�9Ôä—9’9Ð#vÑwˆØ×Ñ˜q #Ô&Ø×ÑœS×.Ñ.×3Ñ3Ô4Ø�
‰
�8Ôä—l’l“nˆØ#×.Ñ.Ó0ˆØ×Ñ˜xÔ(Ø× Ñ  Ô'Ø×%Ñ%¤c×&7Ñ&7×&>Ñ&>Ô?Ø×!Ñ! $Ô'Ø×!Ñ!¤#§,¡,×"3Ñ"3Ô4Ø�
‰
�;Ôä—’“ˆäŸšÐ/PÑQˆØ×!Ñ! %Ô(Ø×$Ñ$ UÔ+õ	*ð 	×Ñ˜yÐ*;Ô<Ø�
‰
�>Ô"ä—J‘J×-Ñ-¨jÓ9ˆ	Ø×Ñ Ô&ä	ô)	)ó 
ð)	)÷V	7ð 	×Ñ˜)Ð%5Ô6Ø�
‰
�9Ôà�
‰
�6Ôà×Ñ˜Õ rC   c                 ót	  ^ ^^^^^^^^^^^• [         R                  " 5       n[         R                  " 5       n[         R                  " 5       nUR	                  [
        5        UR                  U5        UR                  U5        [         R                  " 5       nUR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        [         R                  " SS9nUR                  USSSS5        [         R                   " 5       mTR#                  S5        TR%                  S5        TR'                  S5        UR                  TSSSS5        S	S	S	S
.mUU4S jmS mS mUUUU4S jnTR)                  SU5        [         R                  " SS9nUR                  USSSS5        [         R                   " 5       mTR#                  S5        TR%                  S5        TR'                  S5        TR+                  S5        UR                  TSSSS5        [         R                  " SS9nUR                  USSSS5        [         R                   " 5       mTR#                  S5        TR%                  S5        TR'                  S5        TR+                  S5        UR                  TSSSS5        UUUUU4S jnTR)                  SU5        TR)                  SU5        [         R                  " SS9n	UR                  U	SSSS5        [         R,                  " SS9n
U
R/                  S5        U
R1                  S5        UU4S jnU
R)                  SU5        UR                  U
SSSS5        [         R                  " SS9n	UR                  U	SSSS5        [         R,                  " SS9mTR/                  S5        TR1                  S5        U4S jnTR)                  SU5        UR                  TSSSS5        [         R2                  R5                  S5      mTR1                  S5        [6        UUU 4S  j5       mUUU 4S! jmTR)                  S"T5        UR                  TSSSS5        UR                  U5        T R9                  U5        g	)#z

:return:
rš   zYour email address:r›   r   r   Ú éÿ   é(   N)r‚   ÚpasswordÚeulac                  óš   >• [        S5        T H(  n TU    b  M  [        SU 5        TR                  S5          g    TR                  S5        g )NÚ	check_allzcheck failedFT)ÚprintrÝ   )ÚcrÔ   Úcheckss    €€rA   r  Ú1ApplicationWindow._setup_page3.<locals>.check_all½  sJ   ø€ Ü�+ÔÛ�Ø˜!‘9Ó$Ü˜.¨!Ô,Ø×)Ñ)¨%Ô0Ùñ	 ð
 ×!Ñ! $Õ'rC   c                 ó   • SU ;   a  U $ g )NÚ@© )r‚   s    rA   Úcheck_emailÚ3ApplicationWindow._setup_page3.<locals>.check_emailÆ  s   € Ø�e‹|Ø�àrC   c                 ó   • grä   r#  )r  s    rA   Úcheck_passwordÚ6ApplicationWindow._setup_page3.<locals>.check_passwordÌ  s   € ØrC   c                 ó  >• T" U R                  5       5      TS'   TS   (       a+  TR                  [        R                  R                  S 5        O5TR                  [        R                  R                  [        SSS5      5        T" 5         g )Nr‚   éPÃ  r   ©Úget_textÚ	modify_fgr   Ú
StateFlagsÚNORMALr   )Úentryr  r$  r  Úentry1s    €€€€rA   Ú	on_entry1Ú1ApplicationWindow._setup_page3.<locals>.on_entry1Ï  sa   ø€ á)¨%¯.©.Ó*:Ó;ˆF�7‰OØ�g�Ø× Ñ ¤§¡×!6Ñ!6¸Õ=à× Ñ ¤§¡×!6Ñ!6¼¸eÀQÈÓ8JÔKÙ�KrC   ÚchangedzNew password:FzRepeat new password:r    c                 óØ  >• SnT" TR                  5       5      (       a-  SnTR                  [        R                  R                  S 5        O5TR                  [        R                  R                  [        SSS5      5        SnT" TR                  5       5      (       a-  SnTR                  [        R                  R                  S 5        O5TR                  [        R                  R                  [        SSS5      5        U(       aX  U(       aQ  TR                  5       TR                  5       :X  a/  T" TR                  5       5      (       a  TR                  5       TS'   OS TS'   T" 5         g )NFTr*  r   r  r+  )rÞ   Úpw1_okÚpw2_okr  r'  r  Úentry2Úentry3s      €€€€€rA   Ú
on_entry23Ú2ApplicationWindow._setup_page3.<locals>.on_entry23î  s  ø€ ØˆFÙ˜fŸo™oÓ/×0Ñ0Ø�Ø× Ñ ¤§¡×!6Ñ!6¸Õ=à× Ñ ¤§¡×!6Ñ!6¼¸eÀQÈÓ8JÔKàˆFÙ˜fŸo™oÓ/×0Ñ0Ø�Ø× Ñ ¤§¡×!6Ñ!6¸Õ=à× Ñ ¤§¡×!6Ñ!6¼¸eÀQÈÓ8JÔKæž& V§_¡_Ó%6¸&¿/¹/Ó:KÓ%KÑP^Ð_e×_nÑ_nÓ_p×PqÑPqØ%+§_¡_Ó%6��zÒ"à%)��zÑ"á�KrC   zEULA:r!   z"I accept the EULA and terms of useTc                 óT   >• U R                  5       (       a  STS'   OSTS'   T" 5         g )NTr  F)r•   )Úbuttonr  r  s    €€rA   r£   Ú2ApplicationWindow._setup_page3.<locals>.on_button1  s)   ø€ Ø× Ñ ×"Ñ"Ø!%��v’à!&��v‘Ù�KrC   rè   zCloud backup:r]   z5Yes, enable encrypted cloud backup of my private keysc                 ó   >• T" 5         g r’   r#  )r=  r  s    €rA   r­   Ú2ApplicationWindow._setup_page3.<locals>.on_button2  s   ø€ Ù�KrC   zRegister accountc              3   ój  >#   • TS   Tl         TS   Tl        TR                  5       Tl        STl        SR                  TR                  [        R                  " SS5      5      Tl        TR                  R                  TR                  5        TR                  R                  STR                   S9  TR                  R                  S	TR                  S
9  TR                  R                  STR                  S9  TR                  R                  TR                  TR                   5      v •n[        U5        TR                   TR                  l        TR                  TR                  l        [#        [$        R&                  " US   S95      TR                  l        [#        [*        R,                  " US   S5      5      TR                  l        TR                  TR0                  R2                  TR4                  '   TR0                  R7                  TR                  5        TR9                  S5        g 7f)Nr‚   r  Ú	anonymousz{}{}r   i'  zinput_email: {input_email})r.   z input_username: {input_username})Úinput_usernamez input_password: {input_password})r/   rv   r#   Ú	timestamprG   r!   )r.   r/   r•   Úinput_backup_enabledrC  r{   ÚrandomÚrandintr(   rð   r+   rt   ru   Ú_do_onboard_memberr   r‚   r�   rf   r4   r5   rv   rg   rh   r†   r)   rñ   r,   rò   rw   )rÞ   ÚresultrÒ   r  r@   s     €€€rA   r±   Ú2ApplicationWindow._setup_page3.<locals>.on_button3(  s›  øé € à% g™ˆDÔØ"(¨Ñ"4ˆDÔØ(/×(:Ñ(:Ó(<ˆDÔ%Ø"-ˆDÔØ"(§-¡-°×0CÑ0CÄVÇ^Â^ÐTUÐW\ÓE]Ó"^ˆDÔà�L‰L×0Ñ0°·±Ô>à�H‰H�M‰MÐ6ÀD×DTÑDTˆMÑUØ�H‰H�M‰MÐ<ÈT×M`ÑM`ˆMÑaØ�H‰H�M‰MÐ<ÈT×M`ÑM`ˆMÑaØŸ<™<×:Ñ:¸4×;NÑ;NÐPT×P`ÑP`ÓaÑaˆFÜ�6ŒNà!%×!1Ñ!1ˆD�L‰LÔØ$(×$7Ñ$7ˆD�L‰LÔ!Ü'*¬4¯9ª9¸6À-Ñ;PÑ+QÓ'RˆD�L‰LÔ$Ü-0´·²¸vÀkÑ?RÐTXÓ1YÓ-ZˆD�L‰LÔ*à6:·l±lˆD�K‰K× Ñ  ×!2Ñ!2Ñ3Ø�K‰K×Ñ˜T×0Ñ0Ô1à×!Ñ! !Õ$ùs   ƒH0H3c                 ó~   >• TR                   R                  S[        T5      U S9  [        R                  " STU 5        g rø   rû   )rú   r±   Úrun_on_button3r@   s    €€€rA   rL  Ú6ApplicationWindow._setup_page3.<locals>.run_on_button3B  ó2   ø€ Ø�H‰H�M‰MÐ,´6¸.Ó3IÐRXˆMÑYÜ×Ò˜a ¨VÕ4rC   r¥   )r   rÿ   r   rº   r»   r¼   r  r³   r´   rµ   r¶   r·   r¸   r¹   r¾   r½   ÚEntryrÜ   Úset_max_lengthÚset_max_width_charsrÅ   Úset_visibilityr  r  rÝ   rÃ   rÄ   r	   rÈ   )r@   Úbox1Úbox2rÊ   rÉ   rÌ   r2  rÑ   r:  rÓ   rÍ   r£   r­   rÒ   rÔ   r  r$  r'  r  r1  r8  r9  r±   rL  s   `            @@@@@@@@@@@rA   r=   ÚApplicationWindow._setup_page3™  sÊ  ÿû€ ô
 �xŠx‹zˆä�xŠx‹zˆÜ—’“ˆØ×Ñœ]Ô+Ø�‰�ÔØ�‰�Œä—’“
ˆØ×Ñ˜bÔ!Ø× Ñ  Ô$Ø×Ñ˜RÔ Ø×Ñ Ô#Ø×Ñ˜rÔ"Ø×Ñ˜RÔ ä—’Ð!6Ñ7ˆØ�‰�V˜Q  1 aÔ(ä—’“ˆØ�‰˜ÔØ×Ñ˜cÔ"Ø×"Ñ" 2Ô&Ø�‰�V˜Q  1 aÔ(ð ØØñ
ˆö	(ò	ò	÷	ð 	ð 	�‰�y )Ô,ä—’ Ñ1ˆØ�‰�V˜Q  1 aÔ(ä—’“ˆØ�‰˜ÔØ×Ñ˜bÔ!Ø×"Ñ" 2Ô&Ø×Ñ˜eÔ$Ø�‰�V˜Q  1 aÔ(ä—’Ð!7Ñ8ˆØ�‰�V˜Q  1 aÔ(ä—’“ˆØ�‰˜ÔØ×Ñ˜bÔ!Ø×"Ñ" 2Ô&Ø×Ñ˜eÔ$Ø�‰�V˜Q  1 aÔ(÷	ñ 	ð, 	�‰�y *Ô-Ø�‰�y *Ô-ä—’ Ñ)ˆØ�‰�V˜Q  1 aÔ(ä—/’/Ð(LÑMˆØ×Ñ˜5Ô!Ø×Ñ˜dÔ#ö	ð 	�‰˜	 :Ô.Ø�‰�W˜a  A qÔ)ä—’ Ñ1ˆØ�‰�V˜Q  1 aÔ(ä—/’/Ð(_Ñ`ˆØ×Ñ˜5Ô!Ø×Ñ˜dÔ#õ	ð 	�‰˜	 :Ô.Ø�‰�W˜a  A qÔ)ä—*‘*×+Ñ+Ð,>Ó?ˆØ×Ñ˜eÔ$ä	ö	%ó 
ð	%÷2	5ð 	�‰˜	 >Ô2Ø�‰�W˜a  A qÔ)à�‰�Œà×Ñ˜ÕrC   c                 ó   ^ ^	^
^^• [         R                  " 5       n[         R                  " 5       n[         R                  " 5       nUR	                  [
        5        UR                  U5        UR                  U5        [         R                  " 5       n[         R                  " SS9n[         R                  " SS9nUR                  U5        UR                  U5        UR                  U5        [         R                  " SS9nUR                  U5        [         R                  " 5       m
T
R                  S5        T
R                  S5        T
R                  S5        UR                  T
5        U	U
4S jnT
R                  S	U5        [         R                  R                  S
5      m	T	R                  S5        [         U
U 4S j5       mUUU 4S jmT	R                  ST5        UR                  T	5        T R#                  U5        g)zú
Page shown when member registration request was submitted, a verification email
sent, and the verification request ID returned.
The user now should check the email inbox for the received verification code,
and continue verifying the code.

:return:
z4Member registration submitted, verification request:r›   z$8d5d7ffd-23d9-45a0-a686-00a49f29d3cdzMPlease check your email inbox, and enter the verification code received here:r  r  r  c                 óJ  >• [        U R                  5       5      nU(       a<  TR                  [        R                  R
                  S 5        TR                  S5        g TR                  [        R                  R
                  [        SSS5      5        TR                  S5        g )NTr*  r   F)r   r,  r-  r   r.  r/  rÝ   r   )r0  Úvaction_coderÍ   r1  s     €€rA   r2  Ú1ApplicationWindow._setup_page4.<locals>.on_entry1o  sp   ø€ ä0°·±Ó1AÓBˆLÞØ× Ñ ¤§¡×!6Ñ!6¸Ô=Ø×%Ñ% dÕ+à× Ñ ¤§¡×!6Ñ!6¼¸eÀQÈÓ8JÔKØ×%Ñ% eÕ,rC   r4  ÚVerifyFc              3   ó–  >#   • [        TR                  5       5      nU(       a  SR                  UR                  5       5      n[	        TR
                  R                  5      [        :X  a+  [        R                  " TR
                  R                  5      nOTR
                  R                  nTR                  R                  X!5      v •n[        U5        [        [        R                  " US   S5      5      TR
                  l        S[        [         R"                  " US   5      R%                  5       5      -   TR
                  l        [        [        R                  " US   S95      TR
                  l        TR
                  TR*                  R,                  TR.                  '   TR*                  R1                  TR2                  5        g 7f)NÚ-rV   rG   rM   Útransactionr…   r#   )r   r,  ÚjoinÚgroupsÚtyper+   rv   rf   r4   r5   r(   Ú_do_onboard_member_verifyr   rg   rh   r‡   rc   rp   rq   Úvaction_transactionr…   r)   rñ   r,   rò   r/   )rÞ   rX  rv   rI  r1  r@   s       €€rA   r£   Ú2ApplicationWindow._setup_page4.<locals>.on_button1~  s4  øé € ä0°·±Ó1BÓCˆLÞØ"Ÿx™x¨×(;Ñ(;Ó(=Ó>�Ü�D—L‘L×,Ñ,Ó-´Ó4Ü"Ÿiši¨¯©×(@Ñ(@ÓA‘à"Ÿl™l×6Ñ6�ØŸ<™<×AÑAÀ+Ó\Ñ\ˆFÜ�6ŒNä,/´·²¸fÀYÑ>OÐQUÓ0VÓ,WˆD�L‰LÔ)Ø/3´c¼(×:JÒ:JÈ6ÐR_ÑK`Ó:a×:hÑ:hÓ:jÓ6kÑ/kˆD�L‰LÔ,Ü&)¬$¯)ª)¸&ÀÑ:NÑ*OÓ&PˆD�L‰LÔ#Ø6:·l±lˆD�K‰K× Ñ  ×!2Ñ!2Ñ3Ø�K‰K×Ñ˜T×0Ñ0Õ1ùs   ƒGG	c                 ó~   >• TR                   R                  S[        T5      U S9  [        R                  " STU 5        g rø   rû   )rú   r£   Úrun_on_button1r@   s    €€€rA   re  Ú6ApplicationWindow._setup_page4.<locals>.run_on_button1�  rN  rC   r¥   N)r   rÿ   r   rº   r»   r¼   r  r¾   rO  rÜ   rP  rQ  rÅ   rÃ   rÄ   rÝ   r	   rÈ   )r@   rS  rT  rÊ   Úbox3rÌ   rÑ   rÓ   r2  rÍ   r1  r£   re  s   `        @@@@rA   r>   ÚApplicationWindow._setup_page4N  si  ü€ ô �xŠx‹zˆä�xŠx‹zˆÜ—’“ˆØ×Ñœ]Ô+Ø�‰�ÔØ�‰�Œä�xŠx‹zˆÜ—’Ð!WÑXˆÜ—’Ð!GÑHˆØ�‰�ÔØ�‰�ÔØ�‰�Œä—’Ð!pÑqˆØ�‰�Ôä—’“ˆØ�‰˜ÔØ×Ñ˜cÔ"Ø×"Ñ" 2Ô&Ø�‰�Ôö	-ð 	�‰�y )Ô,ä—*‘*×+Ñ+¨HÓ5ˆØ×Ñ˜eÔ$ä	õ	2ó 
ð	2÷"	5ð 	�‰˜	 >Ô2Ø�‰�Ôà×Ñ˜ÕrC   c                 ó  • [         R                  " 5       n[         R                  " 5       n[         R                  " 5       nUR	                  [
        5        UR                  U5        UR                  U5        [         R                  " 5       nUR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        Sn[         R                  " SS9nUR                  SS5        UR!                  USUSS5        [         R                  " 5       U l        U R"                  R                  SS5        U R"                  R%                  S5        UR!                  U R"                  SUSS5        US-  n[         R                  " SS9nUR                  SS5        UR!                  USUSS5        [         R                  " 5       U l        U R&                  R                  SS5        U R&                  R%                  S	5        UR!                  U R&                  SUSS5        US-  n[         R                  " S
S9nUR                  SS5        UR!                  USUSS5        [         R                  " 5       U l        U R(                  R                  SS5        U R(                  R%                  S5        UR!                  U R(                  SUSS5        US-  n[         R                  " SS9n	U	R                  SS5        UR!                  U	SUSS5        [         R                  " 5       U l        U R*                  R                  SS5        U R*                  R%                  S	5        UR!                  U R*                  SUSS5        US-  n[         R                  " SS9n
U
R                  SS5        UR!                  U
SUSS5        [         R                  " 5       U l        U R,                  R                  SS5        U R,                  R%                  S	5        UR!                  U R,                  SUSS5        US-  n[         R                  " SS9nUR                  SS5        UR!                  USUSS5        [         R                  " 5       U l        U R.                  R                  SS5        U R.                  R%                  S	5        UR!                  U R.                  SUSS5        US-  n[         R                  " SS9nUR                  SS5        UR!                  USUSS5        [         R                  " 5       U l        U R0                  R                  SS5        U R0                  R%                  S	5        UR!                  U R0                  SUSS5        US-  nUR                  U5        [         R                  " 5       nUR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        [         R                  " SS9nUR                  SS5        UR!                  USSSS5        [         R                  " 5       U l        U R2                  R                  SS5        U R2                  R%                  S	5        UR!                  U R2                  SSSS5        [         R                  " SS9nUR                  SS5        UR!                  USSSS5        [         R                  " 5       U l        U R4                  R                  SS5        U R4                  R%                  S	5        UR!                  U R4                  SSSS5        [         R                  " SS9nUR                  SS5        UR!                  USSSS5        [         R                  " 5       U l        U R6                  R                  SS5        UR!                  U R6                  SSSS5        [         R                  " SS9nUR                  SS5        UR!                  USSSS5        [         R                  " 5       U l        U R8                  R                  SS5        UR!                  U R8                  SSSS5        [         R                  " SS9nUR                  SS5        UR!                  USSSS5        [         R                  " 5       U l        U R:                  R                  SS5        UR!                  U R:                  SSSS5        [         R                  " SS9nUR                  SS5        UR!                  USSSS5        [         R                  " 5       U l        U R<                  R                  SS5        UR!                  U R<                  SSSS5        UR                  U5        U R?                  U5        g)zK
Page shown for a user (private eth key) that already is member.

:return:
rš   r   zCurrent server time:r›   r   r�   FzBlockchain ID:TzService status:zXBRNetwork contract:zXBRToken contract:zCurrent block hash:zCurrent block number:zUser ID:zEth Address:zAccount Created:r    zMembership:r!   zETH Balance:r]   zXBR Balance:r«   N) r   rÿ   r   rº   r»   r¼   r  r³   r´   rµ   r¶   r·   r¸   r¹   r¾   r¿   r½   ri   Úset_selectablerk   rl   rm   rn   ro   rr   rx   ry   rz   r|   r}   r~   rÈ   )r@   rS  rT  rÊ   Úgrid2Úgrid2_yÚlabel5_now_titleÚlabel5_chain_titleÚlabel5_status_titleÚlabel5_xbrnetwork_titleÚlabel5_xbrtoken_titleÚlabel5_blockhash_titleÚlabel5_blocknumber_titlerÉ   rÌ   rÓ   Úlabel5Úlabel7Úlabel9Úlabel11s                       rA   r?   ÚApplicationWindow._setup_page5š  sÖ  € ô �xŠx‹zˆä�xŠx‹zˆÜ—’“ˆØ×Ñœ]Ô+Ø�‰�ÔØ�‰�Œä—’“
ˆØ×Ñ˜bÔ!Ø× Ñ  Ô$Ø×Ñ˜RÔ Ø×Ñ Ô#Ø×Ñ˜rÔ"Ø×Ñ˜RÔ àˆô Ÿ9š9Ð+AÑBÐØ×&Ñ& q¨#Ô.Ø�‰Ð% q¨'°1°aÔ8ÜŸ9š9›;ˆÔØ×Ñ×&Ñ& q¨#Ô.Ø×Ñ×'Ñ'¨Ô.Ø�‰�T×%Ñ% q¨'°1°aÔ8Ø�1‰ˆô !ŸYšYÐ-=Ñ>ÐØ×(Ñ(¨¨CÔ0Ø�‰Ð'¨¨G°Q¸Ô:Ü ŸYšY›[ˆÔØ×Ñ×(Ñ(¨¨CÔ0Ø×Ñ×)Ñ)¨$Ô/Ø�‰�T×'Ñ'¨¨G°Q¸Ô:Ø�1‰ˆô "ŸišiÐ.?Ñ@ÐØ×)Ñ)¨!¨SÔ1Ø�‰Ð(¨!¨W°a¸Ô;Ü!Ÿiši›kˆÔØ×Ñ×)Ñ)¨!¨SÔ1Ø×Ñ×*Ñ*¨5Ô1Ø�‰�T×(Ñ(¨!¨W°a¸Ô;Ø�1‰ˆô #&§)¢)Ð2HÑ"IÐØ×-Ñ-¨a°Ô5Ø�‰Ð,¨a°¸!¸QÔ?Ü"%§)¢)£+ˆÔØ×Ñ×-Ñ-¨a°Ô5Ø×Ñ×.Ñ.¨tÔ4Ø�‰�T×,Ñ,¨a°¸!¸QÔ?Ø�1‰ˆô !$§	¢	Ð0DÑ EÐØ×+Ñ+¨A¨sÔ3Ø�‰Ð*¨A¨w¸¸1Ô=Ü #§	¢	£ˆÔØ×Ñ×+Ñ+¨A¨sÔ3Ø×Ñ×,Ñ,¨TÔ2Ø�‰�T×*Ñ*¨A¨w¸¸1Ô=Ø�1‰ˆô "%§¢Ð1FÑ!GÐØ×,Ñ,¨Q°Ô4Ø�‰Ð+¨Q°¸¸AÔ>Ü!$§¢£ˆÔØ×Ñ×,Ñ,¨Q°Ô4Ø×Ñ×-Ñ-¨dÔ3Ø�‰�T×+Ñ+¨Q°¸¸AÔ>Ø�1‰ˆô $'§9¢9Ð3JÑ#KÐ Ø ×.Ñ.¨q°#Ô6Ø�‰Ð-¨q°'¸1¸aÔ@Ü#&§9¢9£;ˆÔ Ø× Ñ ×.Ñ.¨q°#Ô6Ø× Ñ ×/Ñ/°Ô5Ø�‰�T×-Ñ-¨q°'¸1¸aÔ@Ø�1‰ˆà�‰�Œä—’“
ˆØ×Ñ˜bÔ!Ø× Ñ  Ô$Ø×Ñ˜RÔ Ø×Ñ Ô#Ø×Ñ˜rÔ"Ø×Ñ˜RÔ ä—’ Ñ,ˆØ×Ñ˜Q Ô$Ø�‰�V˜Q  1 aÔ(ä—y’y“{ˆŒØ�‰×"Ñ" 1 cÔ*Ø�‰×#Ñ# DÔ)Ø�‰�T—\‘\ 1 a¨¨AÔ.ä—’ Ñ0ˆØ×Ñ˜Q Ô$Ø�‰�V˜Q  1 aÔ(ä—y’y“{ˆŒØ�‰×"Ñ" 1 cÔ*Ø�‰×#Ñ# DÔ)Ø�‰�T—\‘\ 1 a¨¨AÔ.ä—’Ð!3Ñ4ˆØ×Ñ˜Q Ô$Ø�‰�V˜Q  1 aÔ(ä—y’y“{ˆŒØ�‰×"Ñ" 1 cÔ*Ø�‰�T—\‘\ 1 a¨¨AÔ.ä—’ Ñ/ˆØ×Ñ˜Q Ô$Ø�‰�V˜Q  1 aÔ(ä—y’y“{ˆŒØ�‰×"Ñ" 1 cÔ*Ø�‰�T—\‘\ 1 a¨¨AÔ.ä—’ Ñ0ˆØ×Ñ˜Q Ô$Ø�‰�V˜Q  1 aÔ(äŸ	š	›ˆŒØ�‰×#Ñ# A sÔ+Ø�‰�T—]‘] A q¨!¨QÔ/ä—)’) .Ñ1ˆØ×Ñ˜a Ô%Ø�‰�W˜a  A qÔ)äŸ	š	›ˆŒØ�‰×#Ñ# A sÔ+Ø�‰�T—]‘] A q¨!¨QÔ/à�‰�Œà×Ñ˜ÕrC   )r}   r~   rx   ry   ro   rr   rk   ri   rl   rm   rn   rz   r|   r)   r*   rE  r.   r/   r-   rC  r0   r1   r2   r3   r6   r+   r,   r
   r(   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚtxaioÚmake_loggerrt   ÚSELECTED_NONEÚSELECTED_NEWÚSELECTED_SYNCRONIZEÚSELECTED_RECOVERr'   r	   r�   r—   r;   r<   r=   r>   r?   Ú__static_attributes__r#  rC   rA   r   r   H   sr   † ñð  ×
Ò
Ó
€Cà€MØ€LØÐØÐòðB ñE%ó ðE%òNHò^ òBh!òVròjIõXcrC   r   c                   ó:   • \ rS rSrS r\S 5       r\S 5       rSrg)ÚApplicationClienti@  c           	   ƒ   ót  #   • U R                   R                  S[        UR                  5      [        UR                  5      [        UR
                  5      [        UR                  5      US9  SU R                  R                  ;   a0  [        R                  " U R                  R                  S   X45        g g 7f)NzbOk, client joined on realm "{realm}" [session={session}, authid="{authid}", authrole="{authrole}"])Úrealmr(   ÚauthidÚauthroleÚdetailsÚready)rt   ru   r   rˆ  r(   r‰  rŠ  r)   Úextrar~  Úresolve)r@   r‹  s     rA   ÚonJoinÚApplicationClient.onJoinA  sŠ   é € Ø�‰�‰ÐzÜ  §¡Ó/Ü" 7§?¡?Ó3Ü! '§.¡.Ó1Ü# G×$4Ñ$4Ó5Ø%ð 	ñ 	'ð �d—k‘k×'Ñ'Ó'Ü�MŠM˜$Ÿ+™+×+Ñ+¨GÑ4°t°oÕFð (ùs   ‚B6B8c              #   óÀ   #   • U R                  5       (       a*  U R                  S5      v •nU R                  S5      v •nXS.$ U R                  R                  S5        g 7f)Nzxbr.network.get_configzxbr.network.get_status)r)   rE   z(not connected: could not retrieve status)Úis_attachedÚcallrt   Úwarn)r@   r)   rE   s      rA   re   ÚApplicationClient.get_statusK  sR   é € à×Ñ×ÑØŸ9™9Ð%=Ó>Ñ>ˆFØŸ9™9Ð%=Ó>Ñ>ˆFØ$Ñ7Ð7à�H‰H�M‰MÐDÕEùs   ‚AAc           	   #   óR  #   • U R                  5       (       Gas  U R                  SU5      v •nU(       Ga<  U R                  SU5      v •n[        R                  R	                  US   5      US'   [
        R                  " US   S9US'   [        R                  R                  [        US   S   5      S5      US   S'   [        R                  R                  [        US   S	   5      S5      US   S	'   [        R                  " US
   S5      US
'   US   nSSSSSS.R                  US 5      US'   U R                  R                  S[        US   5      [        US   5      [        US   5      S9  U$ U R                  R!                  SUS9  g U R                  R!                  SUS9  g 7f)Nzxbr.network.is_memberz xbr.network.get_member_by_walletrX   rW   r#   rZ   r[   Úetherr\   rV   rG   rY   ÚACTIVEÚVERIFIEDÚRETIREDÚPENALTYÚBLOCKED)r   r    r!   r]   r«   zZMember {member_oid} found for address 0x{member_adr} - current member level {member_level})Úmember_levelr…   ró   z:Address {output_ethadr} is not a member in the XBR networkrR   zInot connected: could not retrieve member data for address {output_ethadr})r’  r“  r`   ra   rb   r4   r5   ÚfromWeir   rg   rh   Úgetrt   ru   r   r   r”  )r@   Ú
ethadr_rawÚ	is_memberrU   r�  s        rA   rs   ÚApplicationClient.get_memberT  s¶  é € à×Ñ×ÒØ"Ÿi™iÐ(?ÀÓLÑLˆIßØ$(§I¡IÐ.PÐR\Ó$]Ñ]�ä)-¯©×)DÑ)DÀ[ÐQZÑE[Ó)\�˜IÑ&Ü%)§Y¢Y°[ÀÑ5GÑ%H�˜EÑ"Ü04·	±	×0AÑ0AÄ.ÐQ\Ð]fÑQgÐhmÑQnÓBoØBIó1K�˜IÑ& uÑ-ä04·	±	×0AÑ0AÄ.ÐQ\Ð]fÑQgÐhmÑQnÓBoØBIó1K�˜IÑ& uÑ-ä)+¯ª°{À9Ñ7MÈtÓ)T�˜IÑ&à*¨7Ñ3�ð  à!à à à ñ(÷ ‘#�l DÓ)ð ˜GÑ$ð —‘—‘ØpÜ!& {°7Ñ';Ó!<Ü# K°Ñ$6Ó7Ü$ [°Ñ%;Ó<ð	 ñ >ð #Ð"à—‘—‘ÐZØ,6ð ò 8ð �H‰H�M‰MÐeØ(2ð ò 4ùs   ‚F%F'r#  N)	ry  rz  r{  r|  r�  r	   re   rs   r„  r#  rC   rA   r†  r†  @  s2   † òGð ñFó ðFð ñ(4ó ó(4rC   r†  c                   ó°   • \ rS rSrSr\R                  " 5       r\R                  R                  \R                  R                  S5      5      rSrSS jrSrg)	ÚApplicationi€  z
Main XBR member application.
z~/.xbrnetworkz
config.iniNc           	   ƒ   ó$
  ^ ^#   • [         R                  " SS9  T R                  R                  SUS9  [        R
                  R                  T R                  5      (       dD  [        R                  " T R                  5        T R                  R                  ST R                  S9  [        R
                  R                  T R                  T R                  5      =T l        nU=(       d    ST l        [        R
                  R                  T R                  5      (       dG  T R                  R                  ST R                  S	9  [        T R                  5      T l        S
T l        GO-[        T R                  5      T l        S nT R                  R#                  US9  T R                  T R                  R$                  ;  aN  [&        R(                  " SR+                  T R                  U[-        T R                  R$                  5      5      5      eT R                  R$                  T R                     T l        T R                  R                  ST R                  T R                  S9  [/        T R                   R1                  5       5        [3        S5        [         R4                  " 5       [         R4                  " 5       ST R                  T R                  T R                   T R                  S.mU=(       dD    T R                   (       a1  T R                   R6                  (       a  T R                   R6                  OSnU=(       dD    T R                   (       a1  T R                   R8                  (       a  T R                   R8                  OSn[;        UUT[=        5       /S9n	T R                  R                  SUUS9  U	R?                  [@        USSS9I S
h  v•N   T R                  R                  S5        TS   I S
h  v•N u  p«T R                  R                  SUS9  UU 4S jn[C        XT R                  T R                  T R                   T R                  5      nURE                  SU5        URE                  S U5        URG                  5         URI                  5       I S
h  v•N   S!nTS"   (       a>  US#-  nT R                  R                  S$US%9  [K        S&5      I S
h  v•N   TS"   (       a  M>  T R                  R                  S'5        g
 GN9 GN Np N47f)(aM  
Start main application. This will read the user configuration, potentially asking
for a user password.

:param reactor: Twisted reactor to use.
:param url: Optionally override network URL as defined in profile.
:param realm: Optionally override network URL as defined in profile.
:param profile: User profile name to load.
:return:
ru   )rY   z5ok, application starting for user profile "{profile}")r+   zdotdir created: "{dotdir}")ÚdotdirÚdefaultz%no config exist under "{config_path}")r*   Nc                  ó   • g)NÚ	123secretr#  r#  rC   rA   ÚgetpwÚ Application.start.<locals>.getpw¦  s   € Ø"rC   )Úcb_get_passwordz4no such profile "{}" in config "{}" with {} profilesz<user profile "{profile_name}" loaded from "{config_path}":

)r*   r,   z

T)rŒ  ÚdoneÚrunningr)   r*   r+   r,   r^   rK   )Úurlrˆ  r�  ÚserializerszIok, now connecting to "{network_url}", joining realm "{network_realm}" ..)rƒ   r„   F)r
   Úauto_reconnectÚstart_reactorz!ok, application client connected!rŒ  z)ok, application session joined: {details})r‹  c                 óz   >• TR                   R                  S5        STS'   [        R                  " TS   S 5        g )Nzexiting application ..Fr®  r­  )rt   ru   r~  rŽ  )rÞ   r�  r@   s    €€rA   Úon_exitÚ"Application.start.<locals>.on_exitÓ  s0   ø€ Ø�H‰H�M‰MÐ2Ô3Ø$ˆE�)ÑÜ�MŠM˜% ™-¨Õ.rC   ÚcancelÚdestroyr   r®  r   z7ok, application main task still running at tick {ticks})Úticksr«   z ok, application main task ended!)&r~  Ústart_loggingrt   ru   Úosr   ÚisdirÚDOTDIRÚmkdirr^  ÚDOTFILEÚ_config_pathÚ_profile_nameÚisfiler   Ú_configÚ_profileÚloadrñ   ÚclickÚClickExceptionr{   Úlenr   Úmarshalr  Úcreate_futurerƒ   r„   r   r   Úrunr†  r   rÅ   Úshow_allr�   r   )r@   r
   r¯  rˆ  r+   r*   rª  rƒ   r„   Úrunnerr(   r‹  r´  Úwinr¸  r�  s   `              @rA   r�   ÚApplication.start‰  s  ùé € ô 	×Ò &Ò)à�‰�‰ÐMÐW^ˆÑ_ä�w‰w�}‰}˜TŸ[™[×)Ñ)Ü�HŠH�T—[‘[Ô!Ø�H‰H�M‰MÐ6¸t¿{¹{ˆMÑKä*,¯'©'¯,©,°t·{±{ÀDÇLÁLÓ*QÐQˆÔ˜KØ$×1¨	ˆÔÜ�w‰w�~‰~˜d×/Ñ/×0Ñ0Ø�H‰H�M‰MÐAÈt×O`ÑO`ˆMÑaÜ% d×&7Ñ&7Ó8ˆDŒLØ ˆDŽMä% d×&7Ñ&7Ó8ˆDŒLò#ð �L‰L×Ñ¨eÐÑ4Ø×!Ñ!¨¯©×)>Ñ)>Ó>Ü×*Ò*Ð+a×+hÑ+hÐim×i{Ñi{ð  ~Iô  KNð  OS÷  O[ñ  O[÷  Odñ  Odó  Keó  ,fó  gð  gà $§¡× 5Ñ 5°d×6HÑ6HÑ I�”Ø—‘—‘Ð^Ø*.×*;Ñ*;È$×J\ÑJ\ð ñ ^ä�t—}‘}×,Ñ,Ó.Ô/Ü�f”ô ×(Ò(Ó*Ü×'Ò'Ó)ØØ—l‘lØ×,Ñ,Ø—}‘}Ø ×.Ñ.ñ
ˆð ÷  F¸4¿=¿=ÈTÏ]É]×Mf×Mf˜dŸm™m×7Ò7ð  mEˆð ÷  BÀÇÇÐSW×S`ÑS`×Sn×Sn $§-¡-×"=Ò"=ð  uAˆä" {Ø)6Ø).Ü0>Ó0@Ð/AñCˆð
 	�‰�‰ÐaØ"-Ø$1ð 	ñ 	3ð �j‰jÔ*Ø!(Ø(,Ø',ð ð .÷ 	.ð 	.ð 	�‰�‰Ð9Ô:à!& w¡×/ÑˆØ�‰�‰ÐAÈ7ˆÑSö	/ô
   °$·,±,À×@QÑ@QÐSW×S`ÑS`Ðbf×btÑbtÓuˆØ�‰�H˜gÔ&Ø�‰�I˜wÔ'Ø�‰Œà�i‰i‹k×ÐàˆØ�I×Ø�Q‰JˆEØ�H‰H�M‰MÐSÐ[`ˆMÑaÜ˜“(�NˆNð �I×Ñð
 	�‰�‰Ð8Õ9ò7	.ò 0ñ 	ñ ùsO   „O	TÏTÏ'TÏ5T	Ï6B%TÒTÒ=TÓTÓTÓ*TÔ	TÔTÔT)rÂ  r¿  rÃ  rÀ  )NNN)ry  rz  r{  r|  r}  r~  r  rt   rº  r   ÚabspathÚ
expanduserr¼  r¾  r�   r„  r#  rC   rA   r¤  r¤  €  sC   † ñð ×
Ò
Ó
€Cà�W‰W�_‰_˜RŸW™W×/Ñ/°Ó@ÓA€FØ€G÷\:rC   r¤  c              ƒ   óT   #   • [        5       nUR                  XX#S9I Sh  v•N   g N7f)a  
Load the named user profile (or create a new one), overriding URL/realm,
connect to a network node, and start the network member on-boarding.

If the user credentials are already for a member, fetch member information
and display member page.

:param reactor: Twisted reactor to use.
:param url: Override network URL from user profile with this value.
:param realm: Override network realm from user profile with this value.
:param profile: Name of user profile within user
    configuration to load (eg from ``$HOME/.xbrnetwork/config.ini``)
)r¯  rˆ  r+   N)r¤  r�   )r
   r¯  rˆ  r+   Úapps        rA   ÚmainrÓ  è  s$   é € ô ‹-€CØ
�)‰)�G¨Eˆ)Ð
C×CÓCùs   ‚( &¡(c                  ó:  • [         R                  " 5       n U R                  SS[        SSS9  U R                  SS[        SSS9  U R                  S	S
[        SSS9  U R	                  5       n[        [        UR                  UR                  UR                  45        g)ap  
GUI entry point, parsing command line arguments and then starting the
actual main GUI program with parsed parameters.

To use, run:

.. code:: console

    xbrnetwork-ui --profile default --url ws://localhost:8090/ws --realm xbrnetwork

This will load the user profile ``"default"`` from the user configuration, but
overriding any network URL and realm found therin.
z--urlr¯  Nz;The router URL to connect to, e.g. "ws://localhost:8090/ws")Údestr`  r§  Úhelpz--realmrˆ  z$The realm to join, e.g. "xbrnetwork"z	--profiler+   r§  z'The user profile to use, e.g. "default")
ÚargparseÚArgumentParserÚadd_argumentrf   Ú
parse_argsr   rÓ  r¯  rˆ  r+   )ÚparserÚargss     rA   Ú_mainrÝ  ú  s©   € ô ×$Ò$Ó&€Fà
×Ñ˜Ø"Ü Ø $ØZð	 ñ \ð ×Ñ˜	Ø$Ü Ø $ØCð	 ñ Eð ×Ñ˜Ø&Ü Ø )ØFð	 ñ Hð ×ÑÓ€Dä	Œ$�—‘˜4Ÿ:™: t§|¡|Ð5Õ6rC   Ú__main__)Brº  r×  r4   rc   rF  Úpkg_resourcesr   Útimer   ÚgiÚrequire_versionÚgi.repositoryr   Úgi.repository.Gdkr   Útwisted.internetr   Úinstallr~  Úuse_twistedÚtwisted.internet.taskr   Útwisted.internet.deferr	   r
   r`   Únumpyrg   rÅ  Úhumanizer   r   Úautobahn.utilr   r   r   r   Úautobahn.wamp.serializerr   Úautobahn.twisted.utilr   Úautobahn.twisted.wampr   Úautobahn.xbrr   r   r   r   Úautobahn.xbr._clir   Úautobahn.xbr._configr   r   Úresource_filenamer¼   r  r   rÁ  r&   r   r†  Úobjectr¤  rÓ  rÝ  ry  r#  rC   rA   Ú<module>rõ     s  ðó6 
Û Û Û Û Û Ý Ý ã 	à × Ò �5˜%Ô  Ý Ý #å (Ø × Ò Ô ã Ø × Ò Ô å 'Ý 2Ý $ã ã ã ß .ç DÓ DÝ 3Ý 'Ý 3Ý 'ß ZÑ ZÝ $ß 4à×/Ò/°
Ð<PÓQ€Ù €m�R—W‘W—^‘^ MÓ2Ô 3ôu˜Ÿ™ô uôp=4˜ô =4ô@e:�&ô e:òPDò$$7ðN ˆzÓÙ	…Gð rC   