UNPKG

@settlemint/solidity-zeto

Version:

Smart contract set to build Zero Knowledge tokens in SettleMint

1 lines 129 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":"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_AnonNullifier"},{"name":"_depositVerifier","type":"address","internalType":"contract Groth16Verifier_CheckHashesValue"},{"name":"_withdrawVerifier","type":"address","internalType":"contract Groth16Verifier_CheckNullifierValue"},{"name":"_batchVerifier","type":"address","internalType":"contract Groth16Verifier_AnonNullifierBatch"},{"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":"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":"UTXOTransfer","inputs":[{"name":"inputs","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"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":"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":"0x60a0806040523460295730608052612ddb908161002e82396080518181816105d201526114830152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806312c0fed21461012457806322414cf31461011f5780634f1ef2861461011a57806352d1902d146101155780635ca1e16514610110578063715018a61461010b57806373295241146101065780638bb2513b146101015780638da5cb5b146100fc5780639b2e8b52146100f75780639e2a7194146100f25780639fcc50af146100ed578063ad3cb1cc146100e8578063c29a6fda146100e3578063cc2a9a5b146100de578063f2fde38b146100d95763f756356a146100d4575f80fd5b610dd7565b610daa565b610b0d565b610aa5565b610a2f565b6109c7565b6109ad565b610926565b6108d4565b610871565b61081e565b6106fa565b61064a565b6105ab565b610526565b610462565b6101bd565b60031961010091011261013b57600490565b5f80fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c61010091011261013b57606490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc61010091011261013b57604490565b73ffffffffffffffffffffffffffffffffffffffff81160361013b57565b3461013b5761012060031936011261013b576103216101db36610129565b6102e161010435916101ec8361019f565b61025360c06101fc6101006103af565b83358152926020810135602085015261023f61023260408301803560408801526102268160200190565b35606088015260400190565b8035608087015260200190565b3560a085015201803560c084015260200190565b3560e082015260405161027c8161026e602082019485611d50565b03601f198101835282610387565b51902073ffffffffffffffffffffffffffffffffffffffff6102c26102a8835f525f60205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b16158015610323575b6102d490610e01565b5f525f60205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b506102d461033b6102a8835f525f60205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff16331490506102cb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff8211176103aa57604052565b61035a565b906103bd6040519283610387565b565b67ffffffffffffffff81116103aa5760051b60200190565b9080601f8301121561013b5781356103ee816103bf565b926103fc6040519485610387565b81845260208085019260051b82010192831161013b57602001905b8282106104245750505090565b8135815260209182019101610417565b9181601f8401121561013b5782359167ffffffffffffffff831161013b576020838186019501011161013b57565b3461013b5761018060031936011261013b5760043567ffffffffffffffff811161013b576104949036906004016103d7565b60243567ffffffffffffffff811161013b576104b49036906004016103d7565b90604435916104c23661013f565b91610164359267ffffffffffffffff841161013b57610506946104ec6104f4953690600401610434565b9490936111b4565b60405190151581529081906020820190565b0390f35b67ffffffffffffffff81116103aa57601f01601f191660200190565b604060031936011261013b5760043561053e8161019f565b6024359067ffffffffffffffff821161013b573660238301121561013b5781600401359061056b8261050a565b916105796040519384610387565b808352366024828601011161013b576020815f9260246103219701838701378401015261146a565b5f91031261013b57565b3461013b575f60031936011261013b5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036106225760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461013b575f60031936011261013b576040517f79f971250000000000000000000000000000000000000000000000000000000081526001600482015260208160248173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af480156106f557610506915f916106c6575b506040519081529081906020820190565b6106e8915060203d6020116106ee575b6106e08183610387565b810190611615565b5f6106b5565b503d6106d6565b611028565b3461013b575f60031936011261013b57610712612519565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b61018060031982011261013b576004359160243567ffffffffffffffff811161013b57826107e6916004016103d7565b91604435916101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c60643593011261013b57608490565b3461013b5761032161086c610857610835366107b6565b9261084681979596929397516110f5565b908761085183610f6b565b52611d7c565b95908095610866848984611f00565b506116e6565b6123de565b3461013b57604060031936011261013b5760043567ffffffffffffffff811161013b576108a29036906004016103d7565b6024359067ffffffffffffffff821161013b576108c6610321923690600401610434565b916108cf612519565b6125aa565b3461013b575f60031936011261013b57602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b3461013b5761016060031936011261013b576024356004356109473661016f565b906101443567ffffffffffffffff811161013b57839261096e610976923690600401610434565b949093611c47565b60408051906109858183610387565b60018252601f19013660208301378051156109a8576103219360208201526125aa565b610f3e565b3461013b576103216109be366107b6565b939290926116e6565b3461013b57602060031936011261013b5773ffffffffffffffffffffffffffffffffffffffff6004356109f98161019f565b610a016128b7565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060345416176034555f80f35b3461013b575f60031936011261013b576040805190610a4e8183610387565b6005825260208201917f352e302e300000000000000000000000000000000000000000000000000000008352601f19601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b3461013b57602060031936011261013b5773ffffffffffffffffffffffffffffffffffffffff600435610ad78161019f565b610adf612519565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060355416176035555f80f35b3461013b5760c060031936011261013b57600435610b2a8161019f565b60243590610b378261019f565b604435610b438161019f565b606435610b4f8161019f565b60843590610b5c8261019f565b60a43592610b698461019f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549567ffffffffffffffff610baf60ff60408a901c16159867ffffffffffffffff1690565b1680159081610da2575b6001149081610d98575b159081610d8f575b50610d6757610c4c9587610c4360017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b610cec5761193b565b610c5257005b610cbd7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b610d62680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b61193b565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610bcb565b303b159150610bc3565b889150610bb9565b3461013b57602060031936011261013b57610321600435610dca8161019f565b610dd2612519565b611b0e565b3461013b5761014060031936011261013b57610321600435602435610dfb3661016f565b91611c47565b15610e0857565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f6f6620616c7265616479206c6f636b656420627920616e6f746865722060448201527f70617274790000000000000000000000000000000000000000000000000000006064820152fd5b15610e9357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964207472616e73616374696f6e2070726f706f73616c000000006044820152fd5b60405190610f0060e083610387565b60e0368337565b604051906103e0610f188184610387565b368337565b604051906102e0610f188184610387565b604090815191610f188184610387565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051156109a85760200190565b80518210156109a85760209160051b010190565b9060078110156109a85760051b0190565b9081602091031261013b5751801515810361013b5790565b905f905b60028210610fc657505050565b6040808281866001953701930191019091610fb9565b90949392604090610ffc61010094836101e0860199863783850190610fb5565b60c0830137015f905b6007821061101257505050565b6020806001928551815201930191019091611005565b6040513d5f823e3d90fd5b1561103a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152fd5b90601f8110156109a85760051b0190565b909493926040906110c961010094836104e0860199863783850190610fb5565b60c0830137015f905b601f82106110df57505050565b60208060019285518152019301910190916110d2565b906110ff826103bf565b61110c6040519182610387565b828152601f1961111c82946103bf565b0190602036910137565b90602080835192838152019201905f5b8181106111435750505090565b8251845260209384019390920191600101611136565b601f8260209493601f1993818652868601375f8582860101520116010190565b92906111b194926111956111a392606087526060870190611126565b908582036020870152611126565b926040818503910152611159565b90565b906111c191969396611d7c565b9590916111d76111d2828986611f00565b610e8c565b6002835111801561145f575b15611397576111f3908784612329565b906111fc610f07565b915f5b601f811061137857505061128b9160209161124b61123260395473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937f44a173dd00000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016110a9565b03915afa80156106f5576112a6915f91611349575b50611033565b6112b085826123de565b6112ba81516110f5565b916112c586516110f5565b935f5b835181101561130657806112de60019286610f78565b516112e98288610f78565b526112f4818a610f78565b516112ff8289610f78565b52016112c8565b5092946113419196507fcb56a7130431b68e0e636f24584d40580490c1bf882bef3701f317d47ba98c38949250604051938493339785611179565b0390a2600190565b61136b915060203d602011611371575b6113638183610387565b810190610f9d565b5f6112a0565b503d611359565b8061138560019284610f78565b516113908287611098565b52016111ff565b6113a290878461224f565b906113ab610ef1565b915f5b60078110611440575050611421916020916113e161123260385473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fc894e75700000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601610fdc565b03915afa80156106f55761143b915f916113495750611033565b6112a6565b8061144d60019284610f78565b516114588287610f8c565b52016113ae565b5060028751116111e3565b909173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168030149081156115d3575b50610622576114bb612519565b604051927f52d1902d00000000000000000000000000000000000000000000000000000000845260208460048173ffffffffffffffffffffffffffffffffffffffff87165afa5f94816115b2575b50611551577f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff831660045260245b5ffd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8403611585576103bd929350612adb565b7faa1d49a4000000000000000000000000000000000000000000000000000000005f52600484905260245ffd5b6115cc91955060203d6020116106ee576106e08183610387565b935f611509565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f6114ae565b9081602091031261013b575190565b9060178110156109a85760051b0190565b9094939260409061165561010094836103e0860199863783850190610fb5565b60c0830137015f905b6017821061166b57505050565b602080600192855181520193019101909161165e565b1561168857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4661696c656420746f207472616e7366657220455243323020746f6b656e73006044820152fd5b9392909160028351115f146118ac57601783511161187f576117089285612800565b90611711610f1d565b915f5b601781106118605750506117879160209161174761123260375473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fa0c2a19a00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601611635565b03915afa80156106f5575f926117a961180f9260209486916118495750611033565b6117cb61123260355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101929092529093849283919082906044820190565b03925af180156106f5576103bd915f9161182a575b50611681565b611843915060203d602011611371576113638183610387565b5f611824565b61136b9150853d8711611371576113638183610387565b8061186d60019284610f78565b516118788287611624565b5201611714565b7f71798fb5000000000000000000000000000000000000000000000000000000005f52601760045260245ffd5b6118b69285612721565b906118bf610ef1565b915f5b6007811061191c5750506118f5916020916113e161123260365473ffffffffffffffffffffffffffffffffffffffff1690565b03915afa80156106f5575f9261191761180f9260209486916118495750611033565b6117a9565b8061192960019284610f78565b516119348287610f8c565b52016118c2565b6119659095939592919261194d6128b7565b6119556128b7565b61195d6128b7565b610dd26128b7565b73__$a9045d4c56ee07180ebebc7f688ffab42f$__92833b1561013b575f604494604051958680927f9e43b81300000000000000000000000000000000000000000000000000000000825260016004830152604060248301525af49384156106f5576103bd9673ffffffffffffffffffffffffffffffffffffffff80948193611abd98611afe575b506119f66128b7565b6119fe6128b7565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006034541617603455167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655167fffffffffffffffffffffffff0000000000000000000000000000000000000000603754161760375573ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006038541617603855565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006039541617603955565b5f611b0891610387565b5f6119ed565b73ffffffffffffffffffffffffffffffffffffffff168015611bcf5773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90949392604090611c1b6101009483610140860199863783850190610fb5565b60c0830137015f905b60028210611c3157505050565b6020806001928551815201930191019091611c24565b91611cc291602091611c57610f2e565b858152916020830152611c8261123260345473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937ff5c9d69e00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601611bfb565b03915afa80156106f5575f92611ce461180f9260209486916118495750611033565b611d0661123260355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101929092529093849283919082906064820190565b905f825b60088210611d66575050506101000190565b6020806001928551815201930191019091611d54565b9190918051908351600a83118015611dfe575b611dd15760026111b19311908115611dc6575b5015611dba57611db4600a809261290e565b9361290e565b611db46002809261290e565b60029150115f611da2565b7f9ebbc98e000000000000000000000000000000000000000000000000000000005f52600a60045260245ffd5b50600a8111611d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211611e6257565b611e08565b908160a091031261013b576040519060a0820182811067ffffffffffffffff8211176103aa57604052805190600382101561013b5760809183526020810151602084015260408101516040840152606081015160608401520151608082015290565b60031115611ed357565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90611f0d91939293612977565b5f9291925b835181101561201657611f258185610f78565b511561200e5780151580611fe9575b611fb0576001611f68611f63611f5c611f4d8589610f78565b515f52603360205260405f2090565b5460ff1690565b151590565b14611f77576001905b01611f12565b611f8461154e9185610f78565b517f41a06d28000000000000000000000000000000000000000000000000000000005f52600452602490565b611fbd61154e9185610f78565b517fdd574831000000000000000000000000000000000000000000000000000000005f52600452602490565b50611ff48185610f78565b5161200761200183611e35565b86610f78565b5114611f34565b600190611f71565b50915073__$a9045d4c56ee07180ebebc7f688ffab42f$__905f5b8351811015612171576120448185610f78565b5115612169578015158061214a575b611fb0576120ae60a061206f6120698488610f78565b51612a32565b604051809381927fe170cf6e00000000000000000000000000000000000000000000000000000000835260048301919060206040840193600181520152565b0381875af49081156106f5575f9161211c575b50516120cc81611ec9565b6120d581611ec9565b6120e3576001905b01612031565b6120f061154e9185610f78565b517f79e1da47000000000000000000000000000000000000000000000000000000005f52600452602490565b61213d915060a03d8111612143575b6121358183610387565b810190611e67565b5f6120c1565b503d61212b565b506121558185610f78565b5161216261200183611e35565b5114612053565b6001906120dd565b50929150602060405180927f92f5b06c00000000000000000000000000000000000000000000000000000000825281806121ba8760048301919060206040840193600181520152565b03915af49081156106f5575f91612203575b50156121d85750600190565b7f4acd7ab8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b61221c915060203d602011611371576113638183610387565b5f6121cc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e625760010190565b61225960076110f5565b915f945f5b835181101561228f578061227460019286610f78565b516122886122818a612222565b9988610f78565b520161225e565b5090936122a561229e87612222565b9685610f78565b525f5b82518110156122eb57806122be60019285610f78565b516122e4575f965b6122dd60ff6122d483612222565b99169187610f78565b52016122a8565b81966122c6565b509290505f5b8151811015612322578061230760019284610f78565b5161231b61231488612222565b9786610f78565b52016122f1565b5090925050565b612333601f6110f5565b915f945f5b8351811015612362578061234e60019286610f78565b5161235b6122818a612222565b5201612338565b50909361237161229e87612222565b525f5b82518110156123ae578061238a60019285610f78565b516123a7575f965b6123a060ff6122d483612222565b5201612374565b8196612392565b509290505f5b815181101561232257806123ca60019284610f78565b516123d761231488612222565b52016123b4565b9190915f5b815181101561244557806123f960019284610f78565b51612405575b016123e3565b612440612415611f4d8386610f78565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b6123ff565b50505f5b82518110156125145761245c8184610f78565b5161246a575b600101612449565b73__$a9045d4c56ee07180ebebc7f688ffab42f$__9061248a8185610f78565b516124958286610f78565b51833b1561013b576040517fc1d29f010000000000000000000000000000000000000000000000000000000081526001600482015260248101929092526044820152915f90839060649082905af49182156106f5576001926124fa575b509050612462565b806125085f61250e93610387565b806105a1565b5f6124f2565b509050565b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416330361255957565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b9161259c6111b19492604085526040850190611126565b926020818503910152611159565b9091925f9373__$a9045d4c56ee07180ebebc7f688ffab42f$__945b83518110156126e4576125d98185610f78565b519081156126db576125ef60a061206f84612a32565b03818b5af49081156106f5575f916126bd575b505161260d81611ec9565b61261681611ec9565b61269057863b1561013b576040517fc1d29f01000000000000000000000000000000000000000000000000000000008152600160048201526024810183905260448101929092525f826064818a5af49182156106f55760019261267c575b505b016125c6565b806125085f61268a93610387565b5f612674565b7f79e1da47000000000000000000000000000000000000000000000000000000005f52600482905260245ffd5b6126d5915060a03d8111612143576121358183610387565b5f612602565b60019150612676565b509093507f7ff08e0ca1fce6b202b83128811e4f6ceda54930aa074cd365bf68f95c20ce19919261271c604051928392339684612585565b0390a2565b909261272d60076110f5565b93600191829361273c87610f6b565b52825f815b6127ca575b505061275b61275485612222565b9487610f78565b525f825b61277f575b5050508061277461277b92612222565b5083610f78565b5290565b81518110156127c557908282612796829484610f78565b516127be575f955b6127b560ff6127ac83612222565b9816918a610f78565b5201909161275f565b819561279e565b612764565b83518110156127fb57806127df839286610f78565b516127f36127ec89612222565b988b610f78565b520181612741565b612746565b909261280c60176110f5565b93600191829361281b87610f6b565b52825f815b612888575b505061283361275485612222565b525f825b61284b575050508061277461277b92612222565b81518110156127c557908282612862829484610f78565b51612881575f955b61287860ff6127ac83612222565b52019091612837565b819561286a565b83518110156128b2578061289d839286610f78565b516128aa6127ec89612222565b520181612820565b612825565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156128e657565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffd5b918183511461297357612920826110f5565b905f5b845181101561294b578061293960019287610f78565b516129448286610f78565b5201612923565b5092919091515b81811061295e57505090565b805f61296c60019386610f78565b5201612952565b9050565b919061298383516110f5565b9061298e81516110f5565b905f5b85518110156129b957806129a760019288610f78565b516129b28287610f78565b5201612991565b5091929093505f5b82518110156129e957806129d760019285610f78565b516129e28288610f78565b52016129c1565b509190506129f681612c50565b50612a0083612c50565b509190565b919060608301925f905b60038210612a1c57505050565b6020806001928551815201930191019091612a0f565b604051606081019080821067ffffffffffffffff8311176103aa57612a98926020926040528082528282015260016040820152604051809381927f25cc70e800000000000000000000000000000000000000000000000000000000835260048301612a05565b038173__$abc2523fb3bac9ceee4baf18a48b86000d$__5af49081156106f5575f91612ac2575090565b6111b1915060203d6020116106ee576106e08183610387565b90813b15612bca5773ffffffffffffffffffffffffffffffffffffffff8216807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115612b9957612b9691612c0c565b50565b505034612ba257565b7fb398979f000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff827f4c9c8ce3000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b5f806111b193602081519101845af43d15612c48573d91612c2c8361050a565b92612c3a6040519485610387565b83523d5f602085013e612c68565b606091612c68565b6111b160016020835160051b84010160208401612d01565b90612ca55750805115612c7d57805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b81511580612cf8575b612cb6575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b15612cae565b9190604083820310612da05782519282818095602084015b858110612d3f5750508251815184528152612d3392612d01565b60206103bd9301612d01565b91509150805185600114612d7a577f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffd5b8211612d8d575b60200184918691612d19565b6020909501805186518252865294612d81565b50505056fea2646970667358221220a162aec2676830e0d765d95fb626e4602fefb5cab76989ade90a4328c7cb983b64736f6c634300081b0033","sourceMap":"2612:6133:41:-:0;;;;;;;1171:4:70;1163:13;;2612:6133:41;;;;;;1163:13:70;2612:6133:41;;;;;;;;;;;;;;","linkReferences":{"node_modules/@iden3/contracts/lib/Poseidon.sol":{"PoseidonUnit3L":[{"start":10954,"length":20}]},"node_modules/@iden3/contracts/lib/SmtLib.sol":{"SmtLib":[{"start":1725,"length":20},{"start":6549,"length":20},{"start":8265,"length":20},{"start":9370,"length":20},{"start":9695,"length":20}]}}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806312c0fed21461012457806322414cf31461011f5780634f1ef2861461011a57806352d1902d146101155780635ca1e16514610110578063715018a61461010b57806373295241146101065780638bb2513b146101015780638da5cb5b146100fc5780639b2e8b52146100f75780639e2a7194146100f25780639fcc50af146100ed578063ad3cb1cc146100e8578063c29a6fda146100e3578063cc2a9a5b146100de578063f2fde38b146100d95763f756356a146100d4575f80fd5b610dd7565b610daa565b610b0d565b610aa5565b610a2f565b6109c7565b6109ad565b610926565b6108d4565b610871565b61081e565b6106fa565b61064a565b6105ab565b610526565b610462565b6101bd565b60031961010091011261013b57600490565b5f80fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c61010091011261013b57606490565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc61010091011261013b57604490565b73ffffffffffffffffffffffffffffffffffffffff81160361013b57565b3461013b5761012060031936011261013b576103216101db36610129565b6102e161010435916101ec8361019f565b61025360c06101fc6101006103af565b83358152926020810135602085015261023f61023260408301803560408801526102268160200190565b35606088015260400190565b8035608087015260200190565b3560a085015201803560c084015260200190565b3560e082015260405161027c8161026e602082019485611d50565b03601f198101835282610387565b51902073ffffffffffffffffffffffffffffffffffffffff6102c26102a8835f525f60205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b16158015610323575b6102d490610e01565b5f525f60205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b506102d461033b6102a8835f525f60205260405f2090565b73ffffffffffffffffffffffffffffffffffffffff16331490506102cb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f601f19910116810190811067ffffffffffffffff8211176103aa57604052565b61035a565b906103bd6040519283610387565b565b67ffffffffffffffff81116103aa5760051b60200190565b9080601f8301121561013b5781356103ee816103bf565b926103fc6040519485610387565b81845260208085019260051b82010192831161013b57602001905b8282106104245750505090565b8135815260209182019101610417565b9181601f8401121561013b5782359167ffffffffffffffff831161013b576020838186019501011161013b57565b3461013b5761018060031936011261013b5760043567ffffffffffffffff811161013b576104949036906004016103d7565b60243567ffffffffffffffff811161013b576104b49036906004016103d7565b90604435916104c23661013f565b91610164359267ffffffffffffffff841161013b57610506946104ec6104f4953690600401610434565b9490936111b4565b60405190151581529081906020820190565b0390f35b67ffffffffffffffff81116103aa57601f01601f191660200190565b604060031936011261013b5760043561053e8161019f565b6024359067ffffffffffffffff821161013b573660238301121561013b5781600401359061056b8261050a565b916105796040519384610387565b808352366024828601011161013b576020815f9260246103219701838701378401015261146a565b5f91031261013b57565b3461013b575f60031936011261013b5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036106225760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461013b575f60031936011261013b576040517f79f971250000000000000000000000000000000000000000000000000000000081526001600482015260208160248173__$a9045d4c56ee07180ebebc7f688ffab42f$__5af480156106f557610506915f916106c6575b506040519081529081906020820190565b6106e8915060203d6020116106ee575b6106e08183610387565b810190611615565b5f6106b5565b503d6106d6565b611028565b3461013b575f60031936011261013b57610712612519565b5f73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b61018060031982011261013b576004359160243567ffffffffffffffff811161013b57826107e6916004016103d7565b91604435916101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c60643593011261013b57608490565b3461013b5761032161086c610857610835366107b6565b9261084681979596929397516110f5565b908761085183610f6b565b52611d7c565b95908095610866848984611f00565b506116e6565b6123de565b3461013b57604060031936011261013b5760043567ffffffffffffffff811161013b576108a29036906004016103d7565b6024359067ffffffffffffffff821161013b576108c6610321923690600401610434565b916108cf612519565b6125aa565b3461013b575f60031936011261013b57602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b3461013b5761016060031936011261013b576024356004356109473661016f565b906101443567ffffffffffffffff811161013b57839261096e610976923690600401610434565b949093611c47565b60408051906109858183610387565b60018252601f19013660208301378051156109a8576103219360208201526125aa565b610f3e565b3461013b576103216109be366107b6565b939290926116e6565b3461013b57602060031936011261013b5773ffffffffffffffffffffffffffffffffffffffff6004356109f98161019f565b610a016128b7565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060345416176034555f80f35b3461013b575f60031936011261013b576040805190610a4e8183610387565b6005825260208201917f352e302e300000000000000000000000000000000000000000000000000000008352601f19601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b3461013b57602060031936011261013b5773ffffffffffffffffffffffffffffffffffffffff600435610ad78161019f565b610adf612519565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060355416176035555f80f35b3461013b5760c060031936011261013b57600435610b2a8161019f565b60243590610b378261019f565b604435610b438161019f565b606435610b4f8161019f565b60843590610b5c8261019f565b60a43592610b698461019f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549567ffffffffffffffff610baf60ff60408a901c16159867ffffffffffffffff1690565b1680159081610da2575b6001149081610d98575b159081610d8f575b50610d6757610c4c9587610c4360017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b610cec5761193b565b610c5257005b610cbd7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b610d62680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b61193b565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f610bcb565b303b159150610bc3565b889150610bb9565b3461013b57602060031936011261013b57610321600435610dca8161019f565b610dd2612519565b611b0e565b3461013b5761014060031936011261013b57610321600435602435610dfb3661016f565b91611c47565b15610e0857565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f6f6620616c7265616479206c6f636b656420627920616e6f746865722060448201527f70617274790000000000000000000000000000000000000000000000000000006064820152fd5b15610e9357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964207472616e73616374696f6e2070726f706f73616c000000006044820152fd5b60405190610f0060e083610387565b60e0368337565b604051906103e0610f188184610387565b368337565b604051906102e0610f188184610387565b604090815191610f188184610387565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8051156109a85760200190565b80518210156109a85760209160051b010190565b9060078110156109a85760051b0190565b9081602091031261013b5751801515810361013b5790565b905f905b60028210610fc657505050565b6040808281866001953701930191019091610fb9565b90949392604090610ffc61010094836101e0860199863783850190610fb5565b60c0830137015f905b6007821061101257505050565b6020806001928551815201930191019091611005565b6040513d5f823e3d90fd5b1561103a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152fd5b90601f8110156109a85760051b0190565b909493926040906110c961010094836104e0860199863783850190610fb5565b60c0830137015f905b601f82106110df57505050565b60208060019285518152019301910190916110d2565b906110ff826103bf565b61110c6040519182610387565b828152601f1961111c82946103bf565b0190602036910137565b90602080835192838152019201905f5b8181106111435750505090565b8251845260209384019390920191600101611136565b601f8260209493601f1993818652868601375f8582860101520116010190565b92906111b194926111956111a392606087526060870190611126565b908582036020870152611126565b926040818503910152611159565b90565b906111c191969396611d7c565b9590916111d76111d2828986611f00565b610e8c565b6002835111801561145f575b15611397576111f3908784612329565b906111fc610f07565b915f5b601f811061137857505061128b9160209161124b61123260395473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937f44a173dd00000000000000000000000000000000000000000000000000000000845260c08101906040810190600486016110a9565b03915afa80156106f5576112a6915f91611349575b50611033565b6112b085826123de565b6112ba81516110f5565b916112c586516110f5565b935f5b835181101561130657806112de60019286610f78565b516112e98288610f78565b526112f4818a610f78565b516112ff8289610f78565b52016112c8565b5092946113419196507fcb56a7130431b68e0e636f24584d40580490c1bf882bef3701f317d47ba98c38949250604051938493339785611179565b0390a2600190565b61136b915060203d602011611371575b6113638183610387565b810190610f9d565b5f6112a0565b503d611359565b8061138560019284610f78565b516113908287611098565b52016111ff565b6113a290878461224f565b906113ab610ef1565b915f5b60078110611440575050611421916020916113e161123260385473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fc894e75700000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601610fdc565b03915afa80156106f55761143b915f916113495750611033565b6112a6565b8061144d60019284610f78565b516114588287610f8c565b52016113ae565b5060028751116111e3565b909173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168030149081156115d3575b50610622576114bb612519565b604051927f52d1902d00000000000000000000000000000000000000000000000000000000845260208460048173ffffffffffffffffffffffffffffffffffffffff87165afa5f94816115b2575b50611551577f4c9c8ce3000000000000000000000000000000000000000000000000000000005f5273ffffffffffffffffffffffffffffffffffffffff831660045260245b5ffd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8403611585576103bd929350612adb565b7faa1d49a4000000000000000000000000000000000000000000000000000000005f52600484905260245ffd5b6115cc91955060203d6020116106ee576106e08183610387565b935f611509565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f6114ae565b9081602091031261013b575190565b9060178110156109a85760051b0190565b9094939260409061165561010094836103e0860199863783850190610fb5565b60c0830137015f905b6017821061166b57505050565b602080600192855181520193019101909161165e565b1561168857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4661696c656420746f207472616e7366657220455243323020746f6b656e73006044820152fd5b9392909160028351115f146118ac57601783511161187f576117089285612800565b90611711610f1d565b915f5b601781106118605750506117879160209161174761123260375473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937fa0c2a19a00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601611635565b03915afa80156106f5575f926117a961180f9260209486916118495750611033565b6117cb61123260355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015260248101929092529093849283919082906044820190565b03925af180156106f5576103bd915f9161182a575b50611681565b611843915060203d602011611371576113638183610387565b5f611824565b61136b9150853d8711611371576113638183610387565b8061186d60019284610f78565b516118788287611624565b5201611714565b7f71798fb5000000000000000000000000000000000000000000000000000000005f52601760045260245ffd5b6118b69285612721565b906118bf610ef1565b915f5b6007811061191c5750506118f5916020916113e161123260365473ffffffffffffffffffffffffffffffffffffffff1690565b03915afa80156106f5575f9261191761180f9260209486916118495750611033565b6117a9565b8061192960019284610f78565b516119348287610f8c565b52016118c2565b6119659095939592919261194d6128b7565b6119556128b7565b61195d6128b7565b610dd26128b7565b73__$a9045d4c56ee07180ebebc7f688ffab42f$__92833b1561013b575f604494604051958680927f9e43b81300000000000000000000000000000000000000000000000000000000825260016004830152604060248301525af49384156106f5576103bd9673ffffffffffffffffffffffffffffffffffffffff80948193611abd98611afe575b506119f66128b7565b6119fe6128b7565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006034541617603455167fffffffffffffffffffffffff00000000000000000000000000000000000000006036541617603655167fffffffffffffffffffffffff0000000000000000000000000000000000000000603754161760375573ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006038541617603855565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff00000000000000000000000000000000000000006039541617603955565b5f611b0891610387565b5f6119ed565b73ffffffffffffffffffffffffffffffffffffffff168015611bcf5773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90949392604090611c1b6101009483610140860199863783850190610fb5565b60c0830137015f905b60028210611c3157505050565b6020806001928551815201930191019091611c24565b91611cc291602091611c57610f2e565b858152916020830152611c8261123260345473ffffffffffffffffffffffffffffffffffffffff1690565b906040518095819482937ff5c9d69e00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601611bfb565b03915afa80156106f5575f92611ce461180f9260209486916118495750611033565b611d0661123260355473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101929092529093849283919082906064820190565b905f825b60088210611d66575050506101000190565b6020806001928551815201930191019091611d54565b9190918051908351600a83118015611dfe575b611dd15760026111b19311908115611dc6575b5015611dba57611db4600a809261290e565b9361290e565b611db46002809261290e565b60029150115f611da2565b7f9ebbc98e000000000000000000000000000000000000000000000000000000005f52600a60045260245ffd5b50600a8111611d8f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201918211611e6257565b611e08565b908160a091031261013b576040519060a0820182811067ffffffffffffffff8211176103aa57604052805190600382101561013b5760809183526020810151602084015260408101516040840152606081015160608401520151608082015290565b60031115611ed357565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b90611f0d91939293612977565b5f9291925b835181101561201657611f258185610f78565b511561200e5780151580611fe9575b611fb0576001611f68611f63611f5c611f4d8589610f78565b515f52603360205260405f2090565b5460ff1690565b151590565b14611f77576001905b01611f12565b611f8461154e9185610f78565b517f41a06d28000000000000000000000000000000000000000000000000000000005f52600452602490565b611fbd61154e9185610f78565b517fdd574831000000000000000000000000000000000000000000000000000000005f52600452602490565b50611ff48185610f78565b5161200761200183611e35565b86610f78565b5114611f34565b600190611f71565b50915073__$a9045d4c56ee07180ebebc7f688ffab42f$__905f5b8351811015612171576120448185610f78565b5115612169578015158061214a575b611fb0576120ae60a061206f6120698488610f78565b51612a32565b604051809381927fe170cf6e00000000000000000000000000000000000000000000000000000000835260048301919060206040840193600181520152565b0381875af49081156106f5575f9161211c575b50516120cc81611ec9565b6120d581611ec9565b6120e3576001905b01612031565b6120f061154e9185610f78565b517f79e1da47000000000000000000000000000000000000000000000000000000005f52600452602490565b61213d915060a03d8111612143575b6121358183610387565b810190611e67565b5f6120c1565b503d61212b565b506121558185610f78565b5161216261200183611e35565b5114612053565b6001906120dd565b50929150602060405180927f92f5b06c000000000000000000000000000000000000000000000000000000008252