UNPKG

@settlemint/solidity-zeto

Version:

Smart contract set to build Zero Knowledge tokens in SettleMint

1 lines 147 kB
{"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":"getIdentitiesRoot","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"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_AnonEncNullifierKyc"},{"name":"_depositVerifier","type":"address","internalType":"contract Groth16Verifier_CheckHashesValue"},{"name":"_withdrawVerifier","type":"address","internalType":"contract Groth16Verifier_CheckNullifierValue"},{"name":"_batchVerifier","type":"address","internalType":"contract Groth16Verifier_AnonEncNullifierKycBatch"},{"name":"_batchWithdrawVerifier","type":"address","internalType":"contract Groth16Verifier_CheckNullifierValueBatch"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isRegistered","inputs":[{"name":"publicKey","type":"uint256[2]","internalType":"uint256[2]"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"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":"register","inputs":[{"name":"publicKey","type":"uint256[2]","internalType":"uint256[2]"}],"outputs":[],"stateMutability":"nonpayable"},{"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":"IdentityRegistered","inputs":[{"name":"publicKey","type":"uint256[2]","indexed":false,"internalType":"uint256[2]"}],"anonymous":false},{"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":"AlreadyRegistered","inputs":[{"name":"","type":"uint256[2]","internalType":"uint256[2]"}]},{"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":"0x60a08060405234602957306080526135cb908161002e823960805181818161091e015261146c0152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063092a18bc1461015457806312c0fed21461014f5780632e6ea9941461014a5780633442af5c146101455780634f1ef2861461014057806352d1902d1461013b5780635ca1e16514610136578063715018a614610131578063732952411461012c5780638bb2513b146101275780638da5cb5b146101225780639b2e8b521461011d5780639e2a7194146101185780639fcc50af14610113578063a576b5371461010e578063ad3cb1cc14610109578063c29a6fda14610104578063cc2a9a5b146100ff578063f2fde38b146100fa5763f756356a146100f5575f80fd5b611274565b611247565b610fa6565b610f3e565b610ec8565b610e09565b610da1565b610d87565b610d00565b610cae565b610c4b565b610bca565b610a31565b610996565b6108f7565b61087c565b6106ae565b61068c565b6104e5565b610246565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff8211176101a957604052565b610159565b906101bc6040519283610186565b565b806023121561020057604051906101d6604083610186565b8190604411610200576004905b604482106101f057505090565b81358152602091820191016101e3565b5f80fd5b8060a31215610200576040519061021c604083610186565b819060c411610200576084905b60c4821061023657505090565b8135815260209182019101610229565b34610200576040600319360112610200576102986020610265366101be565b604051809381927f29a5f2f6000000000000000000000000000000000000000000000000000000008352600483016123b1565b038173__$0b40bab74903eb2328320c00ca3daa3e88$__5af490811561040457610313916020915f91610438575b506102d160606101ae565b908082528282015260016040820152604051809381927f25cc70e8000000000000000000000000000000000000000000000000000000008352600483016123de565b038173__$abc2523fb3bac9ceee4baf18a48b86000d$__5af4908115610404576103819160a0915f91610409575b50604051809381927fe170cf6e00000000000000000000000000000000000000000000000000000000835260048301919060206040840193603881520152565b038173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af48015610404576103d1915f916103d5575b50516103b68161130b565b6103bf8161130b565b60405190151581529081906020820190565b0390f35b6103f7915060a03d60a0116103fd575b6103ef8183610186565b81019061129e565b5f6103ab565b503d6103e5565b611300565b61042b915060203d602011610431575b6104238183610186565b8101906113cd565b5f610341565b503d610419565b61044f9150823d8411610431576104238183610186565b5f6102c6565b60031961010091011261020057600490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc61010091011261020057604490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c6101009101126102005760e490565b73ffffffffffffffffffffffffffffffffffffffff81160361020057565b34610200576101206003193601126102005761064961050336610455565b6106096101043591610514836104c7565b61057b60c06105246101006101ae565b83358152926020810135602085015261056761055a604083018035604088015261054e8160200190565b35606088015260400190565b8035608087015260200190565b3560a085015201803560c084015260200190565b3560e08201526040516105a48161059660208201948561240b565b03601f198101835282610186565b51902073ffffffffffffffffffffffffffffffffffffffff6105ea6105d0835f525f60205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b1615801561064b575b6105fc90611342565b5f525f60205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b506105fc6106636105d0835f525f60205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff16331490506105f3565b5f91031261020057565b34610200575f6003193601126102005760206106a66113dc565b604051908152f35b34610200576040600319360112610200576106c8366101be565b6106d0612437565b6106d9816130e9565b9073__$a9045d4c56ee07180ebebc7f688ffab42f$__6040517fe170cf6e00000000000000000000000000000000000000000000000000000000815260a081806107328760048301919060206040840193603881520152565b0381855af4908115610404575f91610841575b50516107508161130b565b6107598161130b565b61080957803b15610200576040517fc1d29f01000000000000000000000000000000000000000000000000000000008152603860048201526024810184905260448101939093525f90839060649082905af4908115610404577fa45339511611c62ec2e52472de1a3e6a561aa425af3ba3b39473e928be537edd926107ea926107ef575b50604051918291826124a3565b0390a1005b806107fd5f61080393610186565b80610682565b5f6107dd565b6040517f7d714ba90000000000000000000000000000000000000000000000000000000081528061083d84600483016124a3565b0390fd5b61085a915060a03d60a0116103fd576103ef8183610186565b5f610745565b67ffffffffffffffff81116101a957601f01601f191660200190565b604060031936011261020057600435610894816104c7565b6024359067ffffffffffffffff82116102005736602383011215610200578160040135906108c182610860565b916108cf6040519384610186565b8083523660248286010111610200576020815f92602461064997018387013784010152611453565b34610200575f6003193601126102005773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361096e5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610200575f600319360112610200576040517f79f971250000000000000000000000000000000000000000000000000000000081526001600482015260208160248173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af48015610404576103d1915f91610a12575b506040519081529081906020820190565b610a2b915060203d602011610431576104238183610186565b5f610a01565b34610200575f60031936011261020057610a49612437565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b67ffffffffffffffff81116101a95760051b60200190565b9080601f83011215610200578135610b1c81610aed565b92610b2a6040519485610186565b81845260208085019260051b82010192831161020057602001905b828210610b525750505090565b8135815260209182019101610b45565b610180600319820112610200576004359160243567ffffffffffffffff81116102005782610b9291600401610b05565b91604435916101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c60643593011261020057608490565b3461020057610649610c18610c03610be136610b62565b92610bf281979596929397516115fe565b9087610bfd8361165c565b526124b3565b95908095610c1284898461259e565b5061189e565b6128b0565b9181601f840112156102005782359167ffffffffffffffff8311610200576020838186019501011161020057565b346102005760406003193601126102005760043567ffffffffffffffff811161020057610c7c903690600401610b05565b6024359067ffffffffffffffff821161020057610ca0610649923690600401610c1d565b91610ca9612437565b612a0a565b34610200575f60031936011261020057602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b346102005761016060031936011261020057602435600435610d2136610467565b906101443567ffffffffffffffff8111610200578392610d48610d50923690600401610c1d565b9490936122a8565b6040805190610d5f8183610186565b60018252601f1901366020830137805115610d8257610649936020820152612a0a565b61162f565b3461020057610649610d9836610b62565b9392909261189e565b346102005760206003193601126102005773ffffffffffffffffffffffffffffffffffffffff600435610dd3816104c7565b610ddb612d44565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060345416176034555f80f35b34610200576102006003193601126102005760043567ffffffffffffffff811161020057610e3b903690600401610b05565b60243567ffffffffffffffff811161020057610e5b903690600401610b05565b906044359160643591610e6d36610204565b60c43567ffffffffffffffff811161020057610e8d903690600401610b05565b610e9636610497565b916101e4359567ffffffffffffffff8711610200576103d197610ec06103bf983690600401610c1d565b979096611d5a565b34610200575f600319360112610200576040805190610ee78183610186565b6005825260208201917f352e302e300000000000000000000000000000000000000000000000000000008352601f19601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b346102005760206003193601126102005773ffffffffffffffffffffffffffffffffffffffff600435610f70816104c7565b610f78612437565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060355416176035555f80f35b346102005760c060031936011261020057600435610fc3816104c7565b60243590610fd0826104c7565b604435610fdc816104c7565b606435610fe8816104c7565b60843590610ff5826104c7565b60a43592611002846104c7565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549567ffffffffffffffff61104860ff60408a901c16159867ffffffffffffffff1690565b168015908161123f575b6001149081611235575b15908161122c575b50611204576110e595876110dc60017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b61118957611fc9565b6110eb57005b6111567fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29080602081016107ea565b6111ff680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b611fc9565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f611064565b303b15915061105c565b889150611052565b3461020057602060031936011261020057610649600435611267816104c7565b61126f612437565b61217c565b34610200576101406003193601126102005761064960043560243561129836610467565b916122a8565b908160a0910312610200576040519060a0820182811067ffffffffffffffff8211176101a95760405280519060038210156102005760809183526020810151602084015260408101516040840152606081015160608401520151608082015290565b6040513d5f823e3d90fd5b6003111561131557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b1561134957565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f6f6620616c7265616479206c6f636b656420627920616e6f746865722060448201527f70617274790000000000000000000000000000000000000000000000000000006064820152fd5b90816020910312610200575190565b6040517f79f971250000000000000000000000000000000000000000000000000000000081526038600482015260208160248173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af4908115610404575f91611437575090565b611450915060203d602011610431576104238183610186565b90565b909173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168030149081156115bc575b5061096e576114a4612437565b604051927f52d1902d00000000000000000000000000000000000000000000000000000000845260208460048173ffffffffffffffffffffffffffffffffffffffff87165afa5f948161159b575b5061153a577f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff831660045260245b5ffd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc840361156e576101bc92935061314c565b7faa1d49a4000000000000000000000000000000000000000000000000000000005f52600484905260245ffd5b6115b591955060203d602011610431576104238183610186565b935f6114f2565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f611497565b9061160882610aed565b6116156040519182610186565b828152601f196116258294610aed565b0190602036910137565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805115610d825760200190565b8051821015610d825760209160051b010190565b6040519061168c60e083610186565b60e0368337565b604051906102e06116a48184610186565b368337565b604051906102606116a48184610186565b604051906109606116a48184610186565b6040908151916116a48184610186565b906007811015610d825760051b0190565b90816020910312610200575180151581036102005790565b905f905b6002821061171557505050565b6040808281866001953701930191019091611708565b9094939260409061174b61010094836101e0860199863783850190611704565b60c0830137015f905b6007821061176157505050565b6020806001928551815201930191019091611754565b1561177e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152fd5b906017811015610d825760051b0190565b9094939260409061180d61010094836103e0860199863783850190611704565b60c0830137015f905b6017821061182357505050565b6020806001928551815201930191019091611816565b1561184057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4661696c656420746f207472616e7366657220455243323020746f6b656e73006044820152fd5b9392909160028351115f14611a94576017835111611a67576118c09285612c8d565b906118c9611693565b915f5b60178110611a48575050611958916020916119186118ff60375473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fa0c2a19a00000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016117ed565b03915afa8015610404575f9261197b6119e1926020948691611a2b575b50611777565b61199d6118ff60355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101929092529093849283919082906044820190565b03925af18015610404576101bc915f916119fc575b50611839565b611a1e915060203d602011611a24575b611a168183610186565b8101906116ec565b5f6119f6565b503d611a0c565b611a429150853d8711611a2457611a168183610186565b5f611975565b80611a5560019284611669565b51611a6082876117dc565b52016118cc565b7f71798fb5000000000000000000000000000000000000000000000000000000005f52601760045260245ffd5b611a9e9285612bae565b90611aa761167d565b915f5b60078110611b44575050611b1d91602091611add6118ff60365473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fc894e75700000000000000000000000000000000000000000000000000000000845260c081019060408101906004860161172b565b03915afa8015610404575f92611b3f6119e1926020948691611a2b5750611777565b61197b565b80611b5160019284611669565b51611b5c82876116db565b5201611aaa565b15611b6a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964207472616e73616374696f6e2070726f706f73616c000000006044820152fd5b906013811015610d825760051b0190565b90949392604090611bf96101009483610360860199863783850190611704565b60c0830137015f905b60138210611c0f57505050565b6020806001928551815201930191019091611c02565b90604b811015610d825760051b0190565b90949392604090611c566101009483610a60860199863783850190611704565b60c0830137015f905b604b8210611c6c57505050565b6020806001928551815201930191019091611c5f565b90602080835192838152019201905f5b818110611c9f5750505090565b8251845260209384019390920191600101611c92565b905f905b60028210611cc657505050565b6020806001928551815201930191019091611cb9565b601f8260209493601f1993818652868601375f8582860101520116010190565b9593611d3f90611d2f611d4c9594611d216114509b999560e08c5260e08c0190611c82565b908a820360208c0152611c82565b9360408901526060880190611cb5565b85820360a0870152611c82565b9260c0818503910152611cdc565b90611d6c9199969394989295996124b3565b929094611d82611d7d82868961259e565b611b63565b89898660028951118015611fbe575b15611ef657611da193878a612f10565b90611daa6116ba565b915f5b604b8110611ed7575050611e2091602091611de06118ff606b5473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937ff49c1ff400000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601611c36565b03915afa801561040457611e3a915f91611ebe5750611777565b611e4482856128b0565b611e4e88516115fe565b955f5b8951811015611e795780611e676001928c611669565b51611e72828b611669565b5201611e51565b5090919396611eb693959850957f18fd5042f65c100c3eb616143f0e3d2d83f7efe63df2a868b19f0b823c08a21b96604051968796339a88611cfc565b0390a2600190565b611a42915060203d602011611a2457611a168183610186565b80611ee460019284611669565b51611eef8287611c25565b5201611dad565b611f0193878a612d9b565b90611f0a6116a9565b915f5b60138110611f9f575050611f8091602091611f406118ff606a5473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937ff3f22e7200000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601611bd9565b03915afa801561040457611f9a915f91611ebe5750611777565b611e3a565b80611fac60019284611669565b51611fb78287611bc8565b5201611f0d565b506002875111611d91565b949291909394611fd7612d44565b73__$a9045d4c56ee07180ebebc7f688ffab42f$__803b1561020057604051917f9e43b8130000000000000000000000000000000000000000000000000000000083525f9260386004820152604060248201525f81604481865af4801561040457612165575b506120629061204a612d44565b612052612d44565b61205a612d44565b61126f612d44565b803b156121615781604491604051928380927f9e43b81300000000000000000000000000000000000000000000000000000000825260016004830152604060248301525af4801561040457612149575b5050612108926101bc9594926120c79261303f565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000606a541617606a55565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000606b541617606b55565b612154828092610186565b61215e57806120b2565b80fd5b5080fd5b6121729193505f90610186565b5f9161206261203d565b73ffffffffffffffffffffffffffffffffffffffff16801561223d5773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b906002811015610d825760051b0190565b60406101bc9461229c610100949897958361014086019a863783850190611704565b60c08301370190611cb5565b91612323916020916122b86116cb565b8581529160208301526122e36118ff60345473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937ff5c9d69e00000000000000000000000000000000000000000000000000000000845260c081019060408101906004860161227a565b03915afa8015610404575f926123456119e1926020948691611a2b5750611777565b6123676118ff60355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101929092529093849283919082906064820190565b919060408301925f905b600282106123c857505050565b60208060019285518152019301910190916123bb565b919060608301925f905b600382106123f557505050565b60208060019285518152019301910190916123e8565b905f825b60088210612421575050506101000190565b602080600192855181520193019101909161240f565b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416330361247757565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b6040810192916101bc9190611cb5565b9190918051908351600a83118015612535575b61250857600261145093119081156124fd575b50156124f1576124eb600a809261327d565b9361327d565b6124eb6002809261327d565b60029150115f6124d9565b7f9ebbc98e000000000000000000000000000000000000000000000000000000005f52600a60045260245ffd5b50600a81116124c6565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820191821161259957565b61253f565b906125ab919392936132e6565b5f9291925b83518110156126b4576125c38185611669565b51156126ac5780151580612687575b61264e5760016126066126016125fa6125eb8589611669565b515f52603360205260405f2090565b5460ff1690565b151590565b14612615576001905b016125b0565b6126226115379185611669565b517f41a06d28000000000000000000000000000000000000000000000000000000005f52600452602490565b61265b6115379185611669565b517fdd574831000000000000000000000000000000000000000000000000000000005f52600452602490565b506126928185611669565b516126a561269f8361256c565b86611669565b51146125d2565b60019061260f565b50915073__$a9045d4c56ee07180ebebc7f688ffab42f$__905f5b83518110156127ff576126e28185611669565b51156127f757801515806127d8575b61264e5761274c60a061270d6127078488611669565b51613374565b604051809381927fe170cf6e00000000000000000000000000000000000000000000000000000000835260048301919060206040840193600181520152565b0381875af4908115610404575f916127ba575b505161276a8161130b565b6127738161130b565b612781576001905b016126cf565b61278e6115379185611669565b517f79e1da47000000000000000000000000000000000000000000000000000000005f52600452602490565b6127d2915060a03d81116103fd576103ef8183610186565b5f61275f565b506127e38185611669565b516127f061269f8361256c565b51146126f1565b60019061277b565b50929150602060405180927f92f5b06c00000000000000000000000000000000000000000000000000000000825281806128488760048301919060206040840193600181520152565b03915af4908115610404575f91612891575b50156128665750600190565b7f4acd7ab8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6128aa915060203d602011611a2457611a168183610186565b5f61285a565b9190915f5b815181101561291757806128cb60019284611669565b516128d7575b016128b5565b6129126128e76125eb8386611669565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b6128d1565b50505f5b82518110156129e05761292e8184611669565b5161293c575b60010161291b565b73__$a9045d4c56ee07180ebebc7f688ffab42f$__9061295c8185611669565b516129678286611669565b51833b15610200576040517fc1d29f010000000000000000000000000000000000000000000000000000000081526001600482015260248101929092526044820152915f90839060649082905af4918215610404576001926129cc575b509050612934565b806107fd5f6129da93610186565b5f6129c4565b509050565b916129fc6114509492604085526040850190611c82565b926020818503910152611cdc565b9091925f9373__$a9045d4c56ee07180ebebc7f688ffab42f$__945b8351811015612b4457612a398185611669565b51908115612b3b57612a4f60a061270d84613374565b03818b5af4908115610404575f91612b1d575b5051612a6d8161130b565b612a768161130b565b612af057863b15610200576040517fc1d29f01000000000000000000000000000000000000000000000000000000008152600160048201526024810183905260448101929092525f826064818a5af491821561040457600192612adc575b505b01612a26565b806107fd5f612aea93610186565b5f612ad4565b7f79e1da47000000000000000000000000000000000000000000000000000000005f52600482905260245ffd5b612b35915060a03d81116103fd576103ef8183610186565b5f612a62565b60019150612ad6565b509093507f7ff08e0ca1fce6b202b83128811e4f6ceda54930aa074cd365bf68f95c20ce199192612b7c6040519283923396846129e5565b0390a2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146125995760010190565b9092612bba60076115fe565b936001918293612bc98761165c565b52825f815b612c57575b5050612be8612be185612b81565b9487611669565b525f825b612c0c575b50505080612c01612c0892612b81565b5083611669565b5290565b8151811015612c5257908282612c23829484611669565b51612c4b575f955b612c4260ff612c3983612b81565b9816918a611669565b52019091612bec565b8195612c2b565b612bf1565b8351811015612c885780612c6c839286611669565b51612c80612c7989612b81565b988b611669565b520181612bce565b612bd3565b9092612c9960176115fe565b936001918293612ca88761165c565b52825f815b612d15575b5050612cc0612be185612b81565b525f825b612cd85750505080612c01612c0892612b81565b8151811015612c5257908282612cef829484611669565b51612d0e575f955b612d0560ff612c3983612b81565b52019091612cc4565b8195612cf7565b8351811015612d3f5780612d2a839286611669565b51612d37612c7989612b81565b520181612cad565b612cb2565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615612d7357565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffd5b9094929395612daa60136115fe565b945f975f5b60028110612ee85750505f5b8551811015612dec5780612dd160019288611669565b51612de5612dde8c612b81565b9b8a611669565b5201612dbb565b5091935091945f5b8451811015612e255780612e0a60019287611669565b51612e1e612e178b612b81565b9a89611669565b5201612df4565b50909194612e3c612e3588612b81565b9786611669565b525f5b8351811015612e825780612e5560019286611669565b51612e7b575f975b612e7460ff612e6b83612b81565b9a169188611669565b5201612e3f565b8197612e5d565b50915092612e8e6113dc565b612ea1612e9a87612b81565b9685611669565b525f5b8251811015612ed55780612eba60019285611669565b51612ece612ec789612b81565b9887611669565b5201612ea4565b5093612c089150929192612c0181612b81565b80612ef560019284612269565b51612f09612f028d612b81565b9c8b611669565b5201612daf565b9094929395612f1f604b6115fe565b945f975f5b6002811061301e5750505f5b8551811015612f5a5780612f4660019288611669565b51612f53612dde8c612b81565b5201612f30565b5091935091945f5b8451811015612f8c5780612f7860019287611669565b51612f85612e178b612b81565b5201612f62565b50909194612f9c612e3588612b81565b525f5b8351811015612fd95780612fb560019286611669565b51612fd2575f975b612fcb60ff612e6b83612b81565b5201612f9f565b8197612fbd565b50915092612fe56113dc565b612ff1612e9a87612b81565b525f5b8251811015612ed5578061300a60019285611669565b51613017612ec789612b81565b5201612ff4565b8061302b60019284612269565b51613038612f028d612b81565b5201612f24565b73ffffffffffffffffffffffffffffffffffffffff9291838092613061612d44565b613069612d44565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006034541617603455167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655167fffffffffffffffffffffffff00000000000000000000000000000000000000006037541617603755565b602061312291604051809381927f29a5f2f6000000000000000000000000000000000000000000000000000000008352600483016123b1565b038173__$0b40bab74903eb2328320c00ca3daa3e88$__5af4908115610404575f91611437575090565b90813b1561323b5773ffffffffffffffffffffffffffffffffffffffff8216807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a280511561320a5761320791613404565b50565b50503461321357565b7fb398979f000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff827f4c9c8ce3000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b91818351146132e25761328f826115fe565b905f5b84518110156132ba57806132a860019287611669565b516132b38286611669565b5201613292565b5092919091515b8181106132cd57505090565b805f6132db60019386611669565b52016132c1565b9050565b91906132f283516115fe565b906132fd81516115fe565b905f5b8551811015613328578061331660019288611669565b516133218287611669565b5201613300565b5091929093505f5b8251811015613358578061334660019285611669565b516133518288611669565b5201613330565b50919050613365816134dd565b5061336f836134dd565b509190565b604051606081019080821067ffffffffffffffff8311176101a9576133da926020926040528082528282015260016040820152604051809381927f25cc70e8000000000000000000000000000000000000000000000000000000008352600483016123de565b038173__$abc2523fb3bac9ceee4baf18a48b86000d$__5af4908115610404575f91611437575090565b5f8061145093602081519101845af43d15613440573d9161342483610860565b926134326040519485610186565b83523d5f602085013e613444565b6060915b90613481575080511561345957805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b815115806134d4575b613492575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561348a565b61145060016020835160051b840101602084015b91906040838203106135905782519282818095602084015b85811061352f5750508251815184528152613523926134f1565b60206101bc93016134f1565b9150915080518560011461356a577f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffd5b821161357d575b60200184918691613509565b6020909501805186518252865294613571565b50505056fea264697066735822122077de50247276942cc9fe50ad9c89fd9ab45b1f0a0977a3829229ad2a6c90cc3064736f6c634300081b0033","sourceMap":"2677:8226:39:-:0;;;;;;;1171:4:70;1163:13;;2677:8226:39;;;;;;1163:13:70;2677:8226:39;;;;;;;;;;;;;;","linkReferences":{"node_modules/@iden3/contracts/lib/Poseidon.sol":{"PoseidonUnit2L":[{"start":714,"length":20},{"start":12628,"length":20}],"PoseidonUnit3L":[{"start":837,"length":20},{"start":13324,"length":20}]},"node_modules/@iden3/contracts/lib/SmtLib.sol":{"SmtLib":[{"start":947,"length":20},{"start":1802,"length":20},{"start":2569,"length":20},{"start":5183,"length":20},{"start":8199,"length":20},{"start":9959,"length":20},{"start":10604,"length":20},{"start":10815,"length":20}]}}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c8063092a18bc1461015457806312c0fed21461014f5780632e6ea9941461014a5780633442af5c146101455780634f1ef2861461014057806352d1902d1461013b5780635ca1e16514610136578063715018a614610131578063732952411461012c5780638bb2513b146101275780638da5cb5b146101225780639b2e8b521461011d5780639e2a7194146101185780639fcc50af14610113578063a576b5371461010e578063ad3cb1cc14610109578063c29a6fda14610104578063cc2a9a5b146100ff578063f2fde38b146100fa5763f756356a146100f5575f80fd5b611274565b611247565b610fa6565b610f3e565b610ec8565b610e09565b610da1565b610d87565b610d00565b610cae565b610c4b565b610bca565b610a31565b610996565b6108f7565b61087c565b6106ae565b61068c565b6104e5565b610246565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff8211176101a957604052565b610159565b906101bc6040519283610186565b565b806023121561020057604051906101d6604083610186565b8190604411610200576004905b604482106101f057505090565b81358152602091820191016101e3565b5f80fd5b8060a31215610200576040519061021c604083610186565b819060c411610200576084905b60c4821061023657505090565b8135815260209182019101610229565b34610200576040600319360112610200576102986020610265366101be565b604051809381927f29a5f2f6000000000000000000000000000000000000000000000000000000008352600483016123b1565b038173__$0b40bab74903eb2328320c00ca3daa3e88$__5af490811561040457610313916020915f91610438575b506102d160606101ae565b908082528282015260016040820152604051809381927f25cc70e8000000000000000000000000000000000000000000000000000000008352600483016123de565b038173__$abc2523fb3bac9ceee4baf18a48b86000d$__5af4908115610404576103819160a0915f91610409575b50604051809381927fe170cf6e00000000000000000000000000000000000000000000000000000000835260048301919060206040840193603881520152565b038173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af48015610404576103d1915f916103d5575b50516103b68161130b565b6103bf8161130b565b60405190151581529081906020820190565b0390f35b6103f7915060a03d60a0116103fd575b6103ef8183610186565b81019061129e565b5f6103ab565b503d6103e5565b611300565b61042b915060203d602011610431575b6104238183610186565b8101906113cd565b5f610341565b503d610419565b61044f9150823d8411610431576104238183610186565b5f6102c6565b60031961010091011261020057600490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc61010091011261020057604490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c6101009101126102005760e490565b73ffffffffffffffffffffffffffffffffffffffff81160361020057565b34610200576101206003193601126102005761064961050336610455565b6106096101043591610514836104c7565b61057b60c06105246101006101ae565b83358152926020810135602085015261056761055a604083018035604088015261054e8160200190565b35606088015260400190565b8035608087015260200190565b3560a085015201803560c084015260200190565b3560e08201526040516105a48161059660208201948561240b565b03601f198101835282610186565b51902073ffffffffffffffffffffffffffffffffffffffff6105ea6105d0835f525f60205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b1615801561064b575b6105fc90611342565b5f525f60205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b506105fc6106636105d0835f525f60205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff16331490506105f3565b5f91031261020057565b34610200575f6003193601126102005760206106a66113dc565b604051908152f35b34610200576040600319360112610200576106c8366101be565b6106d0612437565b6106d9816130e9565b9073__$a9045d4c56ee07180ebebc7f688ffab42f$__6040517fe170cf6e00000000000000000000000000000000000000000000000000000000815260a081806107328760048301919060206040840193603881520152565b0381855af4908115610404575f91610841575b50516107508161130b565b6107598161130b565b61080957803b15610200576040517fc1d29f01000000000000000000000000000000000000000000000000000000008152603860048201526024810184905260448101939093525f90839060649082905af4908115610404577fa45339511611c62ec2e52472de1a3e6a561aa425af3ba3b39473e928be537edd926107ea926107ef575b50604051918291826124a3565b0390a1005b806107fd5f61080393610186565b80610682565b5f6107dd565b6040517f7d714ba90000000000000000000000000000000000000000000000000000000081528061083d84600483016124a3565b0390fd5b61085a915060a03d60a0116103fd576103ef8183610186565b5f610745565b67ffffffffffffffff81116101a957601f01601f191660200190565b604060031936011261020057600435610894816104c7565b6024359067ffffffffffffffff82116102005736602383011215610200578160040135906108c182610860565b916108cf6040519384610186565b8083523660248286010111610200576020815f92602461064997018387013784010152611453565b34610200575f6003193601126102005773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361096e5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610200575f600319360112610200576040517f79f971250000000000000000000000000000000000000000000000000000000081526001600482015260208160248173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af48015610404576103d1915f91610a12575b506040519081529081906020820190565b610a2b915060203d602011610431576104238183610186565b5f610a01565b34610200575f60031936011261020057610a49612437565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b67ffffffffffffffff81116101a95760051b60200190565b9080601f83011215610200578135610b1c81610aed565b92610b2a6040519485610186565b81845260208085019260051b82010192831161020057602001905b828210610b525750505090565b8135815260209182019101610b45565b610180600319820112610200576004359160243567ffffffffffffffff81116102005782610b9291600401610b05565b91604435916101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c60643593011261020057608490565b3461020057610649610c18610c03610be136610b62565b92610bf281979596929397516115fe565b9087610bfd8361165c565b526124b3565b95908095610c1284898461259e565b5061189e565b6128b0565b9181601f840112156102005782359167ffffffffffffffff8311610200576020838186019501011161020057565b346102005760406003193601126102005760043567ffffffffffffffff811161020057610c7c903690600401610b05565b6024359067ffffffffffffffff821161020057610ca0610649923690600401610c1d565b91610ca9612437565b612a0a565b34610200575f60031936011261020057602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b346102005761016060031936011261020057602435600435610d2136610467565b906101443567ffffffffffffffff8111610200578392610d48610d50923690600401610c1d565b9490936122a8565b6040805190610d5f8183610186565b60018252601f1901366020830137805115610d8257610649936020820152612a0a565b61162f565b3461020057610649610d9836610b62565b9392909261189e565b346102005760206003193601126102005773ffffffffffffffffffffffffffffffffffffffff600435610dd3816104c7565b610ddb612d44565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060345416176034555f80f35b34610200576102006003193601126102005760043567ffffffffffffffff811161020057610e3b903690600401610b05565b60243567ffffffffffffffff811161020057610e5b903690600401610b05565b906044359160643591610e6d36610204565b60c43567ffffffffffffffff811161020057610e8d903690600401610b05565b610e9636610497565b916101e4359567ffffffffffffffff8711610200576103d197610ec06103bf983690600401610c1d565b979096611d5a565b34610200575f600319360112610200576040805190610ee78183610186565b6005825260208201917f352e302e300000000000000000000000000000000000000000000000000000008352601f19601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b346102005760206003193601126102005773ffffffffffffffffffffffffffffffffffffffff600435610f70816104c7565b610f78612437565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060355416176035555f80f35b346102005760c060031936011261020057600435610fc3816104c7565b60243590610fd0826104c7565b604435610fdc816104c7565b606435610fe8816104c7565b60843590610ff5826104c7565b60a43592611002846104c7565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549567ffffffffffffffff61104860ff60408a901c16159867ffffffffffffffff1690565b168015908161123f575b6001149081611235575b15908161122c575b50611204576110e595876110dc60017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b61118957611fc9565b6110eb57005b6111567fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29080602081016107ea565b6111ff680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b611fc9565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f611064565b303b15915061105c565b889150611052565b3461020057602060031936011261020057610649600435611267816104c7565b61126f612437565b61217c565b34610200576101406003193601126102005761064960043560243561129836610467565b916122a8565b908160a0910312610200576040519060a0820182811067ffffffffffffffff8211176101a95760405280519060038210156102005760809183526020810151602084015260408101516040840152606081015160608401520151608082015290565b6040513d5f823e3d90fd5b6003111561131557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b1561134957565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f6f6620616c7265616479206c6f636b656420627920616e6f746865722060448201527f70617274790000000000000000000000000000000000000000000000000000006064820152fd5b90816020910312610200575190565b6040517f79f971250000000000000000000000000000000000000000000000000000000081526038600482015260208160248173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af4908115610404575f91611437575090565b611450915060203d602011610431576104238183610186565b90565b909173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168030149081156115bc575b5061096e576114a4612437565b604051927f52d1902d00000000000000000000000000000000000000000000000000000000845260208460048173ffffffffffffffffffffffffffffffffffffffff87165afa5f948161159b575b5061153a577f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff831660045260245b5ffd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc840361156e576101bc92935061314c565b7faa1d49a4000000000000000000000000000000000000000000000000000000005f52600484905260245ffd5b6115b591955060203d602011610431576104238183610186565b935f6114f2565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f611497565b9061160882610aed565b6116156040519182610186565b828152601f196116258294610aed565b0190602036910137565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805115610d825760200190565b8051821015610d825760209160051b010190565b6040519061168c60e083610186565b60e0368337565b604051906102e06116a48184610186565b368337565b604051906102606116a48184610186565b604051906109606116a481846101865