package Ġim . status . key card . connect . net Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġim . status . key card . app let . B IP 3 2 KeyPair Ċ import Ġim . status . key card . app let . Recover able Signature Ċ import Ġim . status . key card . connect . Registry Ċ import Ġim . status . key card . connect . card . Export Key Command Ċ import Ġim . status . key card . connect . card . Sign Command Ċ import Ġim . status . key card . connect . card . script With Authentication Ċ import Ġim . status . key card . connect . data .* Ċ import Ġim . status . key card . connect . ui . Sign Message Activity Ċ import Ġim . status . key card . connect . ui . Sign Transaction Activity Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Main Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġorg . ke thereum . DEFAULT _ G AS _ LIMIT Ċ import Ġorg . ke thereum . extensions . maybe Hex To BigInteger Ċ import Ġorg . ke thereum . extensions . to BigInteger Ċ import Ġorg . ke thereum . functions . encode RLP Ċ import Ġorg . ke thereum . functions . getToken Transfer To Ċ import Ġorg . ke thereum . functions . getToken Transfer Value Ċ import Ġorg . ke thereum . functions . is Token Transfer Ċ import Ġorg . ke thereum . ke cc ak shortcut . ke cc ak Ċ import Ġorg . ke thereum . model .* Ċ import Ġorg . wallet connect . Session Ċ import Ġorg . wallet connect . Session . Config . Companion . from WC Uri Ċ import Ġorg . wallet connect . impl s .* Ċ import Ġorg . w alle th . k hex . hex To ByteArray Ċ import Ġorg . w alle th . k hex . to HexString Ċ import Ġorg . w alle th . k hex . to No Prefix HexString Ċ import Ġjava . io . File Ċ import Ġjava . lang . Exception Ċ import Ġjava . math . BigInteger Ċ Ċ class ĠWallet Connect ( var Ġb ip 3 2 Path : ĠString , Ġvar Ġchain ID : ĠLong ) Ġ: ĠExport Key Command . Listener , ĠSign Command . Listener , ĠSession . Callback Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġscope Ġ= ĠMain Scope () ĊĠĠĠ Ġprivate Ġval Ġm oshi Ġ= ĠM oshi . Builder (). build () ĊĠĠĠ Ġprivate Ġval Ġok HttpClient Ġ= ĠOk HttpClient () ĊĠĠĠ Ġprivate Ġval Ġsession Store Ġ= ĠFile WC Session Store ( File ( Registry . main Activity . files Dir , Ġ" wc Sessions . json "). apply Ġ{ Ġcreate New File () Ġ}, Ġm oshi ) ĊĠĠĠ Ġprivate Ġvar Ġsession : ĠWC Session ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠrequestId : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġui Action : Ġ( Intent ?) Ġ-> ĠUnit Ġ= Ġthis :: nop ĊĠĠĠ Ġprivate Ġvar Ġsign Action : Ġ( Recover able Signature ) Ġ-> ĠUnit Ġ= Ġthis :: nop ĊĊĠĠĠ Ġoverride Ġfun Ġon Status ( status : ĠSession . Status ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSession . Status . Error Ġ-> Ġprintln (" Wallet Connect ĠError ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSession . Status . Approved Ġ-> Ġprintln (" Wallet Connect ĠApproved ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSession . Status . Connected Ġ-> Ġprintln (" Wallet Connect ĠConnected ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSession . Status . Disconnected Ġ-> Ġprintln (" Wallet Connect ĠDis connected ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSession . Status . Closed Ġ-> Ġsession Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall ( call : ĠSession . MethodCall ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( call ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSession . MethodCall . Session Request Ġ-> ĠRegistry . script Executor . run Script ( script With Authentication (). plus ( Export Key Command ( Registry . wallet Connect , Ġb ip 3 2 Path ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSession . MethodCall . Sign Message Ġ-> Ġsign Text ( call . id , Ġcall . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSession . MethodCall . Send Transaction Ġ-> Ġsign Transaction ( call . id , Ġto Transaction ( call ), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSession . MethodCall . Custom Ġ-> Ġon Custom Call ( call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun Ġ< re ified ĠT > Ġrun On Valid Param ( call : ĠSession . MethodCall . Custom , Ġindex : ĠInt , Ġbody : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparam Ġ= Ġcall . params ?. get OrNull ( index ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( param Ġis ĠT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody ( param ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession ?. reject Request ( call . id , Ġ 1 L , Ġ" Internal Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession ?. reject Request ( call . id , Ġ 1 L , Ġ" Invalid Ġparams ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Custom Call ( call : ĠSession . MethodCall . Custom ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" personal _ sign " Ġ-> Ġrun On Valid Param < String >( call , Ġ 0 ) Ġ{ Ġsign Text ( call . id , Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" eth _ sign Typed Data " Ġ-> Ġ{ Ġrun On Valid Param < Map < *, Ġ* >>( call , Ġ 1 ) Ġ{ Ġ@ Suppress (" UN CHECK ED _ CAST ") Ġsign Typed Data ( call . id , Ġit Ġas ĠMap < String , ĠString >) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" eth _ sign Transaction " Ġ-> Ġ{ Ġrun On Valid Param < Map < *, Ġ* >>( call , Ġ 0 ) Ġ{ Ġsign Transaction ( call . id , Ġto Transaction ( to Send Transaction ( call . id , Ġit )), Ġfalse )} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" eth _ send Raw Transaction " Ġ-> Ġ{ Ġrun On Valid Param < String >( call , Ġ 0 ) Ġ{ Ġrelay TX ( call . id , Ġit ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsession ?. reject Request ( call . id , Ġ 1 L , Ġ" Not Ġimplemented ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto Send Transaction ( id : ĠLong , Ġdata : ĠMap < *, Ġ* >): ĠSession . MethodCall . Send Transaction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfrom Ġ= Ġdata [" from "] Ġas ? ĠString Ġ?: Ġthrow ĠIllegalArgumentException (" from Ġkey Ġmissing ") ĊĠĠĠĠĠĠĠ Ġval Ġto Ġ= Ġdata [" to "] Ġas ? ĠString Ġ?: Ġthrow ĠIllegalArgumentException (" to Ġkey Ġmissing ") ĊĠĠĠĠĠĠĠ Ġval Ġnonce Ġ= Ġdata [" nonce "] Ġas ? ĠString Ġ?: Ġ( data [" nonce "] Ġas ? ĠDouble )?. to Long ()?. toString () ĊĠĠĠĠĠĠĠ Ġval Ġgas Price Ġ= Ġdata [" gas Price "] Ġas ? ĠString ĊĠĠĠĠĠĠĠ Ġval Ġgas Limit Ġ= Ġdata [" gas Limit "] Ġas ? ĠString ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġdata [" value "] Ġas ? ĠString Ġ?: Ġthrow ĠIllegalArgumentException (" value Ġkey Ġmissing ") ĊĠĠĠĠĠĠĠ Ġval Ġtx Data Ġ= Ġdata [" data "] Ġas ? ĠString Ġ?: Ġthrow ĠIllegalArgumentException (" data Ġkey Ġmissing ") ĊĠĠĠĠĠĠĠ Ġreturn ĠSession . MethodCall . Send Transaction ( id , Ġfrom , Ġto , Ġnonce , Ġgas Price , Ġgas Limit , Ġvalue , Ġtx Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto Transaction ( tx : ĠSession . MethodCall . Send Transaction ): ĠTransaction Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgas Limit Ġ= Ġtx . gas Limit ?. maybe Hex To BigInteger () Ġ?: ĠDEFAULT _ G AS _ LIMIT ĊĠĠĠĠĠĠĠ Ġval Ġgas Price Ġ= Ġtx . gas Price ?. maybe Hex To BigInteger () Ġ?: ĠRegistry . ethereum RPC . eth Gas Price () ĊĠĠĠĠĠĠĠ Ġval Ġnonce Ġ= Ġtx . nonce ?. maybe Hex To BigInteger () Ġ?: ĠRegistry . ethereum RPC . eth Get Transaction Count ( tx . from ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠTransaction ( chain ID . to BigInteger (), Ġnull , ĠAddress ( tx . from ), Ġgas Limit , Ġgas Price , Ġtx . data . hex To ByteArray (), Ġnonce , ĠAddress ( tx . to ), Ġnull , Ġtx . value . maybe Hex To BigInteger ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrelay TX ( id : ĠLong , Ġsigned Tx : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsession ?. approve Request ( id , ĠRegistry . ethereum RPC . eth Send Raw Transaction ( signed Tx )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsign Text ( id : ĠLong , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġmessage . hex To ByteArray () ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĠString ( msg ) ĊĊĠĠĠĠĠĠĠ ĠrequestId Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġui Action Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Ġ= Ġ( byte ArrayOf ( 0 x 1 9 ) Ġ+ Ġ" E thereum ĠSigned ĠMessage :\ n ${ msg . size }". toByteArray () Ġ+ Ġmsg ). ke cc ak () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegistry . script Executor . run Script ( script With Authentication (). plus ( Sign Command ( Registry . wallet Connect , Ġhash ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsign Action Ġ= Ġ{ Ġsession ?. approve Request ( requestId , Ġ" 0 x ${ it . r . to No Prefix HexString ()} ${ it . s . to No Prefix HexString ()} ${ ( it . rec Id Ġ+ Ġ 2 7 ). to Byte (). to HexString () }") Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Registry . main Activity , ĠSign Message Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SIGN _ TEXT _ MESSAGE , Ġtext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠRegistry . main Activity . startActivity For Result ( intent , ĠREQ _ WAL LET CONNECT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsign Typed Data ( id : ĠLong , Ġmessage : ĠMap < String , ĠString >) Ġ{ ĊĠĠĠĠĠĠĠ ĠrequestId Ġ= Ġid ĊĠĠĠĠĠĠĠ Ġsession ?. reject Request ( id , Ġ 1 L , Ġ" Not Ġimplemented Ġyet ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsign Transaction ( id : ĠLong , Ġtx : ĠTransaction , Ġsend : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠrequestId Ġ= Ġid ĊĊĠĠĠĠĠĠĠ Ġui Action Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Ġ= Ġtx . encode RLP ( Signature Data ( v Ġ= Ġchain ID . to BigInteger ())). ke cc ak () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegistry . script Executor . run Script ( script With Authentication (). plus ( Sign Command ( Registry . wallet Connect , Ġhash ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsign Action Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsigned Tx Ġ= ĠSigned Transaction ( tx , ĠSignature Data ( it . r . to BigInteger (), Ġit . s . to BigInteger (), Ġ( it . rec Id Ġ+ Ġ( chain ID Ġ* Ġ 2 ) Ġ+ Ġ 3 5 ). to BigInteger ())). encode RLP (). to HexString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġif Ġ( send ) ĠRegistry . ethereum RPC . eth Send Raw Transaction ( signed Tx ) Ġelse Ġsigned Tx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession ?. approve Request ( requestId , Ġres ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession ?. reject Request ( requestId , Ġ 1 L , Ġ" Internal Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Registry . main Activity , ĠSign Transaction Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tx . is Token Transfer ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Info Ġ= ĠRegistry . ethereum RPC . eth plorer GetToken Info ( tx . to !!. hex ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( token Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecimals Ġ= Ġ( token Info [" decimals "] Ġas ? ĠString )?. toInt () Ġ?: Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SIGN _ TX _ AMOUNT , Ġtx . getToken Transfer Value (). to Transfer red Amount ( decimals )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SIGN _ TX _ CUR RE NCY , Ġ"${ token Info [" name "]} Ġ(${ token Info [" symbol "] })" Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SIGN _ TX _ TO , Ġtx . getToken Transfer To (). hex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SIGN _ TX _ AMOUNT , Ġtx . getToken Transfer Value (). to Transfer red Amount ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SIGN _ TX _ CUR RE NCY , Ġtx . to ?. hex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SIGN _ TX _ TO , Ġtx . getToken Transfer To (). hex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SIGN _ TX _ AMOUNT , Ġtx . value ?. to Transfer red Amount ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SIGN _ TX _ CUR RE NCY , Ġ" ETH ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SIGN _ TX _ TO , Ġtx . to ?. hex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( SIGN _ TX _ DATA , Ġtx . input . to No Prefix HexString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠRegistry . main Activity . startActivity For Result ( intent , ĠREQ _ WAL LET CONNECT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnop (@ Suppress (" UNUSED _ PARAMETER ") Ġignored : ĠAny ?) Ġ{ Ġ} ĊĊĠĠĠ Ġfun Ġon User Interaction Returned ( result Code : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Action ( data ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession ?. reject Request ( requestId , Ġ- 1 , Ġ" Rejected Ġby Ġuser ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġui Action Ġ= Ġthis :: nop ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconnect ( uri : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession ?. kill () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Ġ= ĠWC Session ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom WC Uri ( uri ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM oshi Payload Adapter ( mos hi ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession Store , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOk Http Transport . Builder ( ok HttpClient , Ġm oshi ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession . Peer Meta ( name Ġ= Ġ" Key card ĠConnect ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession ?. add Callback ( Registry . wallet Connect ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession ?. init () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Response ( key Pair : ĠB IP 3 2 KeyPair ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddr Ġ= Ġkey Pair . to E thereum Address (). to HexString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession ?. approve ( listOf ( addr ), Ġchain ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Response ( signature : ĠRe cover able Signature ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign Action ( signature ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign Action Ġ= ĠRegistry . wallet Connect :: nop ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }