@settlemint/solidity-zeto
Version:
Smart contract set to build Zero Knowledge tokens in SettleMint
1 lines • 135 kB
JSON
{"abi":[{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"__ZetoFungible_init","inputs":[{"name":"_depositVerifier","type":"address","internalType":"contract Groth16Verifier_CheckHashesValue"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"_deposit","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"utxo","type":"uint256","internalType":"uint256"},{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"_withdrawWithNullifiers","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"nullifiers","type":"uint256[]","internalType":"uint256[]"},{"name":"output","type":"uint256","internalType":"uint256"},{"name":"root","type":"uint256","internalType":"uint256"},{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"utxo","type":"uint256","internalType":"uint256"},{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getRoot","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_verifier","type":"address","internalType":"contract Groth16Verifier_AnonEncNullifier"},{"name":"_depositVerifier","type":"address","internalType":"contract Groth16Verifier_CheckHashesValue"},{"name":"_withdrawVerifier","type":"address","internalType":"contract Groth16Verifier_CheckNullifierValue"},{"name":"_batchVerifier","type":"address","internalType":"contract Groth16Verifier_AnonEncNullifierBatch"},{"name":"_batchWithdrawVerifier","type":"address","internalType":"contract Groth16Verifier_CheckNullifierValueBatch"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lockProof","inputs":[{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"delegate","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"utxos","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setERC20","inputs":[{"name":"_erc20","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"nullifiers","type":"uint256[]","internalType":"uint256[]"},{"name":"outputs","type":"uint256[]","internalType":"uint256[]"},{"name":"root","type":"uint256","internalType":"uint256"},{"name":"encryptionNonce","type":"uint256","internalType":"uint256"},{"name":"ecdhPublicKey","type":"uint256[2]","internalType":"uint256[2]"},{"name":"encryptedValues","type":"uint256[]","internalType":"uint256[]"},{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdraw","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"nullifiers","type":"uint256[]","internalType":"uint256[]"},{"name":"output","type":"uint256","internalType":"uint256"},{"name":"root","type":"uint256","internalType":"uint256"},{"name":"proof","type":"tuple","internalType":"struct Commonlib.Proof","components":[{"name":"pA","type":"uint256[2]","internalType":"uint256[2]"},{"name":"pB","type":"uint256[2][2]","internalType":"uint256[2][2]"},{"name":"pC","type":"uint256[2]","internalType":"uint256[2]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UTXOMint","inputs":[{"name":"outputs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"submitter","type":"address","indexed":true,"internalType":"address"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"UTXOTransferWithEncryptedValues","inputs":[{"name":"inputs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"outputs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"encryptionNonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"ecdhPublicKey","type":"uint256[2]","indexed":false,"internalType":"uint256[2]"},{"name":"encryptedValues","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"submitter","type":"address","indexed":true,"internalType":"address"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"IdentityNotRegistered","inputs":[{"name":"addr","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UTXOAlreadyOwned","inputs":[{"name":"utxo","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UTXOAlreadySpent","inputs":[{"name":"utxo","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UTXOArrayTooLarge","inputs":[{"name":"maxAllowed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UTXODuplicate","inputs":[{"name":"utxo","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UTXONotMinted","inputs":[{"name":"utxo","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UTXORootNotFound","inputs":[{"name":"root","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"WithdrawArrayTooLarge","inputs":[{"name":"maxAllowed","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60a0806040523460295730608052612ffd908161002e82396080518181816104870152610f140152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806312c0fed2146101245780634f1ef2861461011f57806352d1902d1461011a5780635ca1e16514610115578063715018a614610110578063732952411461010b5780638bb2513b146101065780638da5cb5b146101015780639b2e8b52146100fc5780639e2a7194146100f75780639fcc50af146100f2578063a576b537146100ed578063ad3cb1cc146100e8578063c29a6fda146100e3578063cc2a9a5b146100de578063f2fde38b146100d95763f756356a146100d4575f80fd5b610e46565b610e19565b610b7c565b610b14565b610a9e565b6109cd565b610923565b610909565b610882565b610830565b6107cd565b61074c565b6105b3565b6104ff565b610460565b6103db565b6101bd565b60031961010091011261013b57600490565b5f80fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc61010091011261013b57604490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c61010091011261013b5760e490565b73ffffffffffffffffffffffffffffffffffffffff81160361013b57565b3461013b5761012060031936011261013b576103216101db36610129565b6102e161010435916101ec8361019f565b61025360c06101fc6101006103af565b83358152926020810135602085015261023f61023260408301803560408801526102268160200190565b35606088015260400190565b8035608087015260200190565b3560a085015201803560c084015260200190565b3560e082015260405161027c8161026e602082019485611e96565b03601f198101835282610387565b51902073ffffffffffffffffffffffffffffffffffffffff6102c26102a8835f525f60205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b16158015610323575b6102d490610e70565b5f525f60205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b506102d461033b6102a8835f525f60205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff16331490506102cb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff8211176103aa57604052565b61035a565b906103bd6040519283610387565b565b67ffffffffffffffff81116103aa57601f01601f191660200190565b604060031936011261013b576004356103f38161019f565b6024359067ffffffffffffffff821161013b573660238301121561013b57816004013590610420826103bf565b9161042e6040519384610387565b808352366024828601011161013b576020815f92602461032197018387013784010152610efb565b5f91031261013b57565b3461013b575f60031936011261013b5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036104d75760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461013b575f60031936011261013b576040517f79f971250000000000000000000000000000000000000000000000000000000081526001600482015260208160248173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af480156105ae5761057b915f9161057f575b506040519081529081906020820190565b0390f35b6105a1915060203d6020116105a7575b6105998183610387565b8101906110a6565b5f61056a565b503d61058f565b6110b5565b3461013b575f60031936011261013b576105cb611ec2565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b67ffffffffffffffff81116103aa5760051b60200190565b9080601f8301121561013b57813561069e8161066f565b926106ac6040519485610387565b81845260208085019260051b82010192831161013b57602001905b8282106106d45750505090565b81358152602091820191016106c7565b61018060031982011261013b576004359160243567ffffffffffffffff811161013b578261071491600401610687565b91604435916101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c60643593011261013b57608490565b3461013b5761032161079a610785610763366106e4565b9261077481979596929397516110c0565b908761077f8361111e565b52611f2e565b959080956107948489846120b2565b50611360565b6123d4565b9181601f8401121561013b5782359167ffffffffffffffff831161013b576020838186019501011161013b57565b3461013b57604060031936011261013b5760043567ffffffffffffffff811161013b576107fe903690600401610687565b6024359067ffffffffffffffff821161013b5761082261032192369060040161079f565b9161082b611ec2565b612534565b3461013b575f60031936011261013b57602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b3461013b5761016060031936011261013b576024356004356108a33661013f565b906101443567ffffffffffffffff811161013b5783926108ca6108d292369060040161079f565b949093611d8d565b60408051906108e18183610387565b60018252601f190136602083013780511561090457610321936020820152612534565b6110f1565b3461013b5761032161091a366106e4565b93929092611360565b3461013b57602060031936011261013b5773ffffffffffffffffffffffffffffffffffffffff6004356109558161019f565b61095d61286e565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060345416176034555f80f35b8060a3121561013b57604051906109a3604083610387565b819060c41161013b576084905b60c482106109bd57505090565b81358152602091820191016109b0565b3461013b5761020060031936011261013b5760043567ffffffffffffffff811161013b576109ff903690600401610687565b60243567ffffffffffffffff811161013b57610a1f903690600401610687565b906044359160643591610a313661098b565b60c43567ffffffffffffffff811161013b57610a51903690600401610687565b610a5a3661016f565b916101e4359567ffffffffffffffff871161013b5761057b97610a84610a8c98369060040161079f565b97909661181f565b60405190151581529081906020820190565b3461013b575f60031936011261013b576040805190610abd8183610387565b6005825260208201917f352e302e300000000000000000000000000000000000000000000000000000008352601f19601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b3461013b57602060031936011261013b5773ffffffffffffffffffffffffffffffffffffffff600435610b468161019f565b610b4e611ec2565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060355416176035555f80f35b3461013b5760c060031936011261013b57600435610b998161019f565b60243590610ba68261019f565b604435610bb28161019f565b606435610bbe8161019f565b60843590610bcb8261019f565b60a43592610bd88461019f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549567ffffffffffffffff610c1e60ff60408a901c16159867ffffffffffffffff1690565b1680159081610e11575b6001149081610e07575b159081610dfe575b50610dd657610cbb9587610cb260017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b610d5b57611a8e565b610cc157005b610d2c7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b610dd1680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b611a8e565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610c3a565b303b159150610c32565b889150610c28565b3461013b57602060031936011261013b57610321600435610e398161019f565b610e41611ec2565b611c61565b3461013b5761014060031936011261013b57610321600435602435610e6a3661013f565b91611d8d565b15610e7757565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f6f6620616c7265616479206c6f636b656420627920616e6f746865722060448201527f70617274790000000000000000000000000000000000000000000000000000006064820152fd5b909173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803014908115611064575b506104d757610f4c611ec2565b604051927f52d1902d00000000000000000000000000000000000000000000000000000000845260208460048173ffffffffffffffffffffffffffffffffffffffff87165afa5f9481611043575b50610fe2577f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff831660045260245b5ffd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8403611016576103bd929350612b38565b7faa1d49a4000000000000000000000000000000000000000000000000000000005f52600484905260245ffd5b61105d91955060203d6020116105a7576105998183610387565b935f610f9a565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f610f3f565b9081602091031261013b575190565b6040513d5f823e3d90fd5b906110ca8261066f565b6110d76040519182610387565b828152601f196110e7829461066f565b0190602036910137565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051156109045760200190565b80518210156109045760209160051b010190565b6040519061114e60e083610387565b60e0368337565b604051906102e06111668184610387565b368337565b604051906102406111668184610387565b604051906109406111668184610387565b6040908151916111668184610387565b9060078110156109045760051b0190565b9081602091031261013b5751801515810361013b5790565b905f905b600282106111d757505050565b60408082818660019537019301910190916111ca565b9094939260409061120d61010094836101e08601998637838501906111c6565b60c0830137015f905b6007821061122357505050565b6020806001928551815201930191019091611216565b1561124057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152fd5b9060178110156109045760051b0190565b909493926040906112cf61010094836103e08601998637838501906111c6565b60c0830137015f905b601782106112e557505050565b60208060019285518152019301910190916112d8565b1561130257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4661696c656420746f207472616e7366657220455243323020746f6b656e73006044820152fd5b9392909160028351115f146115565760178351116115295761138292856127b7565b9061138b611155565b915f5b6017811061150a57505061141a916020916113da6113c160375473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fa0c2a19a00000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016112af565b03915afa80156105ae575f9261143d6114a39260209486916114ed575b50611239565b61145f6113c160355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101929092529093849283919082906044820190565b03925af180156105ae576103bd915f916114be575b506112fb565b6114e0915060203d6020116114e6575b6114d88183610387565b8101906111ae565b5f6114b8565b503d6114ce565b6115049150853d87116114e6576114d88183610387565b5f611437565b806115176001928461112b565b51611522828761129e565b520161138e565b7f71798fb5000000000000000000000000000000000000000000000000000000005f52601760045260245ffd5b61156092856126d8565b9061156961113f565b915f5b600781106116065750506115df9160209161159f6113c160365473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fc894e75700000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016111ed565b03915afa80156105ae575f926116016114a39260209486916114ed5750611239565b61143d565b806116136001928461112b565b5161161e828761119d565b520161156c565b1561162c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964207472616e73616374696f6e2070726f706f73616c000000006044820152fd5b9060128110156109045760051b0190565b909493926040906116bb61010094836103408601998637838501906111c6565b60c0830137015f905b601282106116d157505050565b60208060019285518152019301910190916116c4565b90604a8110156109045760051b0190565b909493926040906117186101009483610a408601998637838501906111c6565b60c0830137015f905b604a821061172e57505050565b6020806001928551815201930191019091611721565b90602080835192838152019201905f5b8181106117615750505090565b8251845260209384019390920191600101611754565b905f905b6002821061178857505050565b602080600192855181520193019101909161177b565b601f8260209493601f1993818652868601375f8582860101520116010190565b9593611801906117f161180e95946117e361181c9b999560e08c5260e08c0190611744565b908a820360208c0152611744565b9360408901526060880190611777565b85820360a0870152611744565b9260c081850391015261179e565b90565b90611831919996939498929599611f2e565b9290946118476118428286896120b2565b611625565b89898660028951118015611a83575b156119bb5761186693878a612a1e565b9061186f61117c565b915f5b604a811061199c5750506118e5916020916118a56113c160395473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937ff035c56300000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016116f8565b03915afa80156105ae576118ff915f916119835750611239565b61190982856123d4565b61191388516110c0565b955f5b895181101561193e578061192c6001928c61112b565b51611937828b61112b565b5201611916565b509091939661197b93959850957f18fd5042f65c100c3eb616143f0e3d2d83f7efe63df2a868b19f0b823c08a21b96604051968796339a886117be565b0390a2600190565b611504915060203d6020116114e6576114d88183610387565b806119a96001928461112b565b516119b482876116e7565b5201611872565b6119c693878a6128c5565b906119cf61116b565b915f5b60128110611a64575050611a4591602091611a056113c160385473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937f4483e72100000000000000000000000000000000000000000000000000000000845260c081019060408101906004860161169b565b03915afa80156105ae57611a5f915f916119835750611239565b6118ff565b80611a716001928461112b565b51611a7c828761168a565b52016119d2565b506002875111611856565b611ab890959395929192611aa061286e565b611aa861286e565b611ab061286e565b610e4161286e565b73__$a9045d4c56ee07180ebebc7f688ffab42f$__92833b1561013b575f604494604051958680927f9e43b81300000000000000000000000000000000000000000000000000000000825260016004830152604060248301525af49384156105ae576103bd9673ffffffffffffffffffffffffffffffffffffffff80948193611c1098611c51575b50611b4961286e565b611b5161286e565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006034541617603455167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655167fffffffffffffffffffffffff0000000000000000000000000000000000000000603754161760375573ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006038541617603855565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006039541617603955565b5f611c5b91610387565b5f611b40565b73ffffffffffffffffffffffffffffffffffffffff168015611d225773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b9060028110156109045760051b0190565b60406103bd94611d81610100949897958361014086019a8637838501906111c6565b60c08301370190611777565b91611e0891602091611d9d61118d565b858152916020830152611dc86113c160345473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937ff5c9d69e00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601611d5f565b03915afa80156105ae575f92611e2a6114a39260209486916114ed5750611239565b611e4c6113c160355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101929092529093849283919082906064820190565b905f825b60088210611eac575050506101000190565b6020806001928551815201930191019091611e9a565b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054163303611f0257565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b9190918051908351600a83118015611fb0575b611f8357600261181c9311908115611f78575b5015611f6c57611f66600a8092612c69565b93612c69565b611f6660028092612c69565b60029150115f611f54565b7f9ebbc98e000000000000000000000000000000000000000000000000000000005f52600a60045260245ffd5b50600a8111611f41565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161201457565b611fba565b908160a091031261013b576040519060a0820182811067ffffffffffffffff8211176103aa57604052805190600382101561013b5760809183526020810151602084015260408101516040840152606081015160608401520151608082015290565b6003111561208557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b906120bf91939293612cd2565b5f9291925b83518110156121c8576120d7818561112b565b51156121c0578015158061219b575b61216257600161211a61211561210e6120ff858961112b565b515f52603360205260405f2090565b5460ff1690565b151590565b14612129576001905b016120c4565b612136610fdf918561112b565b517f41a06d28000000000000000000000000000000000000000000000000000000005f52600452602490565b61216f610fdf918561112b565b517fdd574831000000000000000000000000000000000000000000000000000000005f52600452602490565b506121a6818561112b565b516121b96121b383611fe7565b8661112b565b51146120e6565b600190612123565b50915073__$a9045d4c56ee07180ebebc7f688ffab42f$__905f5b8351811015612323576121f6818561112b565b511561231b57801515806122fc575b6121625761226060a061222161221b848861112b565b51612d8d565b604051809381927fe170cf6e00000000000000000000000000000000000000000000000000000000835260048301919060206040840193600181520152565b0381875af49081156105ae575f916122ce575b505161227e8161207b565b6122878161207b565b612295576001905b016121e3565b6122a2610fdf918561112b565b517f79e1da47000000000000000000000000000000000000000000000000000000005f52600452602490565b6122ef915060a03d81116122f5575b6122e78183610387565b810190612019565b5f612273565b503d6122dd565b50612307818561112b565b516123146121b383611fe7565b5114612205565b60019061228f565b50929150602060405180927f92f5b06c000000000000000000000000000000000000000000000000000000008252818061236c8760048301919060206040840193600181520152565b03915af49081156105ae575f916123b5575b501561238a5750600190565b7f4acd7ab8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6123ce915060203d6020116114e6576114d88183610387565b5f61237e565b9190915f5b815181101561243b57806123ef6001928461112b565b516123fb575b016123d9565b61243661240b6120ff838661112b565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b6123f5565b50505f5b825181101561250a57612452818461112b565b51612460575b60010161243f565b73__$a9045d4c56ee07180ebebc7f688ffab42f$__90612480818561112b565b5161248b828661112b565b51833b1561013b576040517fc1d29f010000000000000000000000000000000000000000000000000000000081526001600482015260248101929092526044820152915f90839060649082905af49182156105ae576001926124f0575b509050612458565b806124fe5f61250493610387565b80610456565b5f6124e8565b509050565b9161252661181c9492604085526040850190611744565b92602081850391015261179e565b9091925f9373__$a9045d4c56ee07180ebebc7f688ffab42f$__945b835181101561266e57612563818561112b565b519081156126655761257960a061222184612d8d565b03818b5af49081156105ae575f91612647575b50516125978161207b565b6125a08161207b565b61261a57863b1561013b576040517fc1d29f01000000000000000000000000000000000000000000000000000000008152600160048201526024810183905260448101929092525f826064818a5af49182156105ae57600192612606575b505b01612550565b806124fe5f61261493610387565b5f6125fe565b7f79e1da47000000000000000000000000000000000000000000000000000000005f52600482905260245ffd5b61265f915060a03d81116122f5576122e78183610387565b5f61258c565b60019150612600565b509093507f7ff08e0ca1fce6b202b83128811e4f6ceda54930aa074cd365bf68f95c20ce1991926126a660405192839233968461250f565b0390a2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146120145760010190565b90926126e460076110c0565b9360019182936126f38761111e565b52825f815b612781575b505061271261270b856126ab565b948761112b565b525f825b612736575b5050508061272b612732926126ab565b508361112b565b5290565b815181101561277c5790828261274d82948461112b565b51612775575f955b61276c60ff612763836126ab565b9816918a61112b565b52019091612716565b8195612755565b61271b565b83518110156127b2578061279683928661112b565b516127aa6127a3896126ab565b988b61112b565b5201816126f8565b6126fd565b90926127c360176110c0565b9360019182936127d28761111e565b52825f815b61283f575b50506127ea61270b856126ab565b525f825b612802575050508061272b612732926126ab565b815181101561277c5790828261281982948461112b565b51612838575f955b61282f60ff612763836126ab565b520190916127ee565b8195612821565b8351811015612869578061285483928661112b565b516128616127a3896126ab565b5201816127d7565b6127dc565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561289d57565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffd5b90949293956128d460126110c0565b945f975f5b600281106129f65750505f5b855181101561291657806128fb6001928861112b565b5161290f6129088c6126ab565b9b8a61112b565b52016128e5565b5091935091945f5b845181101561294f57806129346001928761112b565b516129486129418b6126ab565b9a8961112b565b520161291e565b5090919461296661295f886126ab565b978661112b565b525f5b83518110156129ac578061297f6001928661112b565b516129a5575f975b61299e60ff612995836126ab565b9a16918861112b565b5201612969565b8197612987565b509150925f5b82518110156129e357806129c86001928561112b565b516129dc6129d5896126ab565b988761112b565b52016129b2565b5093612732915092919261272b816126ab565b80612a0360019284611d4e565b51612a17612a108d6126ab565b9c8b61112b565b52016128d9565b9094929395612a2d604a6110c0565b945f975f5b60028110612b175750505f5b8551811015612a685780612a546001928861112b565b51612a616129088c6126ab565b5201612a3e565b5091935091945f5b8451811015612a9a5780612a866001928761112b565b51612a936129418b6126ab565b5201612a70565b50909194612aaa61295f886126ab565b525f5b8351811015612ae75780612ac36001928661112b565b51612ae0575f975b612ad960ff612995836126ab565b5201612aad565b8197612acb565b509150925f5b82518110156129e35780612b036001928561112b565b51612b106129d5896126ab565b5201612aed565b80612b2460019284611d4e565b51612b31612a108d6126ab565b5201612a32565b90813b15612c275773ffffffffffffffffffffffffffffffffffffffff8216807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115612bf657612bf391612e36565b50565b505034612bff57565b7fb398979f000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff827f4c9c8ce3000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9181835114612cce57612c7b826110c0565b905f5b8451811015612ca65780612c946001928761112b565b51612c9f828661112b565b5201612c7e565b5092919091515b818110612cb957505090565b805f612cc76001938661112b565b5201612cad565b9050565b9190612cde83516110c0565b90612ce981516110c0565b905f5b8551811015612d145780612d026001928861112b565b51612d0d828761112b565b5201612cec565b5091929093505f5b8251811015612d445780612d326001928561112b565b51612d3d828861112b565b5201612d1c565b50919050612d5181612f0f565b50612d5b83612f0f565b509190565b919060608301925f905b60038210612d7757505050565b6020806001928551815201930191019091612d6a565b604051606081019080821067ffffffffffffffff8311176103aa57612df3926020926040528082528282015260016040820152604051809381927f25cc70e800000000000000000000000000000000000000000000000000000000835260048301612d60565b038173__$abc2523fb3bac9ceee4baf18a48b86000d$__5af49081156105ae575f91612e1d575090565b61181c915060203d6020116105a7576105998183610387565b5f8061181c93602081519101845af43d15612e72573d91612e56836103bf565b92612e646040519485610387565b83523d5f602085013e612e76565b6060915b90612eb35750805115612e8b57805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b81511580612f06575b612ec4575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15612ebc565b61181c60016020835160051b840101602084015b9190604083820310612fc25782519282818095602084015b858110612f615750508251815184528152612f5592612f23565b60206103bd9301612f23565b91509150805185600114612f9c577f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffd5b8211612faf575b60200184918691612f3b565b6020909501805186518252865294612fa3565b50505056fea26469706673582212202bc3fd8f6df4209e6176167a50e68af00285f6cb9445682f63d96118652e8c8f64736f6c634300081b0033","sourceMap":"2663:7541:38:-:0;;;;;;;1171:4:70;1163:13;;2663:7541:38;;;;;;1163:13:70;2663:7541:38;;;;;;;;;;;;;;","linkReferences":{"node_modules/@iden3/contracts/lib/Poseidon.sol":{"PoseidonUnit3L":[{"start":11813,"length":20}]},"node_modules/@iden3/contracts/lib/SmtLib.sol":{"SmtLib":[{"start":1394,"length":20},{"start":6888,"length":20},{"start":8699,"length":20},{"start":9360,"length":20},{"start":9577,"length":20}]}}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806312c0fed2146101245780634f1ef2861461011f57806352d1902d1461011a5780635ca1e16514610115578063715018a614610110578063732952411461010b5780638bb2513b146101065780638da5cb5b146101015780639b2e8b52146100fc5780639e2a7194146100f75780639fcc50af146100f2578063a576b537146100ed578063ad3cb1cc146100e8578063c29a6fda146100e3578063cc2a9a5b146100de578063f2fde38b146100d95763f756356a146100d4575f80fd5b610e46565b610e19565b610b7c565b610b14565b610a9e565b6109cd565b610923565b610909565b610882565b610830565b6107cd565b61074c565b6105b3565b6104ff565b610460565b6103db565b6101bd565b60031961010091011261013b57600490565b5f80fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc61010091011261013b57604490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c61010091011261013b5760e490565b73ffffffffffffffffffffffffffffffffffffffff81160361013b57565b3461013b5761012060031936011261013b576103216101db36610129565b6102e161010435916101ec8361019f565b61025360c06101fc6101006103af565b83358152926020810135602085015261023f61023260408301803560408801526102268160200190565b35606088015260400190565b8035608087015260200190565b3560a085015201803560c084015260200190565b3560e082015260405161027c8161026e602082019485611e96565b03601f198101835282610387565b51902073ffffffffffffffffffffffffffffffffffffffff6102c26102a8835f525f60205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b16158015610323575b6102d490610e70565b5f525f60205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b506102d461033b6102a8835f525f60205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff16331490506102cb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff8211176103aa57604052565b61035a565b906103bd6040519283610387565b565b67ffffffffffffffff81116103aa57601f01601f191660200190565b604060031936011261013b576004356103f38161019f565b6024359067ffffffffffffffff821161013b573660238301121561013b57816004013590610420826103bf565b9161042e6040519384610387565b808352366024828601011161013b576020815f92602461032197018387013784010152610efb565b5f91031261013b57565b3461013b575f60031936011261013b5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036104d75760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461013b575f60031936011261013b576040517f79f971250000000000000000000000000000000000000000000000000000000081526001600482015260208160248173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af480156105ae5761057b915f9161057f575b506040519081529081906020820190565b0390f35b6105a1915060203d6020116105a7575b6105998183610387565b8101906110a6565b5f61056a565b503d61058f565b6110b5565b3461013b575f60031936011261013b576105cb611ec2565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b67ffffffffffffffff81116103aa5760051b60200190565b9080601f8301121561013b57813561069e8161066f565b926106ac6040519485610387565b81845260208085019260051b82010192831161013b57602001905b8282106106d45750505090565b81358152602091820191016106c7565b61018060031982011261013b576004359160243567ffffffffffffffff811161013b578261071491600401610687565b91604435916101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c60643593011261013b57608490565b3461013b5761032161079a610785610763366106e4565b9261077481979596929397516110c0565b908761077f8361111e565b52611f2e565b959080956107948489846120b2565b50611360565b6123d4565b9181601f8401121561013b5782359167ffffffffffffffff831161013b576020838186019501011161013b57565b3461013b57604060031936011261013b5760043567ffffffffffffffff811161013b576107fe903690600401610687565b6024359067ffffffffffffffff821161013b5761082261032192369060040161079f565b9161082b611ec2565b612534565b3461013b575f60031936011261013b57602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b3461013b5761016060031936011261013b576024356004356108a33661013f565b906101443567ffffffffffffffff811161013b5783926108ca6108d292369060040161079f565b949093611d8d565b60408051906108e18183610387565b60018252601f190136602083013780511561090457610321936020820152612534565b6110f1565b3461013b5761032161091a366106e4565b93929092611360565b3461013b57602060031936011261013b5773ffffffffffffffffffffffffffffffffffffffff6004356109558161019f565b61095d61286e565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060345416176034555f80f35b8060a3121561013b57604051906109a3604083610387565b819060c41161013b576084905b60c482106109bd57505090565b81358152602091820191016109b0565b3461013b5761020060031936011261013b5760043567ffffffffffffffff811161013b576109ff903690600401610687565b60243567ffffffffffffffff811161013b57610a1f903690600401610687565b906044359160643591610a313661098b565b60c43567ffffffffffffffff811161013b57610a51903690600401610687565b610a5a3661016f565b916101e4359567ffffffffffffffff871161013b5761057b97610a84610a8c98369060040161079f565b97909661181f565b60405190151581529081906020820190565b3461013b575f60031936011261013b576040805190610abd8183610387565b6005825260208201917f352e302e300000000000000000000000000000000000000000000000000000008352601f19601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b3461013b57602060031936011261013b5773ffffffffffffffffffffffffffffffffffffffff600435610b468161019f565b610b4e611ec2565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060355416176035555f80f35b3461013b5760c060031936011261013b57600435610b998161019f565b60243590610ba68261019f565b604435610bb28161019f565b606435610bbe8161019f565b60843590610bcb8261019f565b60a43592610bd88461019f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549567ffffffffffffffff610c1e60ff60408a901c16159867ffffffffffffffff1690565b1680159081610e11575b6001149081610e07575b159081610dfe575b50610dd657610cbb9587610cb260017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b610d5b57611a8e565b610cc157005b610d2c7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b610dd1680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b611a8e565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610c3a565b303b159150610c32565b889150610c28565b3461013b57602060031936011261013b57610321600435610e398161019f565b610e41611ec2565b611c61565b3461013b5761014060031936011261013b57610321600435602435610e6a3661013f565b91611d8d565b15610e7757565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f6f6620616c7265616479206c6f636b656420627920616e6f746865722060448201527f70617274790000000000000000000000000000000000000000000000000000006064820152fd5b909173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803014908115611064575b506104d757610f4c611ec2565b604051927f52d1902d00000000000000000000000000000000000000000000000000000000845260208460048173ffffffffffffffffffffffffffffffffffffffff87165afa5f9481611043575b50610fe2577f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff831660045260245b5ffd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8403611016576103bd929350612b38565b7faa1d49a4000000000000000000000000000000000000000000000000000000005f52600484905260245ffd5b61105d91955060203d6020116105a7576105998183610387565b935f610f9a565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f610f3f565b9081602091031261013b575190565b6040513d5f823e3d90fd5b906110ca8261066f565b6110d76040519182610387565b828152601f196110e7829461066f565b0190602036910137565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051156109045760200190565b80518210156109045760209160051b010190565b6040519061114e60e083610387565b60e0368337565b604051906102e06111668184610387565b368337565b604051906102406111668184610387565b604051906109406111668184610387565b6040908151916111668184610387565b9060078110156109045760051b0190565b9081602091031261013b5751801515810361013b5790565b905f905b600282106111d757505050565b60408082818660019537019301910190916111ca565b9094939260409061120d61010094836101e08601998637838501906111c6565b60c0830137015f905b6007821061122357505050565b6020806001928551815201930191019091611216565b1561124057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152fd5b9060178110156109045760051b0190565b909493926040906112cf61010094836103e08601998637838501906111c6565b60c0830137015f905b601782106112e557505050565b60208060019285518152019301910190916112d8565b1561130257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4661696c656420746f207472616e7366657220455243323020746f6b656e73006044820152fd5b9392909160028351115f146115565760178351116115295761138292856127b7565b9061138b611155565b915f5b6017811061150a57505061141a916020916113da6113c160375473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fa0c2a19a00000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016112af565b03915afa80156105ae575f9261143d6114a39260209486916114ed575b50611239565b61145f6113c160355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101929092529093849283919082906044820190565b03925af180156105ae576103bd915f916114be575b506112fb565b6114e0915060203d6020116114e6575b6114d88183610387565b8101906111ae565b5f6114b8565b503d6114ce565b6115049150853d87116114e6576114d88183610387565b5f611437565b806115176001928461112b565b51611522828761129e565b520161138e565b7f71798fb5000000000000000000000000000000000000000000000000000000005f52601760045260245ffd5b61156092856126d8565b9061156961113f565b915f5b600781106116065750506115df9160209161159f6113c160365473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fc894e75700000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016111ed565b03915afa80156105ae575f926116016114a39260209486916114ed5750611239565b61143d565b806116136001928461112b565b5161161e828761119d565b520161156c565b1561162c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964207472616e73616374696f6e2070726f706f73616c000000006044820152fd5b9060128110156109045760051b0190565b909493926040906116bb61010094836103408601998637838501906111c6565b60c0830137015f905b601282106116d157505050565b60208060019285518152019301910190916116c4565b90604a8110156109045760051b0190565b909493926040906117186101009483610a408601998637838501906111c6565b60c0830137015f905b604a821061172e57505050565b6020806001928551815201930191019091611721565b90602080835192838152019201905f5b8181106117615750505090565b8251845260209384019390920191600101611754565b905f905b6002821061178857505050565b602080600192855181520193019101909161177b565b601f8260209493601f1993818652868601375f8582860101520116010190565b9593611801906117f161180e95946117e361181c9b999560e08c5260e08c0190611744565b908a820360208c0152611744565b9360408901526060880190611777565b85820360a0870152611744565b9260c081850391015261179e565b90565b90611831919996939498929599611f2e565b9290946118476118428286896120b2565b611625565b89898660028951118015611a83575b156119bb5761186693878a612a1e565b9061186f61117c565b915f5b604a811061199c5750506118e5916020916118a56113c160395473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937ff035c56300000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016116f8565b03915afa80156105ae576118ff915f916119835750611239565b61190982856123d4565b61191388516110c0565b955f5b895181101561193e578061192c6001928c61112b565b51611937828b61112b565b5201611916565b509091939661197b93959850957f18fd5042f65c100c3eb616143f0e3d2d83f7efe63df2a868b19f0b823c08a21b96604051968796339a886117be565b0390a2600190565b611504915060203d6020116114e6576114d88183610387565b806119a96001928461112b565b516119b482876116e7565b5201611872565b6119c693878a6128c5565b906119cf61116b565b915f5b60128110611a64575050611a4591602091611a056113c160385473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937f4483e72100000000000000000000000000000000000000000000000000000000845260c081019060408101906004860161169b565b03915afa80156105ae57611a5f915f916119835750611239565b6118ff565b80611a716001928461112b565b51611a7c828761168a565b52016119d2565b506002875111611856565b611ab890959395929192611aa061286e565b611aa861286e565b611ab061286e565b610e4161286e565b73__$a9045d4c56ee07180ebebc7f688ffab42f$__92833b1561013b575f604494604051958680927f9e43b81300000000000000000000000000000000000000000000000000000000825260016004830152604060248301525af49384156105ae576103bd9673ffffffffffffffffffffffffffffffffffffffff80948193611c1098611c51575b50611b4961286e565b611b5161286e565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006034541617603455167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655167fffffffffffffffffffffffff0000000000000000000000000000000000000000603754161760375573ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006038541617603855565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006039541617603955565b5f611c5b91610387565b5f611b40565b73ffffffffffffffffffffffffffffffffffffffff168015611d225773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b9060028110156109045760051b0190565b60406103bd94611d81610100949897958361014086019a8637838501906111c6565b60c08301370190611777565b91611e0891602091611d9d61118d565b858152916020830152611dc86113c160345473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937ff5c9d69e00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601611d5f565b03915afa80156105ae575f92611e2a6114a39260209486916114ed5750611239565b611e4c6113c160355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810