From 5b4eeb188c8ca8b2f17a5848ecd5f56a04d33696 Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Thu, 25 Jan 2024 07:05:57 +0000 Subject: [PATCH] chore: updating ABIs, deployment scripts --- abis/0.8.23/GnosisSafeMultisig.json | 124 ++ .../0.8.23/GnosisSafeSameAddressMultisig.json | 163 ++ abis/0.8.23/OperatorWhitelist.json | 266 +++ abis/0.8.23/ServiceManagerToken.json | 1331 ++++++++++++ abis/0.8.23/ServiceRegistryL2.json | 1899 +++++++++++++++++ abis/0.8.23/ServiceRegistryTokenUtility.json | 926 ++++++++ .../l2/deploy_02_operator_whitelist.js | 2 +- ...eploy_03_service_registry_token_utility.js | 2 +- .../l2/deploy_04_service_manager_token.js | 2 +- .../l2/deploy_05_gnosis_safe_multisig.js | 2 +- ...oy_06_gnosis_safe_same_address_multisig.js | 2 +- ...y_07_10_change_managers_and_permissions.js | 6 +- .../l2/globals_arbitrum_sepolia.json | 2 +- 13 files changed, 4718 insertions(+), 9 deletions(-) create mode 100644 abis/0.8.23/GnosisSafeMultisig.json create mode 100644 abis/0.8.23/GnosisSafeSameAddressMultisig.json create mode 100644 abis/0.8.23/OperatorWhitelist.json create mode 100644 abis/0.8.23/ServiceManagerToken.json create mode 100644 abis/0.8.23/ServiceRegistryL2.json create mode 100644 abis/0.8.23/ServiceRegistryTokenUtility.json diff --git a/abis/0.8.23/GnosisSafeMultisig.json b/abis/0.8.23/GnosisSafeMultisig.json new file mode 100644 index 00000000..1605b243 --- /dev/null +++ b/abis/0.8.23/GnosisSafeMultisig.json @@ -0,0 +1,124 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "GnosisSafeMultisig", + "sourceName": "contracts/multisigs/GnosisSafeMultisig.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address payable", + "name": "_gnosisSafe", + "type": "address" + }, + { + "internalType": "address", + "name": "_gnosisSafeProxyFactory", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "IncorrectDataLength", + "type": "error" + }, + { + "inputs": [], + "name": "DEFAULT_DATA_LENGTH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GNOSIS_SAFE_SETUP_SELECTOR", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "owners", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "gnosisSafe", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gnosisSafeProxyFactory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60c060405234801561001057600080fd5b5060405161086c38038061086c83398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a0516107a36100c960003960008181607101526101fe01526000818160f4015261022b01526107a36000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a84173ae11610050578063a84173ae146100ef578063f02fb77414610116578063f398dba81461012c57600080fd5b8063490b7a791461006c5780639f1a308d146100b0575b600080fd5b6100937f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be63b63e800d60e01b81565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100a7565b6100937f000000000000000000000000000000000000000000000000000000000000000081565b61011e609081565b6040519081526020016100a7565b61009361013a3660046104d8565b60008060008060008060008061014f896102aa565b9650965096509650965096509650600063b63e800d60e01b8c8c8a858b8b8a8c6040516024016101869897969594939291906105fb565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051631688f0b960e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631688f0b990610257907f000000000000000000000000000000000000000000000000000000000000000090859088906004016106bf565b6020604051808303816000875af1158015610276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029a91906106f1565b9c9b505050505050505050505050565b600080600080600080606060008851905060008111156103fd5760908110156102f457604051631a64813d60e11b8152609060048201526024810182905260440160405180910390fd5b601489015160288a0151603c8b015160508c015160708d01516090808f0151959d50939b50919950975095509093508111156103fd57600061033760908361072b565b90508067ffffffffffffffff81111561035257610352610409565b6040519080825280601f01601f19166020018201604052801561037c576020820181803683370190505b50925060005b818110156103fa578a610396609083610744565b815181106103a6576103a6610757565b602001015160f81c60f81b8482815181106103c3576103c3610757565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610382565b50505b50919395979092949650565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561044857610448610409565b604052919050565b6001600160a01b038116811461046557600080fd5b50565b600082601f83011261047957600080fd5b813567ffffffffffffffff81111561049357610493610409565b6104a6601f8201601f191660200161041f565b8181528460208386010111156104bb57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156104ed57600080fd5b833567ffffffffffffffff8082111561050557600080fd5b818601915086601f83011261051957600080fd5b813560208282111561052d5761052d610409565b8160051b61053c82820161041f565b928352848101820192828101908b85111561055657600080fd5b958301955b84871015610580578635925061057083610450565b828252958301959083019061055b565b98505050870135945050604086013591508082111561059e57600080fd5b506105ab86828701610468565b9150509250925092565b6000815180845260005b818110156105db576020818501810151868301820152016105bf565b506000602082860101526020601f19601f83011685010191505092915050565b6101008082528951908201819052600090610120830190602090818d01845b8281101561063f5781516001600160a01b03168552938301939083019060010161061a565b5050505089602084015261065e604084018a6001600160a01b03169052565b828103606084015261067081896105b5565b91505061068860808301876001600160a01b03169052565b6001600160a01b03851660a08301528360c08301526106b260e08301846001600160a01b03169052565b9998505050505050505050565b6001600160a01b03841681526060602082015260006106e160608301856105b5565b9050826040830152949350505050565b60006020828403121561070357600080fd5b815161070e81610450565b9392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073e5761073e610715565b92915050565b8082018082111561073e5761073e610715565b634e487b7160e01b600052603260045260246000fdfea264697066735822122023224e3650ad067c982d57529bddfc83925e8fb3b1ba693117461af05bd8f6fc64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c8063a84173ae11610050578063a84173ae146100ef578063f02fb77414610116578063f398dba81461012c57600080fd5b8063490b7a791461006c5780639f1a308d146100b0575b600080fd5b6100937f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be63b63e800d60e01b81565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100a7565b6100937f000000000000000000000000000000000000000000000000000000000000000081565b61011e609081565b6040519081526020016100a7565b61009361013a3660046104d8565b60008060008060008060008061014f896102aa565b9650965096509650965096509650600063b63e800d60e01b8c8c8a858b8b8a8c6040516024016101869897969594939291906105fb565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051631688f0b960e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631688f0b990610257907f000000000000000000000000000000000000000000000000000000000000000090859088906004016106bf565b6020604051808303816000875af1158015610276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029a91906106f1565b9c9b505050505050505050505050565b600080600080600080606060008851905060008111156103fd5760908110156102f457604051631a64813d60e11b8152609060048201526024810182905260440160405180910390fd5b601489015160288a0151603c8b015160508c015160708d01516090808f0151959d50939b50919950975095509093508111156103fd57600061033760908361072b565b90508067ffffffffffffffff81111561035257610352610409565b6040519080825280601f01601f19166020018201604052801561037c576020820181803683370190505b50925060005b818110156103fa578a610396609083610744565b815181106103a6576103a6610757565b602001015160f81c60f81b8482815181106103c3576103c3610757565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101610382565b50505b50919395979092949650565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561044857610448610409565b604052919050565b6001600160a01b038116811461046557600080fd5b50565b600082601f83011261047957600080fd5b813567ffffffffffffffff81111561049357610493610409565b6104a6601f8201601f191660200161041f565b8181528460208386010111156104bb57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156104ed57600080fd5b833567ffffffffffffffff8082111561050557600080fd5b818601915086601f83011261051957600080fd5b813560208282111561052d5761052d610409565b8160051b61053c82820161041f565b928352848101820192828101908b85111561055657600080fd5b958301955b84871015610580578635925061057083610450565b828252958301959083019061055b565b98505050870135945050604086013591508082111561059e57600080fd5b506105ab86828701610468565b9150509250925092565b6000815180845260005b818110156105db576020818501810151868301820152016105bf565b506000602082860101526020601f19601f83011685010191505092915050565b6101008082528951908201819052600090610120830190602090818d01845b8281101561063f5781516001600160a01b03168552938301939083019060010161061a565b5050505089602084015261065e604084018a6001600160a01b03169052565b828103606084015261067081896105b5565b91505061068860808301876001600160a01b03169052565b6001600160a01b03851660a08301528360c08301526106b260e08301846001600160a01b03169052565b9998505050505050505050565b6001600160a01b03841681526060602082015260006106e160608301856105b5565b9050826040830152949350505050565b60006020828403121561070357600080fd5b815161070e81610450565b9392505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073e5761073e610715565b92915050565b8082018082111561073e5761073e610715565b634e487b7160e01b600052603260045260246000fdfea264697066735822122023224e3650ad067c982d57529bddfc83925e8fb3b1ba693117461af05bd8f6fc64736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.23/GnosisSafeSameAddressMultisig.json b/abis/0.8.23/GnosisSafeSameAddressMultisig.json new file mode 100644 index 00000000..24156688 --- /dev/null +++ b/abis/0.8.23/GnosisSafeSameAddressMultisig.json @@ -0,0 +1,163 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "GnosisSafeSameAddressMultisig", + "sourceName": "contracts/multisigs/GnosisSafeSameAddressMultisig.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_proxyHash", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "IncorrectDataLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + } + ], + "name": "MultisigExecFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "WrongNumOwners", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + } + ], + "name": "WrongOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + } + ], + "name": "WrongThreshold", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "inputs": [], + "name": "DEFAULT_DATA_LENGTH", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "owners", + "type": "address[]" + }, + { + "internalType": "uint256", + "name": "threshold", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxyHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b5060405161088638038061088683398101604081905261002f91610055565b8061004d57604051637c946ed760e01b815260040160405180910390fd5b60805261006e565b60006020828403121561006757600080fd5b5051919050565b6080516107f761008f60003960008181604b015261012701526107f76000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063809cee2f14610046578063f02fb77414610080578063f398dba814610088575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61006d601481565b61009b6100963660046105b7565b6100b3565b6040516001600160a01b039091168152602001610077565b805160009060148110156100ec578251604051631a64813d60e11b81526014600482015260248101919091526044015b60405180910390fd5b601483015191506000826001600160a01b0316803b806020016040519081016040528181526000908060200190933c805190602001209050807f00000000000000000000000000000000000000000000000000000000000000001461016e5760405162a2307960e51b81526001600160a01b03841660048201526024016100e3565b60148211156102d757600061018460148461069d565b905060008167ffffffffffffffff8111156101a1576101a16104c4565b6040519080825280601f01601f1916602001820160405280156101cb576020820181803683370190505b50905060005b8281101561024957866101e56014836106b6565b815181106101f5576101f56106c9565b602001015160f81c60f81b828281518110610212576102126106c9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001016101d1565b506000856001600160a01b03168260405161026491906106df565b6000604051808303816000865af19150503d80600081146102a1576040519150601f19603f3d011682016040523d82523d6000602084013e6102a6565b606091505b50509050806102d357604051632aacb4bd60e21b81526001600160a01b03871660048201526024016100e3565b5050505b6000836001600160a01b031663a0e67e2b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610317573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261033f919081019061070e565b90506000846001600160a01b031663e75235b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a591906107a8565b90508087146103d157604051635372461560e01b815260048101829052602481018890526044016100e3565b87518251811461040157825160405163f720290d60e01b81526004810191909152602481018290526044016100e3565b60005b818110156104b757836001610419838561069d565b610423919061069d565b81518110610433576104336106c9565b60200260200101516001600160a01b03168a8281518110610456576104566106c9565b60200260200101516001600160a01b0316146104af5789818151811061047e5761047e6106c9565b60200260200101516040516374dba67360e01b81526004016100e391906001600160a01b0391909116815260200190565b600101610404565b5050505050509392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610503576105036104c4565b604052919050565b600067ffffffffffffffff821115610525576105256104c4565b5060051b60200190565b6001600160a01b038116811461054457600080fd5b50565b600082601f83011261055857600080fd5b813567ffffffffffffffff811115610572576105726104c4565b610585601f8201601f19166020016104da565b81815284602083860101111561059a57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156105cc57600080fd5b833567ffffffffffffffff808211156105e457600080fd5b818601915086601f8301126105f857600080fd5b8135602061060d6106088361050b565b6104da565b82815260059290921b8401810191818101908a84111561062c57600080fd5b948201945b838610156106535785356106448161052f565b82529482019490820190610631565b975050870135945050604086013591508082111561067057600080fd5b5061067d86828701610547565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b818103818111156106b0576106b0610687565b92915050565b808201808211156106b0576106b0610687565b634e487b7160e01b600052603260045260246000fd5b6000825160005b8181101561070057602081860181015185830152016106e6565b506000920191825250919050565b6000602080838503121561072157600080fd5b825167ffffffffffffffff81111561073857600080fd5b8301601f8101851361074957600080fd5b80516107576106088261050b565b81815260059190911b8201830190838101908783111561077657600080fd5b928401925b8284101561079d57835161078e8161052f565b8252928401929084019061077b565b979650505050505050565b6000602082840312156107ba57600080fd5b505191905056fea264697066735822122061c526595d40f3df0151de1eb5662587584ac2b55b8ca9a13ed4eff77e32e72f64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063809cee2f14610046578063f02fb77414610080578063f398dba814610088575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61006d601481565b61009b6100963660046105b7565b6100b3565b6040516001600160a01b039091168152602001610077565b805160009060148110156100ec578251604051631a64813d60e11b81526014600482015260248101919091526044015b60405180910390fd5b601483015191506000826001600160a01b0316803b806020016040519081016040528181526000908060200190933c805190602001209050807f00000000000000000000000000000000000000000000000000000000000000001461016e5760405162a2307960e51b81526001600160a01b03841660048201526024016100e3565b60148211156102d757600061018460148461069d565b905060008167ffffffffffffffff8111156101a1576101a16104c4565b6040519080825280601f01601f1916602001820160405280156101cb576020820181803683370190505b50905060005b8281101561024957866101e56014836106b6565b815181106101f5576101f56106c9565b602001015160f81c60f81b828281518110610212576102126106c9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001016101d1565b506000856001600160a01b03168260405161026491906106df565b6000604051808303816000865af19150503d80600081146102a1576040519150601f19603f3d011682016040523d82523d6000602084013e6102a6565b606091505b50509050806102d357604051632aacb4bd60e21b81526001600160a01b03871660048201526024016100e3565b5050505b6000836001600160a01b031663a0e67e2b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610317573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261033f919081019061070e565b90506000846001600160a01b031663e75235b86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a591906107a8565b90508087146103d157604051635372461560e01b815260048101829052602481018890526044016100e3565b87518251811461040157825160405163f720290d60e01b81526004810191909152602481018290526044016100e3565b60005b818110156104b757836001610419838561069d565b610423919061069d565b81518110610433576104336106c9565b60200260200101516001600160a01b03168a8281518110610456576104566106c9565b60200260200101516001600160a01b0316146104af5789818151811061047e5761047e6106c9565b60200260200101516040516374dba67360e01b81526004016100e391906001600160a01b0391909116815260200190565b600101610404565b5050505050509392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610503576105036104c4565b604052919050565b600067ffffffffffffffff821115610525576105256104c4565b5060051b60200190565b6001600160a01b038116811461054457600080fd5b50565b600082601f83011261055857600080fd5b813567ffffffffffffffff811115610572576105726104c4565b610585601f8201601f19166020016104da565b81815284602083860101111561059a57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156105cc57600080fd5b833567ffffffffffffffff808211156105e457600080fd5b818601915086601f8301126105f857600080fd5b8135602061060d6106088361050b565b6104da565b82815260059290921b8401810191818101908a84111561062c57600080fd5b948201945b838610156106535785356106448161052f565b82529482019490820190610631565b975050870135945050604086013591508082111561067057600080fd5b5061067d86828701610547565b9150509250925092565b634e487b7160e01b600052601160045260246000fd5b818103818111156106b0576106b0610687565b92915050565b808201808211156106b0576106b0610687565b634e487b7160e01b600052603260045260246000fd5b6000825160005b8181101561070057602081860181015185830152016106e6565b506000920191825250919050565b6000602080838503121561072157600080fd5b825167ffffffffffffffff81111561073857600080fd5b8301601f8101851361074957600080fd5b80516107576106088261050b565b81815260059190911b8201830190838101908783111561077657600080fd5b928401925b8284101561079d57835161078e8161052f565b8252928401929084019061077b565b979650505050505050565b6000602082840312156107ba57600080fd5b505191905056fea264697066735822122061c526595d40f3df0151de1eb5662587584ac2b55b8ca9a13ed4eff77e32e72f64736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.23/OperatorWhitelist.json b/abis/0.8.23/OperatorWhitelist.json new file mode 100644 index 00000000..aa436115 --- /dev/null +++ b/abis/0.8.23/OperatorWhitelist.json @@ -0,0 +1,266 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OperatorWhitelist", + "sourceName": "contracts/utils/OperatorWhitelist.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_serviceRegistry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorsWhitelistCheckSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "operators", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bool[]", + "name": "statuses", + "type": "bool[]" + }, + { + "indexed": false, + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "OperatorsWhitelistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "SetOperatorsCheck", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isOperatorWhitelisted", + "outputs": [ + { + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapServiceIdOperators", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceIdOperatorsCheck", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "setOperatorsCheck", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "operators", + "type": "address[]" + }, + { + "internalType": "bool[]", + "name": "statuses", + "type": "bool[]" + }, + { + "internalType": "bool", + "name": "setCheck", + "type": "bool" + } + ], + "name": "setOperatorsStatuses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a060405234801561001057600080fd5b506040516109da3803806109da83398101604081905261002f91610067565b6001600160a01b0381166100565760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0316608052610097565b60006020828403121561007957600080fd5b81516001600160a01b038116811461009057600080fd5b9392505050565b6080516109146100c66000396000818160fa015281816101b0015281816103b401526104a701526109146000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063bb4f56f011610050578063bb4f56f0146100e2578063cbcf252a146100f5578063ecc4060c1461013457600080fd5b806345131adb1461007757806356a7b6071461008c5780635c2f6ef4146100b4575b600080fd5b61008a6100853660046106bc565b610157565b005b61009f61009a36600461079a565b610398565b60405190151581526020015b60405180910390f35b61009f6100c236600461079a565b600160209081526000928352604080842090915290825290205460ff1681565b61008a6100f03660046107ca565b61048e565b61011c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ab565b61009f6101423660046107f6565b60006020819052908152604090205460ff1681565b8251158061016757508151835114155b1561019757825182516040516308151c1160e41b8152600481019290925260248201526044015b60405180910390fd5b6040516331a9108f60e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156101ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610223919061080f565b90506001600160a01b038116331461025f5760405163521eb56d60e11b81526001600160a01b038216600482015233602482015260440161018e565b6000858152602081905260408120805460ff19168415151790555b845181101561034a5760006001600160a01b03168582815181106102a0576102a0610833565b60200260200101516001600160a01b0316036102cf5760405163d92e233d60e01b815260040160405180910390fd5b8381815181106102e1576102e1610833565b602002602001015160016000888152602001908152602001600020600087848151811061031057610310610833565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010161027a565b5084336001600160a01b03167f468d072a954ba60f48b97590cdedbb50ed040a6c0b7419e7e26e8c30f0d4698986868660405161038993929190610849565b60405180910390a35050505050565b6040516331a9108f60e11b8152600481018390526001906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610427919061080f565b9050826001600160a01b0316816001600160a01b031614158015610459575060008481526020819052604090205460ff165b156104875760008481526001602090815260408083206001600160a01b038716845290915290205460ff1691505b5092915050565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156104f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051a919061080f565b90506001600160a01b03811633146105565760405163521eb56d60e11b81526001600160a01b038216600482015233602482015260440161018e565b60008381526020818152604091829020805460ff19168515159081179091559151918252849133917f23b65c8cb3df8015266b5a426d083d4b0c7ac26d5acba4be838cf8e01626742c910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156105ed576105ed6105ae565b604052919050565b600067ffffffffffffffff82111561060f5761060f6105ae565b5060051b60200190565b6001600160a01b038116811461062e57600080fd5b50565b8035801515811461064157600080fd5b919050565b600082601f83011261065757600080fd5b8135602061066c610667836105f5565b6105c4565b8083825260208201915060208460051b87010193508684111561068e57600080fd5b602086015b848110156106b1576106a481610631565b8352918301918301610693565b509695505050505050565b600080600080608085870312156106d257600080fd5b8435935060208086013567ffffffffffffffff808211156106f257600080fd5b818801915088601f83011261070657600080fd5b8135610714610667826105f5565b81815260059190911b8301840190848101908b83111561073357600080fd5b938501935b8285101561075a57843561074b81610619565b82529385019390850190610738565b97505050604088013592508083111561077257600080fd5b505061078087828801610646565b92505061078f60608601610631565b905092959194509250565b600080604083850312156107ad57600080fd5b8235915060208301356107bf81610619565b809150509250929050565b600080604083850312156107dd57600080fd5b823591506107ed60208401610631565b90509250929050565b60006020828403121561080857600080fd5b5035919050565b60006020828403121561082157600080fd5b815161082c81610619565b9392505050565b634e487b7160e01b600052603260045260246000fd5b606080825284519082018190526000906020906080840190828801845b8281101561088b5781516001600160a01b031684529284019290840190600101610866565b5050508381038285015285518082528683019183019060005b818110156108c25783511515835292840192918401916001016108a4565b5050851515604086015292506108d6915050565b94935050505056fea2646970667358221220ae8ea13d8cf91cfed013e4627907de3b1a62a9543b8e745ba1cebcbd3758261164736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063bb4f56f011610050578063bb4f56f0146100e2578063cbcf252a146100f5578063ecc4060c1461013457600080fd5b806345131adb1461007757806356a7b6071461008c5780635c2f6ef4146100b4575b600080fd5b61008a6100853660046106bc565b610157565b005b61009f61009a36600461079a565b610398565b60405190151581526020015b60405180910390f35b61009f6100c236600461079a565b600160209081526000928352604080842090915290825290205460ff1681565b61008a6100f03660046107ca565b61048e565b61011c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ab565b61009f6101423660046107f6565b60006020819052908152604090205460ff1681565b8251158061016757508151835114155b1561019757825182516040516308151c1160e41b8152600481019290925260248201526044015b60405180910390fd5b6040516331a9108f60e11b8152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156101ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610223919061080f565b90506001600160a01b038116331461025f5760405163521eb56d60e11b81526001600160a01b038216600482015233602482015260440161018e565b6000858152602081905260408120805460ff19168415151790555b845181101561034a5760006001600160a01b03168582815181106102a0576102a0610833565b60200260200101516001600160a01b0316036102cf5760405163d92e233d60e01b815260040160405180910390fd5b8381815181106102e1576102e1610833565b602002602001015160016000888152602001908152602001600020600087848151811061031057610310610833565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010161027a565b5084336001600160a01b03167f468d072a954ba60f48b97590cdedbb50ed040a6c0b7419e7e26e8c30f0d4698986868660405161038993929190610849565b60405180910390a35050505050565b6040516331a9108f60e11b8152600481018390526001906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610403573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610427919061080f565b9050826001600160a01b0316816001600160a01b031614158015610459575060008481526020819052604090205460ff165b156104875760008481526001602090815260408083206001600160a01b038716845290915290205460ff1691505b5092915050565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156104f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051a919061080f565b90506001600160a01b03811633146105565760405163521eb56d60e11b81526001600160a01b038216600482015233602482015260440161018e565b60008381526020818152604091829020805460ff19168515159081179091559151918252849133917f23b65c8cb3df8015266b5a426d083d4b0c7ac26d5acba4be838cf8e01626742c910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156105ed576105ed6105ae565b604052919050565b600067ffffffffffffffff82111561060f5761060f6105ae565b5060051b60200190565b6001600160a01b038116811461062e57600080fd5b50565b8035801515811461064157600080fd5b919050565b600082601f83011261065757600080fd5b8135602061066c610667836105f5565b6105c4565b8083825260208201915060208460051b87010193508684111561068e57600080fd5b602086015b848110156106b1576106a481610631565b8352918301918301610693565b509695505050505050565b600080600080608085870312156106d257600080fd5b8435935060208086013567ffffffffffffffff808211156106f257600080fd5b818801915088601f83011261070657600080fd5b8135610714610667826105f5565b81815260059190911b8301840190848101908b83111561073357600080fd5b938501935b8285101561075a57843561074b81610619565b82529385019390850190610738565b97505050604088013592508083111561077257600080fd5b505061078087828801610646565b92505061078f60608601610631565b905092959194509250565b600080604083850312156107ad57600080fd5b8235915060208301356107bf81610619565b809150509250929050565b600080604083850312156107dd57600080fd5b823591506107ed60208401610631565b90509250929050565b60006020828403121561080857600080fd5b5035919050565b60006020828403121561082157600080fd5b815161082c81610619565b9392505050565b634e487b7160e01b600052603260045260246000fd5b606080825284519082018190526000906020906080840190828801845b8281101561088b5781516001600160a01b031684529284019290840190600101610866565b5050508381038285015285518082528683019183019060005b818110156108c25783511515835292840192918401916001016108a4565b5050851515604086015292506108d6915050565b94935050505056fea2646970667358221220ae8ea13d8cf91cfed013e4627907de3b1a62a9543b8e745ba1cebcbd3758261164736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.23/ServiceManagerToken.json b/abis/0.8.23/ServiceManagerToken.json new file mode 100644 index 00000000..f66f1a7e --- /dev/null +++ b/abis/0.8.23/ServiceManagerToken.json @@ -0,0 +1,1331 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ServiceManagerToken", + "sourceName": "contracts/ServiceManagerToken.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_serviceRegistry", + "type": "address" + }, + { + "internalType": "address", + "name": "_serviceRegistryTokenUtility", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorWhitelist", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "AgentInstanceRegistered", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentInstancesSlotsFilled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "AgentNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentNotInService", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "componentId", + "type": "uint256" + } + ], + "name": "ComponentNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "HashExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "HashNotApproved", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "HashNotValidated", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectAgentBondingValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectRegistrationDepositValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + } + ], + "name": "IncorrectSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OnlyOwnServiceMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorHasNoInstances", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceMustBeInactive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "WrongAgentId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + } + ], + "name": "WrongOperatorAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "state", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "currentThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxThreshold", + "type": "uint256" + } + ], + "name": "WrongThreshold", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroOperatorAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "CreateMultisig", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "OperatorHashApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operatorWhitelist", + "type": "address" + } + ], + "name": "OperatorWhitelistUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "Pause", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "Unpause", + "type": "event" + }, + { + "inputs": [], + "name": "BOND_WRAPPER", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR_TYPE_HASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ETH_TOKEN_ADDRESS", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "REGISTER_AGENTS_TYPE_HASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNBOND_TYPE_HASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "activateRegistration", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "chainId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "internalType": "struct IService.AgentParams[]", + "name": "agentParams", + "type": "tuple[]" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "multisigImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deploy", + "outputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getOperatorRegisterAgentsNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getOperatorUnbondNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "getRegisterAgentsHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "getUnbondHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "isOperatorHashApproved", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "mapOperatorApprovedHashes", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapOperatorRegisterAgentsNonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapOperatorUnbondNonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nameHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "name": "operatorApproveHash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "operatorWhitelist", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + } + ], + "name": "registerAgents", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "registerAgentsWithSignature", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistryTokenUtility", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOperatorWhitelist", + "type": "address" + } + ], + "name": "setOperatorWhitelist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "terminate", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "unbond", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "unbondWithSignature", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "internalType": "struct IService.AgentParams[]", + "name": "agentParams", + "type": "tuple[]" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "update", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "versionHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6101406040523480156200001257600080fd5b5060405162003655380380620036558339810160408190526200003591620001cf565b6040518060400160405280601581526020017f53657276696365204d616e6167657220546f6b656e000000000000000000000081525060405180604001604052806005815260200164312e312e3160d81b81525081600190816200009a9190620002c0565b506002620000a98282620002c0565b50815160208084019190912060c05281519082012060e0524660a0526200013160c0805160e051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201526000910160405160208183030381529060405280519060200120905090565b60805250506001600160a01b03831615806200015457506001600160a01b038216155b15620001735760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03928316610100529082166101205260068054919092166001600160a01b03199182161790915560008054909116331790556200038c565b80516001600160a01b0381168114620001ca57600080fd5b919050565b600080600060608486031215620001e557600080fd5b620001f084620001b2565b92506200020060208501620001b2565b91506200021060408501620001b2565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200024457607f821691505b6020821081036200026557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002bb576000816000526020600020601f850160051c81016020861015620002965750805b601f850160051c820191505b81811015620002b757828155600101620002a2565b5050505b505050565b81516001600160401b03811115620002dc57620002dc62000219565b620002f481620002ed84546200022f565b846200026b565b602080601f8311600181146200032c5760008415620003135750858301515b600019600386901b1c1916600185901b178555620002b7565b600085815260208120601f198616915b828110156200035d578886015182559484019460019091019084016200033c565b50858210156200037c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e05161010051610120516131ae620004a76000396000818161042001528181610bc301528181610dcb01528181611030015281816111ec015281816115320152818161199901528181611bf701528181611d3201526121e9015260008181610749015281816109c401528181610aa301528181610c4701528181610d0f01528181610e5701528181610ee8015281816110c80152818161127d01528181611318015281816115e0015281816118fe01528181611b5b01528181611db801528181611e8001528181611f9a015261214f01526000818161033c01526122d201526000818161083901526122aa01526000818161069901526122560152600081816108a1015261232b01526131ae6000f3fe6080604052600436106102a05760003560e01c8063757b11561161016e578063cbcf252a116100cb578063e5da07531161007f578063f172a4ce11610064578063f172a4ce14610827578063f5dcb7bb1461085b578063f698da251461088f57600080fd5b8063e5da0753146107f2578063ed24911d1461081257600080fd5b8063d03ca40a116100b0578063d03ca40a1461078b578063dc1d95251461079e578063e42cdd7c146107d257600080fd5b8063cbcf252a14610737578063cbf994f81461076b57600080fd5b80639488791111610122578063a2e2ad7e11610107578063a2e2ad7e146106bb578063a6a7187f146106f7578063a6f9dae11461071757600080fd5b806394887911146106535780639a8a05921461068757600080fd5b80638456cb59116101535780638456cb59146105f15780638a39fa16146106065780638da5cb5b1461063357600080fd5b8063757b1156146105b15780637a828b28146105d157600080fd5b806328f223421161021c5780635405ecb9116101d057806356bda507116101b557806356bda50714610543578063599be46f146105705780635c975abb1461059057600080fd5b80635405ecb9146104f257806354fd4d501461052e57600080fd5b80633f4ba83a116102015780633f4ba83a1461049d57806341b60677146104b25780634d5a5827146104df57600080fd5b806328f22342146104425780633af5d04e1461046257600080fd5b80631878d1f11161027357806321561bfc1161025857806321561bfc146103b757806327de9e32146103d7578063287140511461040e57600080fd5b80631878d1f11461036c5780631ee81fb51461039457600080fd5b806306fdde03146102a557806307a3e0a8146102d05780630d0d57a8146102f2578063152b5c0f1461032a575b600080fd5b3480156102b157600080fd5b506102ba6108c3565b6040516102c79190612608565b60405180910390f35b3480156102dc57600080fd5b506102f06102eb366004612622565b610951565b005b3480156102fe57600080fd5b5061031261030d366004612733565b6109aa565b6040516001600160a01b0390911681526020016102c7565b34801561033657600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016102c7565b34801561037857600080fd5b5061031273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b6103a76103a236600461289c565b610a80565b60405190151581526020016102c7565b3480156103c357600080fd5b50600654610312906001600160a01b031681565b3480156103e357600080fd5b506103f76103f2366004612622565b610da0565b6040805192151583526020830191909152016102c7565b34801561041a57600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b34801561044e57600080fd5b506103f761045d366004612941565b610ee1565b34801561046e57600080fd5b506103a761047d366004612984565b600560209081526000928352604080842090915290825290205460ff1681565b3480156104a957600080fd5b506102f0611152565b3480156104be57600080fd5b5061035e6104cd366004612622565b60046020526000908152604090205481565b6103a76104ed366004612622565b6111c9565b3480156104fe57600080fd5b5061035e61050d366004612984565b60a01b6001600160a01b039091161760009081526003602052604090205490565b34801561053a57600080fd5b506102ba611398565b34801561054f57600080fd5b50610558600181565b6040516001600160601b0390911681526020016102c7565b34801561057c57600080fd5b506102f061058b3660046129b0565b6113a5565b34801561059c57600080fd5b506000546103a790600160a01b900460ff1681565b3480156105bd57600080fd5b5061035e6105cc3660046129cd565b61143c565b3480156105dd57600080fd5b506103f76105ec366004612622565b61152b565b3480156105fd57600080fd5b506102f0611617565b34801561061257600080fd5b5061035e610621366004612622565b60036020526000908152604090205481565b34801561063f57600080fd5b50600054610312906001600160a01b031681565b34801561065f57600080fd5b5061035e7f92b2008d2a99f26809ac9d1989fe92334aa84124767331997ba0eec16050ecf481565b34801561069357600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106c757600080fd5b5061035e6106d6366004612984565b60a01b6001600160a01b039091161760009081526004602052604090205490565b34801561070357600080fd5b5061035e610712366004612a68565b611694565b34801561072357600080fd5b506102f06107323660046129b0565b611750565b34801561074357600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b34801561077757600080fd5b506103a7610786366004612b4a565b61180c565b6103a7610799366004612be3565b611c71565b3480156107aa57600080fd5b5061035e7fde64b4c9fac43e1615e938b03573b078604f57b4d2e78d3a27d7b20ba017e12681565b3480156107de57600080fd5b5061035e6107ed366004612c46565b611f0b565b3480156107fe57600080fd5b506103a761080d366004612984565b612224565b34801561081e57600080fd5b5061035e612252565b34801561083357600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561086757600080fd5b5061035e7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b34801561089b57600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b600180546108d090612ce8565b80601f01602080910402602001604051908101604052809291908181526020018280546108fc90612ce8565b80156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b505050505081565b336000818152600560209081526040808320858452825291829020805460ff1916600117905590518381527f85eb1f050732417c0566422b6004a6c5cbded9ded1a406de04060719af52a13a910160405180910390a250565b60405163f908bc7760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f908bc77906109ff903390889088908890600401612d1c565b6020604051808303816000875af1158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190612d4e565b6040519091506001600160a01b038216907fec97633905b1dbe9773a7536e9a986dcf89803e1193934b7b6d76587c68beb4090600090a29392505050565b6040516331a9108f60e11b81526004810185905260009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0e9190612d4e565b9050336001600160a01b03821614610b4f5760405163521eb56d60e11b81523360048201526001600160a01b03821660248201526044015b60405180910390fd5b60a086901b6001600160a01b0388161760008181526004602052604081205490610b7d8a858b8b8b8761143c565b9050610b8a8a828861234d565b81610b9481612d81565b60008581526004602081905260408083208490555163dc4f8bc560e01b81529295509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163dc4f8bc591610bfa918f918f918e9101612ddc565b6020604051808303816000875af1158015610c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3d9190612e1d565b90508015610cf8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff7672460016001600160601b03168b51610c8b9190612e38565b8d8d8d8d6040518663ffffffff1660e01b8152600401610cae9493929190612e89565b60206040518083038185885af1158015610ccc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cf19190612e1d565b9550610d92565b6040516337fdd9c960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dff76724903490610d4c908f908f908f908f90600401612e89565b60206040518083038185885af1158015610d6a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d8f9190612e1d565b95505b505050505095945050505050565b60405163161e984960e31b815233600482015260248101829052600090819081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0f4c248906044016020604051808303816000875af1158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e389190612ece565b6040516352e82ce560e11b8152336004820152602481018690529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a5d059ca906044015b60408051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc9190612ee7565b90935091508015610edb578091505b50915091565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e866040518263ffffffff1660e01b8152600401610f3491815260200190565b602060405180830381865afa158015610f51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f759190612d4e565b9050336001600160a01b03821614610fb15760405163521eb56d60e11b81523360048201526001600160a01b0382166024820152604401610b46565b60a085901b6001600160a01b0387161760008181526003602052604081205490610fdd89858a85611694565b9050610fea89828961234d565b81610ff481612d81565b6000858152600360205260408082208390555163161e984960e31b81526001600160a01b038d81166004830152602482018d90529295509092507f00000000000000000000000000000000000000000000000000000000000000009091169063b0f4c248906044016020604051808303816000875af115801561107b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109f9190612ece565b6040516352e82ce560e11b81526001600160a01b038c81166004830152602482018c90529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a5d059ca9060440160408051808303816000875af1158015611112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111369190612ee7565b90975095508015611145578095505b5050505050935093915050565b6000546001600160a01b031633146111925760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b46565b6000805460ff60a01b1916815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b60405163542db44960e01b81526004810182905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063542db449906024016020604051808303816000875af1158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190612e1d565b905080156112fc5760405163388fdbed60e21b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e23f6fb49060019060440160206040518083038185885af11580156112d0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112f59190612e1d565b9150611392565b60405163388fdbed60e21b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e23f6fb490349060440160206040518083038185885af115801561136a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061138f9190612e1d565b91505b50919050565b600280546108d090612ce8565b6000546001600160a01b031633146113e55760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b46565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517ff8e76e8a7c35558598a944d509f1ed32b104e77b1098ef1dfa5b97b86b09df8f90600090a250565b6000611446612252565b7fde64b4c9fac43e1615e938b03573b078604f57b4d2e78d3a27d7b20ba017e126888888888860405160200161147d929190612f13565b60408051601f198184030181528282528051602091820120908301969096526001600160a01b0394851690820152929091166060830152608082015260a081019190915260c0810184905260e0016040516020818303038152906040528051906020012060405160200161150892919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090505b9695505050505050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166325e1afc3856040518263ffffffff1660e01b815260040161157e91815260200190565b6020604051808303816000875af115801561159d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c19190612ece565b60405163ccc9305d60e01b8152336004820152602481018690529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ccc9305d90604401610e8a565b6000546001600160a01b031633146116575760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b46565b6000805460ff60a01b1916600160a01b17815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b600061169e612252565b604080517f92b2008d2a99f26809ac9d1989fe92334aa84124767331997ba0eec16050ecf460208201526001600160a01b038089169282019290925290861660608201526080810185905260a0810184905260c0016040516020818303038152906040528051906020012060405160200161173092919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050949350505050565b6000546001600160a01b031633146117905760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b46565b6001600160a01b0381166117b75760405163d92e233d60e01b815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b60006001600160a01b0387166118355760405163d92e233d60e01b815260040160405180910390fd5b835173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03891601611a025760005b818110156118e657600086828151811061187b5761187b612f38565b60200260200101516000015163ffffffff161180156118c057508581815181106118a7576118a7612f38565b6020026020010151602001516001600160601b03166000145b156118de57604051637c946ed760e01b815260040160405180910390fd5b60010161185f565b5060405163197f329f60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbf994f89061193d9033908b908b908b908b908b90600401612f99565b6020604051808303816000875af115801561195c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119809190612e1d565b604051630be6cc4b60e31b8152600481018590529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635f36625890602401600060405180830381600087803b1580156119e557600080fd5b505af11580156119f9573d6000803e3d6000fd5b50505050611c66565b60008167ffffffffffffffff811115611a1d57611a1d612653565b604051908082528060200260200182016040528015611a46578160200160208202803683370190505b50905060005b82811015611b43576000878281518110611a6857611a68612f38565b60200260200101516000015163ffffffff161115611b3b57868181518110611a9257611a92612f38565b6020026020010151602001516001600160601b0316600003611ac757604051637c946ed760e01b815260040160405180910390fd5b868181518110611ad957611ad9612f38565b6020026020010151602001516001600160601b0316828281518110611b0057611b00612f38565b6020026020010181815250506001878281518110611b2057611b20612f38565b6020908102919091018101516001600160601b039092169101525b600101611a4c565b5060405163197f329f60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbf994f890611b9a9033908c908c908c908c908c90600401612f99565b6020604051808303816000875af1158015611bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdd9190612e1d565b6040516338f3a6a160e21b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e3ce9a8490611c329087908d908c908790600401612fef565b600060405180830381600087803b158015611c4c57600080fd5b505af1158015611c60573d6000803e3d6000fd5b50505050505b509695505050505050565b6006546000906001600160a01b031615611d18576006546040516356a7b60760e01b8152600481018690523360248201526001600160a01b03909116906356a7b60790604401602060405180830381865afa158015611cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf89190612e1d565b611d18576040516322ddebd960e21b815260048101859052602401610b46565b60405163dc4f8bc560e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dc4f8bc590611d6b90339089908890600401612ddc565b6020604051808303816000875af1158015611d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dae9190612e1d565b90508015611e69577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff7672460016001600160601b03168651611dfc9190612e38565b338888886040518663ffffffff1660e01b8152600401611e1f9493929190612e89565b60206040518083038185885af1158015611e3d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e629190612e1d565b9150611f03565b6040516337fdd9c960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dff76724903490611ebd9033908a908a908a90600401612e89565b60206040518083038185885af1158015611edb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f009190612e1d565b91505b509392505050565b60008054600160a01b900460ff1615611f37576040516313d0ff5960e31b815260040160405180910390fd5b6001600160a01b038616611f5e5760405163d92e233d60e01b815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038716016120215760405163fbdeb3d760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fbdeb3d790611fd7908a90899089908990899060040161305c565b6020604051808303816000875af1158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190612ece565b9050611521565b825160008167ffffffffffffffff81111561203e5761203e612653565b604051908082528060200260200182016040528015612067578160200160208202803683370190505b50905060005b828110156121375785818151811061208757612087612f38565b6020026020010151602001516001600160601b03166000036120bc57604051637c946ed760e01b815260040160405180910390fd5b8581815181106120ce576120ce612f38565b6020026020010151602001516001600160601b03168282815181106120f5576120f5612f38565b602002602001018181525050600186828151811061211557612115612f38565b6020908102919091018101516001600160601b0390921691015260010161206d565b5060405163fbdeb3d760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fbdeb3d79061218c908c908b908b908b908b9060040161305c565b6020604051808303816000875af11580156121ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cf9190612ece565b6040516338f3a6a160e21b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e3ce9a8490611c329086908c908b908790600401612fef565b6001600160a01b038216600090815260056020908152604080832084845290915290205460ff165b92915050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461232857612323604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0383166123745760405163e63f571f60e01b815260040160405180910390fd5b805160411461239d578051604051631d9f5a5f60e01b8152610b469183916041906004016130af565b6000816040815181106123b2576123b2612f38565b016020015160f81c90506004811080156123d457506001600160a01b0384163b155b156123e7576123e4601b826130d4565b90505b60208201516040830151600060ff84166004036124bc5750604051630b135d3f60e11b80825283916001600160a01b03831690631626ba7e90612430908a908a906004016130ed565b602060405180830381865afa15801561244d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612471919061310e565b7fffffffff0000000000000000000000000000000000000000000000000000000016146124b75780868660405163694d54dd60e01b8152600401610b4693929190613150565b612574565b8360ff1660050361251457506001600160a01b0382166000908152600560209081526040808320888452909152902054829060ff166124b7578086866040516312cf832560e01b8152600401610b4693929190613150565b60408051600081526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015612567573d6000803e3d6000fd5b5050506020604051035190505b866001600160a01b0316816001600160a01b0316146125b95760405163a806216d60e01b81526001600160a01b03808316600483015288166024820152604401610b46565b50505050505050565b6000815180845260005b818110156125e8576020818501810151868301820152016125cc565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061261b60208301846125c2565b9392505050565b60006020828403121561263457600080fd5b5035919050565b6001600160a01b038116811461265057600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561268c5761268c612653565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156126bb576126bb612653565b604052919050565b600082601f8301126126d457600080fd5b813567ffffffffffffffff8111156126ee576126ee612653565b612701601f8201601f1916602001612692565b81815284602083860101111561271657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561274857600080fd5b83359250602084013561275a8161263b565b9150604084013567ffffffffffffffff81111561277657600080fd5b612782868287016126c3565b9150509250925092565b600067ffffffffffffffff8211156127a6576127a6612653565b5060051b60200190565b600082601f8301126127c157600080fd5b813560206127d66127d18361278c565b612692565b8083825260208201915060208460051b8701019350868411156127f857600080fd5b602086015b84811015611c665780356128108161263b565b83529183019183016127fd565b803563ffffffff8116811461283157600080fd5b919050565b600082601f83011261284757600080fd5b813560206128576127d18361278c565b8083825260208201915060208460051b87010193508684111561287957600080fd5b602086015b84811015611c665761288f8161281d565b835291830191830161287e565b600080600080600060a086880312156128b457600080fd5b85356128bf8161263b565b945060208601359350604086013567ffffffffffffffff808211156128e357600080fd5b6128ef89838a016127b0565b9450606088013591508082111561290557600080fd5b61291189838a01612836565b9350608088013591508082111561292757600080fd5b50612934888289016126c3565b9150509295509295909350565b60008060006060848603121561295657600080fd5b83356129618161263b565b925060208401359150604084013567ffffffffffffffff81111561277657600080fd5b6000806040838503121561299757600080fd5b82356129a28161263b565b946020939093013593505050565b6000602082840312156129c257600080fd5b813561261b8161263b565b60008060008060008060c087890312156129e657600080fd5b86356129f18161263b565b95506020870135612a018161263b565b945060408701359350606087013567ffffffffffffffff80821115612a2557600080fd5b612a318a838b016127b0565b94506080890135915080821115612a4757600080fd5b50612a5489828a01612836565b92505060a087013590509295509295509295565b60008060008060808587031215612a7e57600080fd5b8435612a898161263b565b93506020850135612a998161263b565b93969395505050506040820135916060013590565b600082601f830112612abf57600080fd5b81356020612acf6127d18361278c565b82815260069290921b84018101918181019086841115612aee57600080fd5b8286015b84811015611c665760408189031215612b0b5760008081fd5b612b13612669565b612b1c8261281d565b8152848201356001600160601b0381168114612b385760008081fd5b81860152835291830191604001612af2565b60008060008060008060c08789031215612b6357600080fd5b8635612b6e8161263b565b955060208701359450604087013567ffffffffffffffff80821115612b9257600080fd5b612b9e8a838b01612836565b95506060890135915080821115612bb457600080fd5b50612bc189828a01612aae565b935050612bd06080880161281d565b915060a087013590509295509295509295565b600080600060608486031215612bf857600080fd5b83359250602084013567ffffffffffffffff80821115612c1757600080fd5b612c23878388016127b0565b93506040860135915080821115612c3957600080fd5b5061278286828701612836565b60008060008060008060c08789031215612c5f57600080fd5b8635612c6a8161263b565b95506020870135612c7a8161263b565b945060408701359350606087013567ffffffffffffffff80821115612c9e57600080fd5b612caa8a838b01612836565b94506080890135915080821115612cc057600080fd5b50612ccd89828a01612aae565b925050612cdc60a0880161281d565b90509295509295509295565b600181811c90821680612cfc57607f821691505b60208210810361139257634e487b7160e01b600052602260045260246000fd5b60006001600160a01b0380871683528560208401528085166040840152506080606083015261152160808301846125c2565b600060208284031215612d6057600080fd5b815161261b8161263b565b634e487b7160e01b600052601160045260246000fd5b600060018201612d9357612d93612d6b565b5060010190565b60008151808452602080850194506020840160005b83811015612dd157815163ffffffff1687529582019590820190600101612daf565b509495945050505050565b6001600160a01b0384168152826020820152606060408201526000612e046060830184612d9a565b95945050505050565b8051801515811461283157600080fd5b600060208284031215612e2f57600080fd5b61261b82612e0d565b808202811582820484141761224c5761224c612d6b565b60008151808452602080850194506020840160005b83811015612dd15781516001600160a01b031687529582019590820190600101612e64565b6001600160a01b0385168152836020820152608060408201526000612eb16080830185612e4f565b8281036060840152612ec38185612d9a565b979650505050505050565b600060208284031215612ee057600080fd5b5051919050565b60008060408385031215612efa57600080fd5b612f0383612e0d565b9150602083015190509250929050565b604081526000612f266040830185612e4f565b8281036020840152611f008185612d9a565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b83811015612dd1578151805163ffffffff1688528301516001600160601b03168388015260409096019590820190600101612f63565b6001600160a01b038716815285602082015260c060408201526000612fc160c0830187612d9a565b8281036060840152612fd38187612f4e565b63ffffffff959095166080840152505060a00152949350505050565b848152600060206001600160a01b0386166020840152608060408401526130196080840186612d9a565b83810360608501528451808252602080870192019060005b8181101561304d57835183529284019291840191600101613031565b50909998505050505050505050565b6001600160a01b038616815284602082015260a06040820152600061308460a0830186612d9a565b82810360608401526130968186612f4e565b91505063ffffffff831660808301529695505050505050565b6060815260006130c260608301866125c2565b60208301949094525060400152919050565b60ff818116838216019081111561224c5761224c612d6b565b82815260406020820152600061310660408301846125c2565b949350505050565b60006020828403121561312057600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461261b57600080fd5b6001600160a01b0384168152826020820152606060408201526000612e0460608301846125c256fea2646970667358221220f8a07ba7c24022c116c55e84fbff8b47ad2bb8efd4a98f2fb531b0dde50c325c64736f6c63430008170033", + "deployedBytecode": "0x6080604052600436106102a05760003560e01c8063757b11561161016e578063cbcf252a116100cb578063e5da07531161007f578063f172a4ce11610064578063f172a4ce14610827578063f5dcb7bb1461085b578063f698da251461088f57600080fd5b8063e5da0753146107f2578063ed24911d1461081257600080fd5b8063d03ca40a116100b0578063d03ca40a1461078b578063dc1d95251461079e578063e42cdd7c146107d257600080fd5b8063cbcf252a14610737578063cbf994f81461076b57600080fd5b80639488791111610122578063a2e2ad7e11610107578063a2e2ad7e146106bb578063a6a7187f146106f7578063a6f9dae11461071757600080fd5b806394887911146106535780639a8a05921461068757600080fd5b80638456cb59116101535780638456cb59146105f15780638a39fa16146106065780638da5cb5b1461063357600080fd5b8063757b1156146105b15780637a828b28146105d157600080fd5b806328f223421161021c5780635405ecb9116101d057806356bda507116101b557806356bda50714610543578063599be46f146105705780635c975abb1461059057600080fd5b80635405ecb9146104f257806354fd4d501461052e57600080fd5b80633f4ba83a116102015780633f4ba83a1461049d57806341b60677146104b25780634d5a5827146104df57600080fd5b806328f22342146104425780633af5d04e1461046257600080fd5b80631878d1f11161027357806321561bfc1161025857806321561bfc146103b757806327de9e32146103d7578063287140511461040e57600080fd5b80631878d1f11461036c5780631ee81fb51461039457600080fd5b806306fdde03146102a557806307a3e0a8146102d05780630d0d57a8146102f2578063152b5c0f1461032a575b600080fd5b3480156102b157600080fd5b506102ba6108c3565b6040516102c79190612608565b60405180910390f35b3480156102dc57600080fd5b506102f06102eb366004612622565b610951565b005b3480156102fe57600080fd5b5061031261030d366004612733565b6109aa565b6040516001600160a01b0390911681526020016102c7565b34801561033657600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016102c7565b34801561037857600080fd5b5061031273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b6103a76103a236600461289c565b610a80565b60405190151581526020016102c7565b3480156103c357600080fd5b50600654610312906001600160a01b031681565b3480156103e357600080fd5b506103f76103f2366004612622565b610da0565b6040805192151583526020830191909152016102c7565b34801561041a57600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b34801561044e57600080fd5b506103f761045d366004612941565b610ee1565b34801561046e57600080fd5b506103a761047d366004612984565b600560209081526000928352604080842090915290825290205460ff1681565b3480156104a957600080fd5b506102f0611152565b3480156104be57600080fd5b5061035e6104cd366004612622565b60046020526000908152604090205481565b6103a76104ed366004612622565b6111c9565b3480156104fe57600080fd5b5061035e61050d366004612984565b60a01b6001600160a01b039091161760009081526003602052604090205490565b34801561053a57600080fd5b506102ba611398565b34801561054f57600080fd5b50610558600181565b6040516001600160601b0390911681526020016102c7565b34801561057c57600080fd5b506102f061058b3660046129b0565b6113a5565b34801561059c57600080fd5b506000546103a790600160a01b900460ff1681565b3480156105bd57600080fd5b5061035e6105cc3660046129cd565b61143c565b3480156105dd57600080fd5b506103f76105ec366004612622565b61152b565b3480156105fd57600080fd5b506102f0611617565b34801561061257600080fd5b5061035e610621366004612622565b60036020526000908152604090205481565b34801561063f57600080fd5b50600054610312906001600160a01b031681565b34801561065f57600080fd5b5061035e7f92b2008d2a99f26809ac9d1989fe92334aa84124767331997ba0eec16050ecf481565b34801561069357600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106c757600080fd5b5061035e6106d6366004612984565b60a01b6001600160a01b039091161760009081526004602052604090205490565b34801561070357600080fd5b5061035e610712366004612a68565b611694565b34801561072357600080fd5b506102f06107323660046129b0565b611750565b34801561074357600080fd5b506103127f000000000000000000000000000000000000000000000000000000000000000081565b34801561077757600080fd5b506103a7610786366004612b4a565b61180c565b6103a7610799366004612be3565b611c71565b3480156107aa57600080fd5b5061035e7fde64b4c9fac43e1615e938b03573b078604f57b4d2e78d3a27d7b20ba017e12681565b3480156107de57600080fd5b5061035e6107ed366004612c46565b611f0b565b3480156107fe57600080fd5b506103a761080d366004612984565b612224565b34801561081e57600080fd5b5061035e612252565b34801561083357600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561086757600080fd5b5061035e7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b34801561089b57600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b600180546108d090612ce8565b80601f01602080910402602001604051908101604052809291908181526020018280546108fc90612ce8565b80156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b505050505081565b336000818152600560209081526040808320858452825291829020805460ff1916600117905590518381527f85eb1f050732417c0566422b6004a6c5cbded9ded1a406de04060719af52a13a910160405180910390a250565b60405163f908bc7760e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f908bc77906109ff903390889088908890600401612d1c565b6020604051808303816000875af1158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190612d4e565b6040519091506001600160a01b038216907fec97633905b1dbe9773a7536e9a986dcf89803e1193934b7b6d76587c68beb4090600090a29392505050565b6040516331a9108f60e11b81526004810185905260009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0e9190612d4e565b9050336001600160a01b03821614610b4f5760405163521eb56d60e11b81523360048201526001600160a01b03821660248201526044015b60405180910390fd5b60a086901b6001600160a01b0388161760008181526004602052604081205490610b7d8a858b8b8b8761143c565b9050610b8a8a828861234d565b81610b9481612d81565b60008581526004602081905260408083208490555163dc4f8bc560e01b81529295509092506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163dc4f8bc591610bfa918f918f918e9101612ddc565b6020604051808303816000875af1158015610c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3d9190612e1d565b90508015610cf8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff7672460016001600160601b03168b51610c8b9190612e38565b8d8d8d8d6040518663ffffffff1660e01b8152600401610cae9493929190612e89565b60206040518083038185885af1158015610ccc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cf19190612e1d565b9550610d92565b6040516337fdd9c960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dff76724903490610d4c908f908f908f908f90600401612e89565b60206040518083038185885af1158015610d6a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d8f9190612e1d565b95505b505050505095945050505050565b60405163161e984960e31b815233600482015260248101829052600090819081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0f4c248906044016020604051808303816000875af1158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e389190612ece565b6040516352e82ce560e11b8152336004820152602481018690529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a5d059ca906044015b60408051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc9190612ee7565b90935091508015610edb578091505b50915091565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e866040518263ffffffff1660e01b8152600401610f3491815260200190565b602060405180830381865afa158015610f51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f759190612d4e565b9050336001600160a01b03821614610fb15760405163521eb56d60e11b81523360048201526001600160a01b0382166024820152604401610b46565b60a085901b6001600160a01b0387161760008181526003602052604081205490610fdd89858a85611694565b9050610fea89828961234d565b81610ff481612d81565b6000858152600360205260408082208390555163161e984960e31b81526001600160a01b038d81166004830152602482018d90529295509092507f00000000000000000000000000000000000000000000000000000000000000009091169063b0f4c248906044016020604051808303816000875af115801561107b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109f9190612ece565b6040516352e82ce560e11b81526001600160a01b038c81166004830152602482018c90529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a5d059ca9060440160408051808303816000875af1158015611112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111369190612ee7565b90975095508015611145578095505b5050505050935093915050565b6000546001600160a01b031633146111925760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b46565b6000805460ff60a01b1916815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b60405163542db44960e01b81526004810182905260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063542db449906024016020604051808303816000875af1158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190612e1d565b905080156112fc5760405163388fdbed60e21b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e23f6fb49060019060440160206040518083038185885af11580156112d0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112f59190612e1d565b9150611392565b60405163388fdbed60e21b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e23f6fb490349060440160206040518083038185885af115801561136a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061138f9190612e1d565b91505b50919050565b600280546108d090612ce8565b6000546001600160a01b031633146113e55760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b46565b6006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517ff8e76e8a7c35558598a944d509f1ed32b104e77b1098ef1dfa5b97b86b09df8f90600090a250565b6000611446612252565b7fde64b4c9fac43e1615e938b03573b078604f57b4d2e78d3a27d7b20ba017e126888888888860405160200161147d929190612f13565b60408051601f198184030181528282528051602091820120908301969096526001600160a01b0394851690820152929091166060830152608082015260a081019190915260c0810184905260e0016040516020818303038152906040528051906020012060405160200161150892919061190160f01b81526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090505b9695505050505050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166325e1afc3856040518263ffffffff1660e01b815260040161157e91815260200190565b6020604051808303816000875af115801561159d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c19190612ece565b60405163ccc9305d60e01b8152336004820152602481018690529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ccc9305d90604401610e8a565b6000546001600160a01b031633146116575760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b46565b6000805460ff60a01b1916600160a01b17815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b600061169e612252565b604080517f92b2008d2a99f26809ac9d1989fe92334aa84124767331997ba0eec16050ecf460208201526001600160a01b038089169282019290925290861660608201526080810185905260a0810184905260c0016040516020818303038152906040528051906020012060405160200161173092919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050949350505050565b6000546001600160a01b031633146117905760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610b46565b6001600160a01b0381166117b75760405163d92e233d60e01b815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b60006001600160a01b0387166118355760405163d92e233d60e01b815260040160405180910390fd5b835173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03891601611a025760005b818110156118e657600086828151811061187b5761187b612f38565b60200260200101516000015163ffffffff161180156118c057508581815181106118a7576118a7612f38565b6020026020010151602001516001600160601b03166000145b156118de57604051637c946ed760e01b815260040160405180910390fd5b60010161185f565b5060405163197f329f60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbf994f89061193d9033908b908b908b908b908b90600401612f99565b6020604051808303816000875af115801561195c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119809190612e1d565b604051630be6cc4b60e31b8152600481018590529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635f36625890602401600060405180830381600087803b1580156119e557600080fd5b505af11580156119f9573d6000803e3d6000fd5b50505050611c66565b60008167ffffffffffffffff811115611a1d57611a1d612653565b604051908082528060200260200182016040528015611a46578160200160208202803683370190505b50905060005b82811015611b43576000878281518110611a6857611a68612f38565b60200260200101516000015163ffffffff161115611b3b57868181518110611a9257611a92612f38565b6020026020010151602001516001600160601b0316600003611ac757604051637c946ed760e01b815260040160405180910390fd5b868181518110611ad957611ad9612f38565b6020026020010151602001516001600160601b0316828281518110611b0057611b00612f38565b6020026020010181815250506001878281518110611b2057611b20612f38565b6020908102919091018101516001600160601b039092169101525b600101611a4c565b5060405163197f329f60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbf994f890611b9a9033908c908c908c908c908c90600401612f99565b6020604051808303816000875af1158015611bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdd9190612e1d565b6040516338f3a6a160e21b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e3ce9a8490611c329087908d908c908790600401612fef565b600060405180830381600087803b158015611c4c57600080fd5b505af1158015611c60573d6000803e3d6000fd5b50505050505b509695505050505050565b6006546000906001600160a01b031615611d18576006546040516356a7b60760e01b8152600481018690523360248201526001600160a01b03909116906356a7b60790604401602060405180830381865afa158015611cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf89190612e1d565b611d18576040516322ddebd960e21b815260048101859052602401610b46565b60405163dc4f8bc560e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dc4f8bc590611d6b90339089908890600401612ddc565b6020604051808303816000875af1158015611d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dae9190612e1d565b90508015611e69577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff7672460016001600160601b03168651611dfc9190612e38565b338888886040518663ffffffff1660e01b8152600401611e1f9493929190612e89565b60206040518083038185885af1158015611e3d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e629190612e1d565b9150611f03565b6040516337fdd9c960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dff76724903490611ebd9033908a908a908a90600401612e89565b60206040518083038185885af1158015611edb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f009190612e1d565b91505b509392505050565b60008054600160a01b900460ff1615611f37576040516313d0ff5960e31b815260040160405180910390fd5b6001600160a01b038616611f5e5760405163d92e233d60e01b815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038716016120215760405163fbdeb3d760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fbdeb3d790611fd7908a90899089908990899060040161305c565b6020604051808303816000875af1158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190612ece565b9050611521565b825160008167ffffffffffffffff81111561203e5761203e612653565b604051908082528060200260200182016040528015612067578160200160208202803683370190505b50905060005b828110156121375785818151811061208757612087612f38565b6020026020010151602001516001600160601b03166000036120bc57604051637c946ed760e01b815260040160405180910390fd5b8581815181106120ce576120ce612f38565b6020026020010151602001516001600160601b03168282815181106120f5576120f5612f38565b602002602001018181525050600186828151811061211557612115612f38565b6020908102919091018101516001600160601b0390921691015260010161206d565b5060405163fbdeb3d760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fbdeb3d79061218c908c908b908b908b908b9060040161305c565b6020604051808303816000875af11580156121ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cf9190612ece565b6040516338f3a6a160e21b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e3ce9a8490611c329086908c908b908790600401612fef565b6001600160a01b038216600090815260056020908152604080832084845290915290205460ff165b92915050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461232857612323604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0383166123745760405163e63f571f60e01b815260040160405180910390fd5b805160411461239d578051604051631d9f5a5f60e01b8152610b469183916041906004016130af565b6000816040815181106123b2576123b2612f38565b016020015160f81c90506004811080156123d457506001600160a01b0384163b155b156123e7576123e4601b826130d4565b90505b60208201516040830151600060ff84166004036124bc5750604051630b135d3f60e11b80825283916001600160a01b03831690631626ba7e90612430908a908a906004016130ed565b602060405180830381865afa15801561244d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612471919061310e565b7fffffffff0000000000000000000000000000000000000000000000000000000016146124b75780868660405163694d54dd60e01b8152600401610b4693929190613150565b612574565b8360ff1660050361251457506001600160a01b0382166000908152600560209081526040808320888452909152902054829060ff166124b7578086866040516312cf832560e01b8152600401610b4693929190613150565b60408051600081526020810180835288905260ff861691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015612567573d6000803e3d6000fd5b5050506020604051035190505b866001600160a01b0316816001600160a01b0316146125b95760405163a806216d60e01b81526001600160a01b03808316600483015288166024820152604401610b46565b50505050505050565b6000815180845260005b818110156125e8576020818501810151868301820152016125cc565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061261b60208301846125c2565b9392505050565b60006020828403121561263457600080fd5b5035919050565b6001600160a01b038116811461265057600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561268c5761268c612653565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156126bb576126bb612653565b604052919050565b600082601f8301126126d457600080fd5b813567ffffffffffffffff8111156126ee576126ee612653565b612701601f8201601f1916602001612692565b81815284602083860101111561271657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561274857600080fd5b83359250602084013561275a8161263b565b9150604084013567ffffffffffffffff81111561277657600080fd5b612782868287016126c3565b9150509250925092565b600067ffffffffffffffff8211156127a6576127a6612653565b5060051b60200190565b600082601f8301126127c157600080fd5b813560206127d66127d18361278c565b612692565b8083825260208201915060208460051b8701019350868411156127f857600080fd5b602086015b84811015611c665780356128108161263b565b83529183019183016127fd565b803563ffffffff8116811461283157600080fd5b919050565b600082601f83011261284757600080fd5b813560206128576127d18361278c565b8083825260208201915060208460051b87010193508684111561287957600080fd5b602086015b84811015611c665761288f8161281d565b835291830191830161287e565b600080600080600060a086880312156128b457600080fd5b85356128bf8161263b565b945060208601359350604086013567ffffffffffffffff808211156128e357600080fd5b6128ef89838a016127b0565b9450606088013591508082111561290557600080fd5b61291189838a01612836565b9350608088013591508082111561292757600080fd5b50612934888289016126c3565b9150509295509295909350565b60008060006060848603121561295657600080fd5b83356129618161263b565b925060208401359150604084013567ffffffffffffffff81111561277657600080fd5b6000806040838503121561299757600080fd5b82356129a28161263b565b946020939093013593505050565b6000602082840312156129c257600080fd5b813561261b8161263b565b60008060008060008060c087890312156129e657600080fd5b86356129f18161263b565b95506020870135612a018161263b565b945060408701359350606087013567ffffffffffffffff80821115612a2557600080fd5b612a318a838b016127b0565b94506080890135915080821115612a4757600080fd5b50612a5489828a01612836565b92505060a087013590509295509295509295565b60008060008060808587031215612a7e57600080fd5b8435612a898161263b565b93506020850135612a998161263b565b93969395505050506040820135916060013590565b600082601f830112612abf57600080fd5b81356020612acf6127d18361278c565b82815260069290921b84018101918181019086841115612aee57600080fd5b8286015b84811015611c665760408189031215612b0b5760008081fd5b612b13612669565b612b1c8261281d565b8152848201356001600160601b0381168114612b385760008081fd5b81860152835291830191604001612af2565b60008060008060008060c08789031215612b6357600080fd5b8635612b6e8161263b565b955060208701359450604087013567ffffffffffffffff80821115612b9257600080fd5b612b9e8a838b01612836565b95506060890135915080821115612bb457600080fd5b50612bc189828a01612aae565b935050612bd06080880161281d565b915060a087013590509295509295509295565b600080600060608486031215612bf857600080fd5b83359250602084013567ffffffffffffffff80821115612c1757600080fd5b612c23878388016127b0565b93506040860135915080821115612c3957600080fd5b5061278286828701612836565b60008060008060008060c08789031215612c5f57600080fd5b8635612c6a8161263b565b95506020870135612c7a8161263b565b945060408701359350606087013567ffffffffffffffff80821115612c9e57600080fd5b612caa8a838b01612836565b94506080890135915080821115612cc057600080fd5b50612ccd89828a01612aae565b925050612cdc60a0880161281d565b90509295509295509295565b600181811c90821680612cfc57607f821691505b60208210810361139257634e487b7160e01b600052602260045260246000fd5b60006001600160a01b0380871683528560208401528085166040840152506080606083015261152160808301846125c2565b600060208284031215612d6057600080fd5b815161261b8161263b565b634e487b7160e01b600052601160045260246000fd5b600060018201612d9357612d93612d6b565b5060010190565b60008151808452602080850194506020840160005b83811015612dd157815163ffffffff1687529582019590820190600101612daf565b509495945050505050565b6001600160a01b0384168152826020820152606060408201526000612e046060830184612d9a565b95945050505050565b8051801515811461283157600080fd5b600060208284031215612e2f57600080fd5b61261b82612e0d565b808202811582820484141761224c5761224c612d6b565b60008151808452602080850194506020840160005b83811015612dd15781516001600160a01b031687529582019590820190600101612e64565b6001600160a01b0385168152836020820152608060408201526000612eb16080830185612e4f565b8281036060840152612ec38185612d9a565b979650505050505050565b600060208284031215612ee057600080fd5b5051919050565b60008060408385031215612efa57600080fd5b612f0383612e0d565b9150602083015190509250929050565b604081526000612f266040830185612e4f565b8281036020840152611f008185612d9a565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b83811015612dd1578151805163ffffffff1688528301516001600160601b03168388015260409096019590820190600101612f63565b6001600160a01b038716815285602082015260c060408201526000612fc160c0830187612d9a565b8281036060840152612fd38187612f4e565b63ffffffff959095166080840152505060a00152949350505050565b848152600060206001600160a01b0386166020840152608060408401526130196080840186612d9a565b83810360608501528451808252602080870192019060005b8181101561304d57835183529284019291840191600101613031565b50909998505050505050505050565b6001600160a01b038616815284602082015260a06040820152600061308460a0830186612d9a565b82810360608401526130968186612f4e565b91505063ffffffff831660808301529695505050505050565b6060815260006130c260608301866125c2565b60208301949094525060400152919050565b60ff818116838216019081111561224c5761224c612d6b565b82815260406020820152600061310660408301846125c2565b949350505050565b60006020828403121561312057600080fd5b81517fffffffff000000000000000000000000000000000000000000000000000000008116811461261b57600080fd5b6001600160a01b0384168152826020820152606060408201526000612e0460608301846125c256fea2646970667358221220f8a07ba7c24022c116c55e84fbff8b47ad2bb8efd4a98f2fb531b0dde50c325c64736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.23/ServiceRegistryL2.json b/abis/0.8.23/ServiceRegistryL2.json new file mode 100644 index 00000000..66f2ba06 --- /dev/null +++ b/abis/0.8.23/ServiceRegistryL2.json @@ -0,0 +1,1899 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ServiceRegistryL2", + "sourceName": "contracts/ServiceRegistryL2.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "_baseURI", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "AgentInstanceRegistered", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentInstancesSlotsFilled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "AgentNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentNotInService", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "componentId", + "type": "uint256" + } + ], + "name": "ComponentNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "HashExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectAgentBondingValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectRegistrationDepositValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OnlyOwnServiceMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorHasNoInstances", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceMustBeInactive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "WrongAgentId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "state", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "currentThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxThreshold", + "type": "uint256" + } + ], + "name": "WrongThreshold", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ActivateRegistration", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "baseURI", + "type": "string" + } + ], + "name": "BaseURIChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "CreateMultisigWithAgents", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + } + ], + "name": "CreateService", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "DeployService", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "drainer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Drain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "drainer", + "type": "address" + } + ], + "name": "DrainerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorSlashed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorUnbond", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Refund", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "agentInstance", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "RegisterInstance", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "TerminateService", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + } + ], + "name": "UpdateService", + "type": "event" + }, + { + "inputs": [], + "name": "CID_PREFIX", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "activateRegistration", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newDrainer", + "type": "address" + } + ], + "name": "changeDrainer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newManager", + "type": "address" + } + ], + "name": "changeManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "internalType": "bool", + "name": "permission", + "type": "bool" + } + ], + "name": "changeMultisigPermission", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "internalType": "struct AgentParams[]", + "name": "agentParams", + "type": "tuple[]" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "multisigImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deploy", + "outputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "drain", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "drainer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "unitId", + "type": "uint256" + } + ], + "name": "exists", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getAgentInstances", + "outputs": [ + { + "internalType": "uint256", + "name": "numAgentInstances", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getAgentParams", + "outputs": [ + { + "internalType": "uint256", + "name": "numAgentIds", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "internalType": "struct AgentParams[]", + "name": "agentParams", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "getInstancesForAgentId", + "outputs": [ + { + "internalType": "uint256", + "name": "numAgentInstances", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getOperatorBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getPreviousHashes", + "outputs": [ + { + "internalType": "uint256", + "name": "numHashes", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "configHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getService", + "outputs": [ + { + "components": [ + { + "internalType": "uint96", + "name": "securityDeposit", + "type": "uint96" + }, + { + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxNumAgentInstances", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "numAgentInstances", + "type": "uint32" + }, + { + "internalType": "enum ServiceRegistryL2.ServiceState", + "name": "state", + "type": "uint8" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + } + ], + "internalType": "struct ServiceRegistryL2.Service", + "name": "service", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapAgentInstanceOperators", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapConfigHashes", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapMultisigs", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapOperatorAndServiceIdAgentInstances", + "outputs": [ + { + "internalType": "address", + "name": "instance", + "type": "address" + }, + { + "internalType": "uint32", + "name": "agentId", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapOperatorAndServiceIdOperatorBalances", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceAndAgentIdAgentInstances", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceAndAgentIdAgentParams", + "outputs": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServices", + "outputs": [ + { + "internalType": "uint96", + "name": "securityDeposit", + "type": "uint96" + }, + { + "internalType": "address", + "name": "multisig", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "maxNumAgentInstances", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "numAgentInstances", + "type": "uint32" + }, + { + "internalType": "enum ServiceRegistryL2.ServiceState", + "name": "state", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + } + ], + "name": "registerAgents", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "bURI", + "type": "string" + } + ], + "name": "setBaseURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint96[]", + "name": "amounts", + "type": "uint96[]" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "slash", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "slashedFunds", + "outputs": [ + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "terminate", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "unitId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "unitId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "unbond", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "serviceOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "configHash", + "type": "bytes32" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "slots", + "type": "uint32" + }, + { + "internalType": "uint96", + "name": "bond", + "type": "uint96" + } + ], + "internalType": "struct AgentParams[]", + "name": "agentParams", + "type": "tuple[]" + }, + { + "internalType": "uint32", + "name": "threshold", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "update", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526001600a553480156200001657600080fd5b5060405162005b6e38038062005b6e833981016040819052620000399162000150565b8282600062000049838262000272565b50600162000058828262000272565b50600891506200006b9050828262000272565b5050600680546001600160a01b03191633179055506200033e9050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000b057600080fd5b81516001600160401b0380821115620000cd57620000cd62000088565b604051601f8301601f19908116603f01168101908282118183101715620000f857620000f862000088565b81604052838152602092508660208588010111156200011657600080fd5b600091505b838210156200013a57858201830151818301840152908201906200011b565b6000602085830101528094505050505092915050565b6000806000606084860312156200016657600080fd5b83516001600160401b03808211156200017e57600080fd5b6200018c878388016200009e565b94506020860151915080821115620001a357600080fd5b620001b1878388016200009e565b93506040860151915080821115620001c857600080fd5b50620001d7868287016200009e565b9150509250925092565b600181811c90821680620001f657607f821691505b6020821081036200021757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200026d576000816000526020600020601f850160051c81016020861015620002485750805b601f850160051c820191505b81811015620002695782815560010162000254565b5050505b505050565b81516001600160401b038111156200028e576200028e62000088565b620002a6816200029f8454620001e1565b846200021d565b602080601f831160018114620002de5760008415620002c55750858301515b600019600386901b1c1916600185901b17855562000269565b600085815260208120601f198616915b828110156200030f57888601518255948401946001909101908401620002ee565b50858210156200032e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b615820806200034e6000396000f3fe6080604052600436106103345760003560e01c806370a08231116101b0578063a60e4c3c116100ec578063dff7672411610095578063ef0e239b1161006f578063ef0e239b14610af7578063f908bc7714610b24578063fbdeb3d714610b44578063ffa1ad7414610b6457600080fd5b8063dff7672414610a96578063e23f6fb414610aa9578063e985e9c514610abc57600080fd5b8063c87b56dd116100c6578063c87b56dd14610a36578063cbf994f814610a56578063ccc9305d14610a7657600080fd5b8063a60e4c3c146109c8578063a6f9dae1146109f6578063b88d4fde14610a1657600080fd5b80638a2bd86f116101595780639890220b116101335780639890220b1461093c578063a22cb46514610951578063a3fbbaae14610971578063a5d059ca1461099157600080fd5b80638a2bd86f146108c25780638da5cb5b1461090757806395d89b411461092757600080fd5b80637c5e63e01161018a5780637c5e63e01461084d57806382694b1d1461088257806386a2bdd4146108a257600080fd5b806370a08231146107c9578063718934d8146107e957806373b8b6a21461082d57600080fd5b806342842e0e1161027f57806355f804b3116102285780636352211e116102025780636352211e1461070a57806363dd76151461072a5780636c0360eb146107945780636f99f15c146107a957600080fd5b806355f804b3146106a357806357838e85146106c35780635e4507fa146106ea57600080fd5b80634eb780da116102595780634eb780da1461062d5780634f558e79146106635780634f6ccce71461068357600080fd5b806342842e0e146105cd578063481c6a75146105ed5780634d486f851461060d57600080fd5b806318160ddd116102e157806323b872dd116102bb57806323b872dd146104d057806342144854146104f05780634236aff81461053e57600080fd5b806318160ddd146104505780631de286ba1461047457806321e4f7bb146104a257600080fd5b8063095ea7b311610312578063095ea7b3146103de57806310c6aa191461040057806317351f7e1461042057600080fd5b806301ffc9a71461033957806306fdde031461036e578063081812fc14610390575b600080fd5b34801561034557600080fd5b5061035961035436600461492f565b610b95565b60405190151581526020015b60405180910390f35b34801561037a57600080fd5b50610383610be7565b60405161036591906149a3565b34801561039c57600080fd5b506103c66103ab3660046149b6565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610365565b3480156103ea57600080fd5b506103fe6103f93660046149e4565b610c75565b005b34801561040c57600080fd5b506103fe61041b366004614a10565b610d5c565b34801561042c57600080fd5b5061035961043b366004614a10565b60126020526000908152604090205460ff1681565b34801561045c57600080fd5b5061046660095481565b604051908152602001610365565b34801561048057600080fd5b5061049461048f3660046149b6565b610e15565b604051610365929190614a2d565b3480156104ae57600080fd5b506104c26104bd366004614a97565b611062565b604051610365929190614afe565b3480156104dc57600080fd5b506103fe6104eb366004614b1f565b611146565b3480156104fc57600080fd5b5061052661050b3660046149b6565b6010602052600090815260409020546001600160601b031681565b6040516001600160601b039091168152602001610365565b34801561054a57600080fd5b506105ba6105593660046149b6565b6013602052600090815260409020805460018201546002909201546001600160601b03821692600160601b928390046001600160a01b031692909163ffffffff808216926401000000008304821692600160401b8104909216910460ff1687565b6040516103659796959493929190614b98565b3480156105d957600080fd5b506103fe6105e8366004614b1f565b611320565b3480156105f957600080fd5b506007546103c6906001600160a01b031681565b34801561061957600080fd5b506104c26106283660046149b6565b611415565b34801561063957600080fd5b506103c6610648366004614a10565b6011602052600090815260409020546001600160a01b031681565b34801561066f57600080fd5b5061035961067e3660046149b6565b611567565b34801561068f57600080fd5b5061046661069e3660046149b6565b611589565b3480156106af57600080fd5b506103fe6106be366004614cbb565b6115ce565b3480156106cf57600080fd5b50600b546103c690600160601b90046001600160a01b031681565b3480156106f657600080fd5b506103c6610705366004614a97565b611677565b34801561071657600080fd5b506103c66107253660046149b6565b6116af565b34801561073657600080fd5b506107706107453660046149b6565b600e6020526000908152604090205463ffffffff81169064010000000090046001600160601b031682565b6040805163ffffffff90931683526001600160601b03909116602083015201610365565b3480156107a057600080fd5b50610383611714565b3480156107b557600080fd5b50600b54610526906001600160601b031681565b3480156107d557600080fd5b506104666107e4366004614a10565b611721565b3480156107f557600080fd5b50610809610804366004614a97565b611795565b604080516001600160a01b03909316835263ffffffff909116602083015201610365565b34801561083957600080fd5b50610359610848366004614db7565b6117db565b34801561085957600080fd5b506103836040518060400160405280600981526020016806630313730313232360bc1b81525081565b34801561088e57600080fd5b5061035961089d366004614e81565b611c2a565b3480156108ae57600080fd5b506104666108bd366004614a97565b611cc3565b3480156108ce57600080fd5b506104666108dd3660046149e4565b60a01b6001600160a01b03909116176000908152601060205260409020546001600160601b031690565b34801561091357600080fd5b506006546103c6906001600160a01b031681565b34801561093357600080fd5b50610383611cf4565b34801561094857600080fd5b50610466611d01565b34801561095d57600080fd5b506103fe61096c366004614e81565b611e5f565b34801561097d57600080fd5b506103fe61098c366004614a10565b611ecb565b34801561099d57600080fd5b506109b16109ac3660046149e4565b611f7c565b604080519215158352602083019190915201610365565b3480156109d457600080fd5b506109e86109e33660046149b6565b61240e565b604051610365929190614ebf565b348015610a0257600080fd5b506103fe610a11366004614a10565b612472565b348015610a2257600080fd5b506103fe610a31366004614f0f565b612523565b348015610a4257600080fd5b50610383610a513660046149b6565b612608565b348015610a6257600080fd5b50610359610a713660046150b5565b612682565b348015610a8257600080fd5b506109b1610a913660046149e4565b612c06565b610359610aa436600461514e565b612f60565b610359610ab73660046149e4565b61354f565b348015610ac857600080fd5b50610359610ad73660046151ce565b600560209081526000928352604080842090915290825290205460ff1681565b348015610b0357600080fd5b50610b17610b123660046149b6565b6136ce565b6040516103659190615233565b348015610b3057600080fd5b506103c6610b3f3660046152cf565b61384e565b348015610b5057600080fd5b50610466610b5f366004615343565b613c1f565b348015610b7057600080fd5b50610383604051806040016040528060058152602001640312e302e360dc1b81525081565b60006301ffc9a760e01b6001600160e01b031983161480610bc657506380ac58cd60e01b6001600160e01b03198316145b80610be15750635b5e139f60e01b6001600160e01b03198316145b92915050565b60008054610bf4906153d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c20906153d4565b8015610c6d5780601f10610c4257610100808354040283529160200191610c6d565b820191906000526020600020905b815481529060010190602001808311610c5057829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b031633811480610cbe57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b610d005760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6006546001600160a01b03163314610d9c5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b038116610dc35760405163d92e233d60e01b815260040160405180910390fd5b600b80546001600160601b0316600160601b6001600160a01b038416908102919091179091556040517f8d1e8547016120917daad7f81c42b48f7fee379badc48f1889f0f43bb619472590600090a250565b600081815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff808216606085810191909152640100000000830482166080860152600160401b830490911660a0850152938593929160c084019160ff9104166005811115610eb657610eb6614b60565b6005811115610ec757610ec7614b60565b815260200160038201805480602002602001604051908101604052809291908181526020018280548015610f4657602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610f095790505b50505050508152505090508060e001515192508267ffffffffffffffff811115610f7257610f72614bf3565b604051908082528060200260200182016040528015610fb757816020015b6040805180820190915260008082526020820152815260200190600190039081610f905790505b50915060005b8381101561105b57600085905060208360e001518381518110610fe257610fe261540e565b60209081029190910181015163ffffffff90811690921b929092176000818152600e845260409081902081518083019092525492831681526401000000009092046001600160601b03169282019290925284518590849081106110475761104761540e565b602090810291909101015250600101610fbd565b5050915091565b602081811b83176000818152600f909252604090912054906060908267ffffffffffffffff81111561109657611096614bf3565b6040519080825280602002602001820160405280156110bf578160200160208202803683370190505b50915060005b8381101561113d576000828152600f602052604090208054829081106110ed576110ed61540e565b9060005260206000200160009054906101000a90046001600160a01b031683828151811061111d5761111d61540e565b6001600160a01b03909216602092830291909101909101526001016110c5565b50509250929050565b6000818152600260205260409020546001600160a01b038481169116146111af5760405162461bcd60e51b815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610cf7565b6001600160a01b0382166111f95760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610cf7565b336001600160a01b038416148061123357506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b8061125457506000818152600460205260409020546001600160a01b031633145b6112915760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610cf7565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61132b838383611146565b6001600160a01b0382163b1561141057604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af11580156113a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c69190615424565b6001600160e01b031916146114105760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610cf7565b505050565b600081815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff808216606085810191909152640100000000830482166080860152600160401b830490911660a0850152938593929160c084019160ff91041660058111156114b6576114b6614b60565b60058111156114c7576114c7614b60565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561154657602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116115095790505b505050505081525050905061155b8185613f1c565b91508151925050915091565b60008082118015610be15750600954611581906001615457565b821092915050565b6000611596826001615457565b90506009548111156115c957600954604051637ae5968560e01b8152610cf7918391600401918252602082015260400190565b919050565b6006546001600160a01b0316331461160e5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b805160000361163057604051637c946ed760e01b815260040160405180910390fd5b600861163c82826154ba565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf68160405161166c91906149a3565b60405180910390a150565b600f602052816000526040600020818154811061169357600080fd5b6000918252602090912001546001600160a01b03169150829050565b6000818152600260205260409020546001600160a01b0316806115c95760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610cf7565b60088054610bf4906153d4565b60006001600160a01b0382166117795760405162461bcd60e51b815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610cf7565b506001600160a01b031660009081526003602052604090205490565b600d60205281600052604060002081815481106117b157600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b900463ffffffff16905082565b600081815260136020908152604080832081516101008101835281546001600160601b0381168252600160601b908190046001600160a01b031694820194909452600182015492810192909252600281015463ffffffff8082166060850152640100000000820481166080850152600160401b82041660a0840152849360c08401910460ff16600581111561187257611872614b60565b600581111561188357611883614b60565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561190257602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116118c55790505b50505050508152505090506004600581111561192057611920614b60565b8160c00151600581111561193657611936614b60565b14611975578060c00151600581111561195157611951614b60565b604051633c053f9d60e21b8152600481019190915260248101849052604401610cf7565b83518551146119a457845184516040516308151c1160e41b815260048101929092526024820152604401610cf7565b80602001516001600160a01b0316336001600160a01b0316146119f85760208101516040516379f91cd360e01b81523360048201526001600160a01b03909116602482015260448101849052606401610cf7565b845160005b81811015611c1d57600060116000898481518110611a1d57611a1d61540e565b6020908102919091018101516001600160a01b03908116835282820193909352604091820160009081205490931660a08a901b81178085526010909252919092205489519193506001600160601b03169081908a9086908110611a8257611a8261540e565b60200260200101516001611a96919061557a565b6001600160601b03161115611af057600b8054829190600090611ac39084906001600160601b031661557a565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555060009050611b74565b888481518110611b0257611b0261540e565b6020908102919091010151600b8054600090611b289084906001600160601b031661557a565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550888481518110611b5e57611b5e61540e565b602002602001015181611b7191906155a1565b90505b600082815260106020526040902080546bffffffffffffffffffffffff19166001600160601b038316179055885188906001600160a01b038516907fa2e524bd0f71903485fbb3d6d50cb305f61005ceea2047c3ac92aa7e0d104306908c9088908110611be357611be361540e565b6020026020010151604051611c0791906001600160601b0391909116815260200190565b60405180910390a35050508060010190506119fd565b5060019695505050505050565b6006546000906001600160a01b03163314611c6d5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b038316611c945760405163d92e233d60e01b815260040160405180910390fd5b506001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055600190565b600c6020528160005260406000208181548110611cdf57600080fd5b90600052602060002001600091509150505481565b60018054610bf4906153d4565b60006001600a541115611d27576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a55600b54600160601b90046001600160a01b03163314611d7957600b5460405163312d21ff60e11b8152336004820152600160601b9091046001600160a01b03166024820152604401610cf7565b50600b546001600160601b03168015611e5757600b80546bffffffffffffffffffffffff19169055604051600090339083908381818185875af1925050503d8060008114611de3576040519150601f19603f3d011682016040523d82523d6000602084013e611de8565b606091505b5050905080611e205760405163cd3f165960e01b81526000600482015230602482015233604482015260648101839052608401610cf7565b60405182815233907ff36f4d6622e16a536bbb049064af779cdd483a0b388d347d3752a65f1058bf5b9060200160405180910390a2505b6001600a5590565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6006546001600160a01b03163314611f0b5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b038116611f325760405163d92e233d60e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0383169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d90600090a250565b6000806001600a541115611fa3576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314611fe85760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b03841661200f5760405163d92e233d60e01b815260040160405180910390fd5b600083815260136020526040902060056002820154600160601b900460ff16600581111561203f5761203f614b60565b14612088576002810154600160601b900460ff16600581111561206457612064614b60565b604051633c053f9d60e21b8152600481019190915260248101859052604401610cf7565b60a084901b6001600160a01b038616176000818152600d6020908152604080832080548251818502810185019093528083529192909190849084015b8282101561211057600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900463ffffffff16818301528252600190920191016120c4565b505082519293505050600081900361214d5760405163df2ddd7360e01b81526001600160a01b038916600482015260248101889052604401610cf7565b808460020160088282829054906101000a900463ffffffff1661217091906155c1565b92506101000a81548163ffffffff021916908363ffffffff1602179055508360020160089054906101000a900463ffffffff1663ffffffff166000036121c65760028401805460ff60601b1916600160601b1790555b60005b8181101561228457600088905060208483815181106121ea576121ea61540e565b60209081029190910181015181015163ffffffff1690911b919091176000818152600e9092526040909120546122319064010000000090046001600160601b031688615457565b9650601160008584815181106122495761224961540e565b602090810291909101810151516001600160a01b0316825281019190915260400160002080546001600160a01b0319169055506001016121c9565b506000838152600d6020526040812061229c916147e6565b6000838152601060205260409020546001600160601b0316808611156122c957806001600160601b031695505b85156123c25760008481526010602052604080822080546bffffffffffffffffffffffff19169055516001600160a01b038b169088908381818185875af1925050503d8060008114612337576040519150601f19603f3d011682016040523d82523d6000602084013e61233c565b606091505b505090508061237d5760405163cd3f165960e01b8152600060048201523060248201526001600160a01b038b16604482015260648101889052608401610cf7565b896001600160a01b03167fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d886040516123b891815260200190565b60405180910390a2505b60405188906001600160a01b038b16907f5ebf7fe30be09f0f03b9195632508d95c8b67bf010c93abda67f70d5d9599d1e90600090a350506001600a8190559793965092945050505050565b6000818152600c60209081526040808320805482518185028101850190935280835260609383018282801561246257602002820191906000526020600020905b81548152602001906001019080831161244e575b5050505050905080519150915091565b6006546001600160a01b031633146124b25760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b0381166124d95760405163d92e233d60e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b90600090a250565b61252e858585611146565b6001600160a01b0384163b1561260157604051630a85bd0160e11b808252906001600160a01b0386169063150b7a02906125749033908a908990899089906004016155de565b6020604051808303816000875af1158015612593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b79190615424565b6001600160e01b031916146126015760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610cf7565b5050505050565b6000818152601360205260408120600101546060915060086040518060400160405280600981526020016806630313730313232360bc1b81525061264b83614057565b612658608085901b614057565b60405160200161266b9493929190615632565b604051602081830303815290604052915050919050565b6007546000906001600160a01b031633146126c55760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b60006126d0836116af565b9050876001600160a01b0316816001600160a01b0316146127175760405163521eb56d60e11b81526001600160a01b03808a16600483015282166024820152604401610cf7565b600083815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff8082166060850152640100000000820481166080850152600160401b82041660a08401529192909160c084019160ff91041660058111156127b1576127b1614b60565b60058111156127c2576127c2614b60565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561284157602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116128045790505b50505050508152505090506001600581111561285f5761285f614b60565b8160c00151600581111561287557612875614b60565b14612890578060c00151600581111561206457612064614b60565b61289b888888614227565b63ffffffff85166060820152600060808201819052875167ffffffffffffffff8111156128ca576128ca614bf3565b6040519080825280602002602001820160405280156128f3578160200160208202803683370190505b5090506000885167ffffffffffffffff81111561291257612912614bf3565b60405190808252806020026020018201604052801561295757816020015b60408051808201909152600080825260208201528152602001906001900390816129305790505b5090506000805b8a51811015612a82578981815181106129795761297961540e565b60200260200101516000015163ffffffff166000036129ee57600088905060208c83815181106129ab576129ab61540e565b60209081029190910181015163ffffffff1690911b919091176000908152600e9091526040902080546fffffffffffffffffffffffffffffffff19169055612a7a565b8a8181518110612a0057612a0061540e565b6020026020010151848381518110612a1a57612a1a61540e565b602002602001019063ffffffff16908163ffffffff1681525050898181518110612a4657612a4661540e565b6020026020010151838381518110612a6057612a6061540e565b60200260200101819052508180612a76906156c4565b9250505b60010161295e565b5060408401518b8114612ab9576000888152600c602090815260408083208054600181018255908452919092200182905585018c90525b612ac6858585858c61432f565b6000888152601360209081526040918290208751918801516001600160a01b0316600160601b9081026001600160601b03909316929092178155918701516001830155606087015160028301805460808a015160a08b015163ffffffff908116600160401b026bffffffff0000000000000000199282166401000000000267ffffffffffffffff199094169190951617919091179081168317825560c08a01518a9594909360ff60601b19166cffffffffff0000000000000000199092169190911790836005811115612b9b57612b9b614b60565b021790555060e08201518051612bbb916003840191602090910190614807565b50506040518d81528991507fff312ce131c4d73ac90ece91266be7090486c5e15f78b7ea2b108c36dfd475299060200160405180910390a25060019c9b505050505050505050505050565b6000806001600a541115612c2d576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314612c725760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6000612c7d846116af565b9050846001600160a01b0316816001600160a01b031614612cc45760405163521eb56d60e11b81526001600160a01b03808716600483015282166024820152604401610cf7565b600084815260136020526040902060016002820154600160601b900460ff166005811115612cf457612cf4614b60565b1480612d1f575060056002820154600160601b900460ff166005811115612d1d57612d1d614b60565b145b15612d68576002810154600160601b900460ff166005811115612d4457612d44614b60565b604051633c053f9d60e21b8152600481019190915260248101869052604401610cf7565b6002810154600160401b900463ffffffff1615612da25760028101805460ff60601b19166c05000000000000000000000000179055612db8565b60028101805460ff60601b1916600160601b1790555b60005b6003820154811015612e3d5760008690506020836003018381548110612de357612de361540e565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff16901b81179050600f60008281526020019081526020016000206000612e3491906148b6565b50600101612dbb565b5080546040516001600160601b0390911693506000906001600160a01b0388169085908381818185875af1925050503d8060008114612e98576040519150601f19603f3d011682016040523d82523d6000602084013e612e9d565b606091505b5050905080612ede5760405163cd3f165960e01b8152600060048201523060248201526001600160a01b038816604482015260648101859052608401610cf7565b866001600160a01b03167fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d85604051612f1991815260200190565b60405180910390a260405186907fe45f5b9540df4f71b7e044809fa318806328c1ea2388a70c7373d97ccf8a0faa90600090a250506001600a819055959194509092505050565b6007546000906001600160a01b03163314612fa35760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b8151835114612fd257825182516040516308151c1160e41b815260048101929092526024820152604401610cf7565b6000848152601360205260409020600280820154600160601b900460ff16600581111561300157613001614b60565b14613026576002810154600160601b900460ff166005811115612d4457612d44614b60565b83516000805b82811015613115576000889050602087838151811061304d5761304d61540e565b60209081029190910181015163ffffffff90811690921b929092176000818152600e845260408082208151808301909252549384168082526401000000009094046001600160601b03169481019490945290929190036130ee578783815181106130b9576130b961540e565b60200260200101518a6040516332832be560e21b8152600401610cf792919063ffffffff929092168252602082015260400190565b6020810151613106906001600160601b031685615457565b9350505080600101905061302c565b5080341461314657604051637ebbcab960e11b81523460048201526024810182905260448101889052606401610cf7565b6001600160a01b038881166000908152601160205260409020541615613182576040516322ddebd960e21b815260048101889052602401610cf7565b60a087901b6001600160a01b0389161760005b838110156134705760008882815181106131b1576131b161540e565b6020026020010151905060008883815181106131cf576131cf61540e565b60200260200101519050816001600160a01b03168c6001600160a01b03160361320e576040516322ddebd960e21b8152600481018c9052602401610cf7565b6001600160a01b038281166000908152601160205260409020541615613265576001600160a01b038281166000908152601160205260409081902054905163631695bd60e01b815291166004820152602401610cf7565b60008b905060208a858151811061327e5761327e61540e565b60209081029190910181015163ffffffff90811690921b929092176000818152600e8452604080822054600f909552902054909290911690036132d7576040516304ad100760e21b8152600481018d9052602401610cf7565b6000818152600f602090815260408083208054600181810183559185528385200180546001600160a01b03808a166001600160a01b031990921682179092558a8652600d8552838620845180860190955290845263ffffffff8089168587019081528254948501835591875294909520925192909101805494518416600160a01b0277ffffffffffffffffffffffffffffffffffffffffffffffff19909516929091169190911792909217909155600289018054600160401b90049091169060086133a1836156dd565b91906101000a81548163ffffffff021916908363ffffffff160217905550508c60116000856001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826001600160a01b03168c8e6001600160a01b03167f6835389a6da5341647f18cbe0a89c56f473f4c17bfaee6e6d07d61f1928e0b7c8560405161345a919063ffffffff91909116815260200190565b60405180910390a4505050806001019050613195565b50600284015463ffffffff64010000000082048116600160401b90920416036134b25760028401805460ff60601b19166c030000000000000000000000001790555b600081815260106020526040812080543492906134d99084906001600160601b031661557a565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550886001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3460405161353891815260200190565b60405180910390a250600198975050505050505050565b6007546000906001600160a01b031633146135925760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b600061359d836116af565b9050836001600160a01b0316816001600160a01b0316146135e45760405163521eb56d60e11b81526001600160a01b03808616600483015282166024820152604401610cf7565b600083815260136020526040902060016002820154600160601b900460ff16600581111561361457613614614b60565b1461363557604051635960d22f60e11b815260048101859052602401610cf7565b80546001600160601b0316341461367a578054604051631c30abbb60e31b81523460048201526001600160601b03909116602482015260448101859052606401610cf7565b60028101805460ff60601b19166c0200000000000000000000000017905560405184907fa48b531f972c0e4aca57afcc5c099c52a7bd21bc5e2a1b733eec3be9e88da97a90600090a2506001949350505050565b6137166040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529060c08201908152602001606081525090565b60008281526013602090815260409182902082516101008101845281546001600160601b0381168252600160601b908190046001600160a01b031693820193909352600182015493810193909352600281015463ffffffff8082166060860152640100000000820481166080860152600160401b82041660a0850152909160c08401910460ff1660058111156137ae576137ae614b60565b60058111156137bf576137bf614b60565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561383e57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116138015790505b5050505050815250509050919050565b60006001600a541115613874576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b031633146138b95760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b60006138c4856116af565b9050856001600160a01b0316816001600160a01b03161461390b5760405163521eb56d60e11b81526001600160a01b03808816600483015282166024820152604401610cf7565b6001600160a01b03841660009081526012602052604090205460ff1661394e5760405162a2307960e51b81526001600160a01b0385166004820152602401610cf7565b600085815260136020526040902060036002820154600160601b900460ff16600581111561397e5761397e614b60565b146139c7576002810154600160601b900460ff1660058111156139a3576139a3614b60565b604051633c053f9d60e21b8152600481019190915260248101879052604401610cf7565b604080516101008101825282546001600160601b0381168252600160601b908190046001600160a01b03166020830152600184015492820192909252600283015463ffffffff8082166060840152640100000000820481166080840152600160401b82041660a0830152600092613af49291859160c08401910460ff166005811115613a5557613a55614b60565b6005811115613a6657613a66614b60565b815260200160038201805480602002602001604051908101604052809291908181526020018280548015613ae557602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411613aa85790505b50505050508152505088613f1c565b6002830154604051631e731b7560e31b81529192506001600160a01b0388169163f398dba891613b3191859163ffffffff16908a90600401615700565b6020604051808303816000875af1158015613b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b74919061573b565b82546001600160601b0316600160601b6001600160a01b03831690810291909117845560028401805460ff60601b19166c040000000000000000000000001790556040519195509088907f2d53f895cd5faf3cddba94a25c2ced2105885b5b37450ff430ffa3cbdf332c7490600090a360405187907fa133ed72c03a7d008deaae618a61613c4fd41c67bba1cad1a6bc0a1c5a9c156e90600090a250506001600a5550949350505050565b60006001600a541115613c45576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314613c8a5760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b038616613cb15760405163d92e233d60e01b815260040160405180910390fd5b613cbc858585614227565b60005b8451811015613d4657838181518110613cda57613cda61540e565b60200260200101516000015163ffffffff1660001480613d205750838181518110613d0757613d0761540e565b6020026020010151602001516001600160601b03166000145b15613d3e57604051637c946ed760e01b815260040160405180910390fd5b600101613cbf565b505060095480613d55816156c4565b915050613da06040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529060c08201908152602001606081525090565b63ffffffff8316606082015260408101869052600160c082018181525050613dcc81868688518661432f565b6000828152601360209081526040918290208351918401516001600160a01b0316600160601b9081026001600160601b039093169290921781559183015160018301556060830151600283018054608086015160a087015163ffffffff908116600160401b026bffffffff0000000000000000199282166401000000000267ffffffffffffffff199094169190951617919091179081168317825560c0860151869594909360ff60601b19166cffffffffff0000000000000000199092169190911790836005811115613ea157613ea1614b60565b021790555060e08201518051613ec1916003840191602090910190614807565b5050506009829055613ed387836145dc565b817fb34c1e02384201736eb4693b9b173306cb41bff12f15894dea5773088e9a3b1c87604051613f0591815260200190565b60405180910390a2506001600a5595945050505050565b60608260a0015163ffffffff1667ffffffffffffffff811115613f4157613f41614bf3565b604051908082528060200260200182016040528015613f6a578160200160208202803683370190505b5090506000805b8460e001515181101561404f57600084905060208660e001518381518110613f9b57613f9b61540e565b602002602001015163ffffffff16901b8117905060005b6000828152600f6020526040902054811015614045576000828152600f60205260409020805482908110613fe857613fe861540e565b9060005260206000200160009054906101000a90046001600160a01b03168585815181106140185761401861540e565b6001600160a01b03909216602092830291909101909101528361403a816156c4565b945050600101613fb2565b5050600101613f71565b505092915050565b7aff00000000000000ff00000000000000ff00000000000000ff00006bffffffff0000000000000000604083901c9081167bffffffff00000000000000000000000000000000000000000000000084161760201c6fffffffff000000000000000000000000919091166001600160e01b031984161717601081901c9182167eff00000000000000ff00000000000000ff00000000000000ff000000000000821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c1617906141c3827f0606060606060606060606060606060606060606060606060606060606060606615457565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1660276141f39190615758565b61421d827f3030303030303030303030303030303030303030303030303030303030303030615457565b610be19190615457565b600083900361424957604051637c946ed760e01b815260040160405180910390fd5b8151158061425957508051825114155b1561428457815181516040516308151c1160e41b815260048101929092526024820152604401610cf7565b6000805b83518110156126015761429c826001615457565b8482815181106142ae576142ae61540e565b602002602001015163ffffffff161015614302578381815181106142d4576142d461540e565b6020026020010151604051632ab10b0b60e21b8152600401610cf7919063ffffffff91909116815260200190565b8381815181106143145761431461540e565b602090810291909101015163ffffffff169150600101614288565b60008267ffffffffffffffff81111561434a5761434a614bf3565b604051908082528060200260200182016040528015614373578160200160208202803683370190505b5060e087015260005b838110156144f9578581815181106143965761439661540e565b60200260200101518760e0015182815181106143b4576143b461540e565b63ffffffff90921660209283029190910182015286518491908890849081106143df576143df61540e565b602002602001015163ffffffff16901b811790508582815181106144055761440561540e565b6020908102919091018101516000838152600e8352604090208151815492909301516001600160601b0316640100000000026fffffffffffffffffffffffffffffffff1990921663ffffffff90931692909217179055855186908390811061446f5761446f61540e565b6020026020010151600001518860800181815161448c919061576f565b63ffffffff1690525085516001600160601b038416908790849081106144b4576144b461540e565b6020026020010151602001516001600160601b031611156144f0578582815181106144e1576144e161540e565b60200260200101516020015192505b5060010161437c565b506001600160601b0381168652608086015160009061451990600261578c565b61452490600161576f565b63ffffffff1690506145376003826157c2565b600003614550576145496003826157d6565b9050614569565b61455b6003826157d6565b614566906001615457565b90505b80876060015163ffffffff1610806145945750866080015163ffffffff16876060015163ffffffff16115b156145d3576060870151608088015160405163eb3a8ba360e01b815263ffffffff92831660048201526024810184905291166044820152606401610cf7565b50505050505050565b6145e682826146cc565b6001600160a01b0382163b156146c857604051630a85bd0160e11b80825233600483015260006024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303816000875af115801561465a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467e9190615424565b6001600160e01b031916146146c85760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610cf7565b5050565b6001600160a01b0382166147165760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610cf7565b6000818152600260205260409020546001600160a01b03161561477b5760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610cf7565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b508054600082559060005260206000209081019061480491906148d4565b50565b828054828255906000526020600020906007016008900481019282156148a65791602002820160005b8382111561487457835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614830565b80156148a45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614874565b505b506148b2929150614904565b5090565b50805460008255906000526020600020908101906148049190614904565b5b808211156148b257805477ffffffffffffffffffffffffffffffffffffffffffffffff191681556001016148d5565b5b808211156148b25760008155600101614905565b6001600160e01b03198116811461480457600080fd5b60006020828403121561494157600080fd5b813561494c81614919565b9392505050565b60005b8381101561496e578181015183820152602001614956565b50506000910152565b6000815180845261498f816020860160208601614953565b601f01601f19169290920160200192915050565b60208152600061494c6020830184614977565b6000602082840312156149c857600080fd5b5035919050565b6001600160a01b038116811461480457600080fd5b600080604083850312156149f757600080fd5b8235614a02816149cf565b946020939093013593505050565b600060208284031215614a2257600080fd5b813561494c816149cf565b6000604080830185845260206040602086015281865180845260608701915060208801935060005b81811015614a89578451805163ffffffff1684528401516001600160601b0316848401529383019391850191600101614a55565b509098975050505050505050565b60008060408385031215614aaa57600080fd5b50508035926020909101359150565b60008151808452602080850194506020840160005b83811015614af35781516001600160a01b031687529582019590820190600101614ace565b509495945050505050565b828152604060208201526000614b176040830184614ab9565b949350505050565b600080600060608486031215614b3457600080fd5b8335614b3f816149cf565b92506020840135614b4f816149cf565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b60068110614b9457634e487b7160e01b600052602160045260246000fd5b9052565b6001600160601b03881681526001600160a01b03871660208201526040810186905263ffffffff85811660608301528481166080830152831660a082015260e08101614be760c0830184614b76565b98975050505050505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614c2c57614c2c614bf3565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614c5b57614c5b614bf3565b604052919050565b600067ffffffffffffffff831115614c7d57614c7d614bf3565b614c90601f8401601f1916602001614c32565b9050828152838383011115614ca457600080fd5b828260208301376000602084830101529392505050565b600060208284031215614ccd57600080fd5b813567ffffffffffffffff811115614ce457600080fd5b8201601f81018413614cf557600080fd5b614b1784823560208401614c63565b600067ffffffffffffffff821115614d1e57614d1e614bf3565b5060051b60200190565b600082601f830112614d3957600080fd5b81356020614d4e614d4983614d04565b614c32565b8083825260208201915060208460051b870101935086841115614d7057600080fd5b602086015b84811015614d95578035614d88816149cf565b8352918301918301614d75565b509695505050505050565b80356001600160601b03811681146115c957600080fd5b600080600060608486031215614dcc57600080fd5b833567ffffffffffffffff80821115614de457600080fd5b614df087838801614d28565b9450602091508186013581811115614e0757600080fd5b86019050601f81018713614e1a57600080fd5b8035614e28614d4982614d04565b81815260059190911b82018301908381019089831115614e4757600080fd5b928401925b82841015614e6c57614e5d84614da0565b82529284019290840190614e4c565b96999698505050506040949094013593505050565b60008060408385031215614e9457600080fd5b8235614e9f816149cf565b915060208301358015158114614eb457600080fd5b809150509250929050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b81811015614f0257845183529383019391830191600101614ee6565b5090979650505050505050565b600080600080600060808688031215614f2757600080fd5b8535614f32816149cf565b94506020860135614f42816149cf565b935060408601359250606086013567ffffffffffffffff80821115614f6657600080fd5b818801915088601f830112614f7a57600080fd5b813581811115614f8957600080fd5b896020828501011115614f9b57600080fd5b9699959850939650602001949392505050565b803563ffffffff811681146115c957600080fd5b600082601f830112614fd357600080fd5b81356020614fe3614d4983614d04565b8083825260208201915060208460051b87010193508684111561500557600080fd5b602086015b84811015614d955761501b81614fae565b835291830191830161500a565b600082601f83011261503957600080fd5b81356020615049614d4983614d04565b82815260069290921b8401810191818101908684111561506857600080fd5b8286015b84811015614d9557604081890312156150855760008081fd5b61508d614c09565b61509682614fae565b81526150a3858301614da0565b8186015283529183019160400161506c565b60008060008060008060c087890312156150ce57600080fd5b86356150d9816149cf565b955060208701359450604087013567ffffffffffffffff808211156150fd57600080fd5b6151098a838b01614fc2565b9550606089013591508082111561511f57600080fd5b5061512c89828a01615028565b93505061513b60808801614fae565b915060a087013590509295509295509295565b6000806000806080858703121561516457600080fd5b843561516f816149cf565b935060208501359250604085013567ffffffffffffffff8082111561519357600080fd5b61519f88838901614d28565b935060608701359150808211156151b557600080fd5b506151c287828801614fc2565b91505092959194509250565b600080604083850312156151e157600080fd5b82356151ec816149cf565b91506020830135614eb4816149cf565b60008151808452602080850194506020840160005b83811015614af357815163ffffffff1687529582019590820190600101615211565b602081526001600160601b0382511660208201526001600160a01b036020830151166040820152604082015160608201526000606083015161527d608084018263ffffffff169052565b50608083015163ffffffff811660a08401525060a083015163ffffffff811660c08401525060c08301516152b460e0840182614b76565b5060e083015161010083810152614b176101208401826151fc565b600080600080608085870312156152e557600080fd5b84356152f0816149cf565b9350602085013592506040850135615307816149cf565b9150606085013567ffffffffffffffff81111561532357600080fd5b8501601f8101871361533457600080fd5b6151c287823560208401614c63565b600080600080600060a0868803121561535b57600080fd5b8535615366816149cf565b945060208601359350604086013567ffffffffffffffff8082111561538a57600080fd5b61539689838a01614fc2565b945060608801359150808211156153ac57600080fd5b506153b988828901615028565b9250506153c860808701614fae565b90509295509295909350565b600181811c908216806153e857607f821691505b60208210810361540857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561543657600080fd5b815161494c81614919565b634e487b7160e01b600052601160045260246000fd5b80820180821115610be157610be1615441565b601f821115611410576000816000526020600020601f850160051c810160208610156154935750805b601f850160051c820191505b818110156154b25782815560010161549f565b505050505050565b815167ffffffffffffffff8111156154d4576154d4614bf3565b6154e8816154e284546153d4565b8461546a565b602080601f83116001811461551d57600084156155055750858301515b600019600386901b1c1916600185901b1785556154b2565b600085815260208120601f198616915b8281101561554c5788860151825594840194600190910190840161552d565b508582101561556a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160601b0381811683821601908082111561559a5761559a615441565b5092915050565b6001600160601b0382811682821603908082111561559a5761559a615441565b63ffffffff82811682821603908082111561559a5761559a615441565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000808654615640816153d4565b60018281168015615658576001811461566d5761569c565b60ff198416875282151583028701945061569c565b8a60005260208060002060005b858110156156935781548a82015290840190820161567a565b50505082870194505b5050505085516156b0818360208a01614953565b019384525050602082015260400192915050565b6000600182016156d6576156d6615441565b5060010190565b600063ffffffff8083168181036156f6576156f6615441565b6001019392505050565b6060815260006157136060830186614ab9565b63ffffffff8516602084015282810360408401526157318185614977565b9695505050505050565b60006020828403121561574d57600080fd5b815161494c816149cf565b8082028115828204841417610be157610be1615441565b63ffffffff81811683821601908082111561559a5761559a615441565b63ffffffff81811683821602808216919082811461404f5761404f615441565b634e487b7160e01b600052601260045260246000fd5b6000826157d1576157d16157ac565b500690565b6000826157e5576157e56157ac565b50049056fea2646970667358221220001599f9a184266e9e5a874dffd64276a4e7bb33b4140a66a8fe43c5f040d06964736f6c63430008170033", + "deployedBytecode": "0x6080604052600436106103345760003560e01c806370a08231116101b0578063a60e4c3c116100ec578063dff7672411610095578063ef0e239b1161006f578063ef0e239b14610af7578063f908bc7714610b24578063fbdeb3d714610b44578063ffa1ad7414610b6457600080fd5b8063dff7672414610a96578063e23f6fb414610aa9578063e985e9c514610abc57600080fd5b8063c87b56dd116100c6578063c87b56dd14610a36578063cbf994f814610a56578063ccc9305d14610a7657600080fd5b8063a60e4c3c146109c8578063a6f9dae1146109f6578063b88d4fde14610a1657600080fd5b80638a2bd86f116101595780639890220b116101335780639890220b1461093c578063a22cb46514610951578063a3fbbaae14610971578063a5d059ca1461099157600080fd5b80638a2bd86f146108c25780638da5cb5b1461090757806395d89b411461092757600080fd5b80637c5e63e01161018a5780637c5e63e01461084d57806382694b1d1461088257806386a2bdd4146108a257600080fd5b806370a08231146107c9578063718934d8146107e957806373b8b6a21461082d57600080fd5b806342842e0e1161027f57806355f804b3116102285780636352211e116102025780636352211e1461070a57806363dd76151461072a5780636c0360eb146107945780636f99f15c146107a957600080fd5b806355f804b3146106a357806357838e85146106c35780635e4507fa146106ea57600080fd5b80634eb780da116102595780634eb780da1461062d5780634f558e79146106635780634f6ccce71461068357600080fd5b806342842e0e146105cd578063481c6a75146105ed5780634d486f851461060d57600080fd5b806318160ddd116102e157806323b872dd116102bb57806323b872dd146104d057806342144854146104f05780634236aff81461053e57600080fd5b806318160ddd146104505780631de286ba1461047457806321e4f7bb146104a257600080fd5b8063095ea7b311610312578063095ea7b3146103de57806310c6aa191461040057806317351f7e1461042057600080fd5b806301ffc9a71461033957806306fdde031461036e578063081812fc14610390575b600080fd5b34801561034557600080fd5b5061035961035436600461492f565b610b95565b60405190151581526020015b60405180910390f35b34801561037a57600080fd5b50610383610be7565b60405161036591906149a3565b34801561039c57600080fd5b506103c66103ab3660046149b6565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610365565b3480156103ea57600080fd5b506103fe6103f93660046149e4565b610c75565b005b34801561040c57600080fd5b506103fe61041b366004614a10565b610d5c565b34801561042c57600080fd5b5061035961043b366004614a10565b60126020526000908152604090205460ff1681565b34801561045c57600080fd5b5061046660095481565b604051908152602001610365565b34801561048057600080fd5b5061049461048f3660046149b6565b610e15565b604051610365929190614a2d565b3480156104ae57600080fd5b506104c26104bd366004614a97565b611062565b604051610365929190614afe565b3480156104dc57600080fd5b506103fe6104eb366004614b1f565b611146565b3480156104fc57600080fd5b5061052661050b3660046149b6565b6010602052600090815260409020546001600160601b031681565b6040516001600160601b039091168152602001610365565b34801561054a57600080fd5b506105ba6105593660046149b6565b6013602052600090815260409020805460018201546002909201546001600160601b03821692600160601b928390046001600160a01b031692909163ffffffff808216926401000000008304821692600160401b8104909216910460ff1687565b6040516103659796959493929190614b98565b3480156105d957600080fd5b506103fe6105e8366004614b1f565b611320565b3480156105f957600080fd5b506007546103c6906001600160a01b031681565b34801561061957600080fd5b506104c26106283660046149b6565b611415565b34801561063957600080fd5b506103c6610648366004614a10565b6011602052600090815260409020546001600160a01b031681565b34801561066f57600080fd5b5061035961067e3660046149b6565b611567565b34801561068f57600080fd5b5061046661069e3660046149b6565b611589565b3480156106af57600080fd5b506103fe6106be366004614cbb565b6115ce565b3480156106cf57600080fd5b50600b546103c690600160601b90046001600160a01b031681565b3480156106f657600080fd5b506103c6610705366004614a97565b611677565b34801561071657600080fd5b506103c66107253660046149b6565b6116af565b34801561073657600080fd5b506107706107453660046149b6565b600e6020526000908152604090205463ffffffff81169064010000000090046001600160601b031682565b6040805163ffffffff90931683526001600160601b03909116602083015201610365565b3480156107a057600080fd5b50610383611714565b3480156107b557600080fd5b50600b54610526906001600160601b031681565b3480156107d557600080fd5b506104666107e4366004614a10565b611721565b3480156107f557600080fd5b50610809610804366004614a97565b611795565b604080516001600160a01b03909316835263ffffffff909116602083015201610365565b34801561083957600080fd5b50610359610848366004614db7565b6117db565b34801561085957600080fd5b506103836040518060400160405280600981526020016806630313730313232360bc1b81525081565b34801561088e57600080fd5b5061035961089d366004614e81565b611c2a565b3480156108ae57600080fd5b506104666108bd366004614a97565b611cc3565b3480156108ce57600080fd5b506104666108dd3660046149e4565b60a01b6001600160a01b03909116176000908152601060205260409020546001600160601b031690565b34801561091357600080fd5b506006546103c6906001600160a01b031681565b34801561093357600080fd5b50610383611cf4565b34801561094857600080fd5b50610466611d01565b34801561095d57600080fd5b506103fe61096c366004614e81565b611e5f565b34801561097d57600080fd5b506103fe61098c366004614a10565b611ecb565b34801561099d57600080fd5b506109b16109ac3660046149e4565b611f7c565b604080519215158352602083019190915201610365565b3480156109d457600080fd5b506109e86109e33660046149b6565b61240e565b604051610365929190614ebf565b348015610a0257600080fd5b506103fe610a11366004614a10565b612472565b348015610a2257600080fd5b506103fe610a31366004614f0f565b612523565b348015610a4257600080fd5b50610383610a513660046149b6565b612608565b348015610a6257600080fd5b50610359610a713660046150b5565b612682565b348015610a8257600080fd5b506109b1610a913660046149e4565b612c06565b610359610aa436600461514e565b612f60565b610359610ab73660046149e4565b61354f565b348015610ac857600080fd5b50610359610ad73660046151ce565b600560209081526000928352604080842090915290825290205460ff1681565b348015610b0357600080fd5b50610b17610b123660046149b6565b6136ce565b6040516103659190615233565b348015610b3057600080fd5b506103c6610b3f3660046152cf565b61384e565b348015610b5057600080fd5b50610466610b5f366004615343565b613c1f565b348015610b7057600080fd5b50610383604051806040016040528060058152602001640312e302e360dc1b81525081565b60006301ffc9a760e01b6001600160e01b031983161480610bc657506380ac58cd60e01b6001600160e01b03198316145b80610be15750635b5e139f60e01b6001600160e01b03198316145b92915050565b60008054610bf4906153d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c20906153d4565b8015610c6d5780601f10610c4257610100808354040283529160200191610c6d565b820191906000526020600020905b815481529060010190602001808311610c5057829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b031633811480610cbe57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b610d005760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6006546001600160a01b03163314610d9c5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b038116610dc35760405163d92e233d60e01b815260040160405180910390fd5b600b80546001600160601b0316600160601b6001600160a01b038416908102919091179091556040517f8d1e8547016120917daad7f81c42b48f7fee379badc48f1889f0f43bb619472590600090a250565b600081815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff808216606085810191909152640100000000830482166080860152600160401b830490911660a0850152938593929160c084019160ff9104166005811115610eb657610eb6614b60565b6005811115610ec757610ec7614b60565b815260200160038201805480602002602001604051908101604052809291908181526020018280548015610f4657602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610f095790505b50505050508152505090508060e001515192508267ffffffffffffffff811115610f7257610f72614bf3565b604051908082528060200260200182016040528015610fb757816020015b6040805180820190915260008082526020820152815260200190600190039081610f905790505b50915060005b8381101561105b57600085905060208360e001518381518110610fe257610fe261540e565b60209081029190910181015163ffffffff90811690921b929092176000818152600e845260409081902081518083019092525492831681526401000000009092046001600160601b03169282019290925284518590849081106110475761104761540e565b602090810291909101015250600101610fbd565b5050915091565b602081811b83176000818152600f909252604090912054906060908267ffffffffffffffff81111561109657611096614bf3565b6040519080825280602002602001820160405280156110bf578160200160208202803683370190505b50915060005b8381101561113d576000828152600f602052604090208054829081106110ed576110ed61540e565b9060005260206000200160009054906101000a90046001600160a01b031683828151811061111d5761111d61540e565b6001600160a01b03909216602092830291909101909101526001016110c5565b50509250929050565b6000818152600260205260409020546001600160a01b038481169116146111af5760405162461bcd60e51b815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610cf7565b6001600160a01b0382166111f95760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610cf7565b336001600160a01b038416148061123357506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b8061125457506000818152600460205260409020546001600160a01b031633145b6112915760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610cf7565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61132b838383611146565b6001600160a01b0382163b1561141057604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af11580156113a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c69190615424565b6001600160e01b031916146114105760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610cf7565b505050565b600081815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff808216606085810191909152640100000000830482166080860152600160401b830490911660a0850152938593929160c084019160ff91041660058111156114b6576114b6614b60565b60058111156114c7576114c7614b60565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561154657602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116115095790505b505050505081525050905061155b8185613f1c565b91508151925050915091565b60008082118015610be15750600954611581906001615457565b821092915050565b6000611596826001615457565b90506009548111156115c957600954604051637ae5968560e01b8152610cf7918391600401918252602082015260400190565b919050565b6006546001600160a01b0316331461160e5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b805160000361163057604051637c946ed760e01b815260040160405180910390fd5b600861163c82826154ba565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf68160405161166c91906149a3565b60405180910390a150565b600f602052816000526040600020818154811061169357600080fd5b6000918252602090912001546001600160a01b03169150829050565b6000818152600260205260409020546001600160a01b0316806115c95760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610cf7565b60088054610bf4906153d4565b60006001600160a01b0382166117795760405162461bcd60e51b815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610cf7565b506001600160a01b031660009081526003602052604090205490565b600d60205281600052604060002081815481106117b157600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b900463ffffffff16905082565b600081815260136020908152604080832081516101008101835281546001600160601b0381168252600160601b908190046001600160a01b031694820194909452600182015492810192909252600281015463ffffffff8082166060850152640100000000820481166080850152600160401b82041660a0840152849360c08401910460ff16600581111561187257611872614b60565b600581111561188357611883614b60565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561190257602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116118c55790505b50505050508152505090506004600581111561192057611920614b60565b8160c00151600581111561193657611936614b60565b14611975578060c00151600581111561195157611951614b60565b604051633c053f9d60e21b8152600481019190915260248101849052604401610cf7565b83518551146119a457845184516040516308151c1160e41b815260048101929092526024820152604401610cf7565b80602001516001600160a01b0316336001600160a01b0316146119f85760208101516040516379f91cd360e01b81523360048201526001600160a01b03909116602482015260448101849052606401610cf7565b845160005b81811015611c1d57600060116000898481518110611a1d57611a1d61540e565b6020908102919091018101516001600160a01b03908116835282820193909352604091820160009081205490931660a08a901b81178085526010909252919092205489519193506001600160601b03169081908a9086908110611a8257611a8261540e565b60200260200101516001611a96919061557a565b6001600160601b03161115611af057600b8054829190600090611ac39084906001600160601b031661557a565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555060009050611b74565b888481518110611b0257611b0261540e565b6020908102919091010151600b8054600090611b289084906001600160601b031661557a565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550888481518110611b5e57611b5e61540e565b602002602001015181611b7191906155a1565b90505b600082815260106020526040902080546bffffffffffffffffffffffff19166001600160601b038316179055885188906001600160a01b038516907fa2e524bd0f71903485fbb3d6d50cb305f61005ceea2047c3ac92aa7e0d104306908c9088908110611be357611be361540e565b6020026020010151604051611c0791906001600160601b0391909116815260200190565b60405180910390a35050508060010190506119fd565b5060019695505050505050565b6006546000906001600160a01b03163314611c6d5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b038316611c945760405163d92e233d60e01b815260040160405180910390fd5b506001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055600190565b600c6020528160005260406000208181548110611cdf57600080fd5b90600052602060002001600091509150505481565b60018054610bf4906153d4565b60006001600a541115611d27576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a55600b54600160601b90046001600160a01b03163314611d7957600b5460405163312d21ff60e11b8152336004820152600160601b9091046001600160a01b03166024820152604401610cf7565b50600b546001600160601b03168015611e5757600b80546bffffffffffffffffffffffff19169055604051600090339083908381818185875af1925050503d8060008114611de3576040519150601f19603f3d011682016040523d82523d6000602084013e611de8565b606091505b5050905080611e205760405163cd3f165960e01b81526000600482015230602482015233604482015260648101839052608401610cf7565b60405182815233907ff36f4d6622e16a536bbb049064af779cdd483a0b388d347d3752a65f1058bf5b9060200160405180910390a2505b6001600a5590565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6006546001600160a01b03163314611f0b5760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b038116611f325760405163d92e233d60e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0383169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d90600090a250565b6000806001600a541115611fa3576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314611fe85760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b03841661200f5760405163d92e233d60e01b815260040160405180910390fd5b600083815260136020526040902060056002820154600160601b900460ff16600581111561203f5761203f614b60565b14612088576002810154600160601b900460ff16600581111561206457612064614b60565b604051633c053f9d60e21b8152600481019190915260248101859052604401610cf7565b60a084901b6001600160a01b038616176000818152600d6020908152604080832080548251818502810185019093528083529192909190849084015b8282101561211057600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b900463ffffffff16818301528252600190920191016120c4565b505082519293505050600081900361214d5760405163df2ddd7360e01b81526001600160a01b038916600482015260248101889052604401610cf7565b808460020160088282829054906101000a900463ffffffff1661217091906155c1565b92506101000a81548163ffffffff021916908363ffffffff1602179055508360020160089054906101000a900463ffffffff1663ffffffff166000036121c65760028401805460ff60601b1916600160601b1790555b60005b8181101561228457600088905060208483815181106121ea576121ea61540e565b60209081029190910181015181015163ffffffff1690911b919091176000818152600e9092526040909120546122319064010000000090046001600160601b031688615457565b9650601160008584815181106122495761224961540e565b602090810291909101810151516001600160a01b0316825281019190915260400160002080546001600160a01b0319169055506001016121c9565b506000838152600d6020526040812061229c916147e6565b6000838152601060205260409020546001600160601b0316808611156122c957806001600160601b031695505b85156123c25760008481526010602052604080822080546bffffffffffffffffffffffff19169055516001600160a01b038b169088908381818185875af1925050503d8060008114612337576040519150601f19603f3d011682016040523d82523d6000602084013e61233c565b606091505b505090508061237d5760405163cd3f165960e01b8152600060048201523060248201526001600160a01b038b16604482015260648101889052608401610cf7565b896001600160a01b03167fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d886040516123b891815260200190565b60405180910390a2505b60405188906001600160a01b038b16907f5ebf7fe30be09f0f03b9195632508d95c8b67bf010c93abda67f70d5d9599d1e90600090a350506001600a8190559793965092945050505050565b6000818152600c60209081526040808320805482518185028101850190935280835260609383018282801561246257602002820191906000526020600020905b81548152602001906001019080831161244e575b5050505050905080519150915091565b6006546001600160a01b031633146124b25760065460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b0381166124d95760405163d92e233d60e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b90600090a250565b61252e858585611146565b6001600160a01b0384163b1561260157604051630a85bd0160e11b808252906001600160a01b0386169063150b7a02906125749033908a908990899089906004016155de565b6020604051808303816000875af1158015612593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b79190615424565b6001600160e01b031916146126015760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610cf7565b5050505050565b6000818152601360205260408120600101546060915060086040518060400160405280600981526020016806630313730313232360bc1b81525061264b83614057565b612658608085901b614057565b60405160200161266b9493929190615632565b604051602081830303815290604052915050919050565b6007546000906001600160a01b031633146126c55760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b60006126d0836116af565b9050876001600160a01b0316816001600160a01b0316146127175760405163521eb56d60e11b81526001600160a01b03808a16600483015282166024820152604401610cf7565b600083815260136020908152604080832081516101008101835281546001600160601b03811682526001600160a01b03600160601b918290041694820194909452600182015492810192909252600281015463ffffffff8082166060850152640100000000820481166080850152600160401b82041660a08401529192909160c084019160ff91041660058111156127b1576127b1614b60565b60058111156127c2576127c2614b60565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561284157602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116128045790505b50505050508152505090506001600581111561285f5761285f614b60565b8160c00151600581111561287557612875614b60565b14612890578060c00151600581111561206457612064614b60565b61289b888888614227565b63ffffffff85166060820152600060808201819052875167ffffffffffffffff8111156128ca576128ca614bf3565b6040519080825280602002602001820160405280156128f3578160200160208202803683370190505b5090506000885167ffffffffffffffff81111561291257612912614bf3565b60405190808252806020026020018201604052801561295757816020015b60408051808201909152600080825260208201528152602001906001900390816129305790505b5090506000805b8a51811015612a82578981815181106129795761297961540e565b60200260200101516000015163ffffffff166000036129ee57600088905060208c83815181106129ab576129ab61540e565b60209081029190910181015163ffffffff1690911b919091176000908152600e9091526040902080546fffffffffffffffffffffffffffffffff19169055612a7a565b8a8181518110612a0057612a0061540e565b6020026020010151848381518110612a1a57612a1a61540e565b602002602001019063ffffffff16908163ffffffff1681525050898181518110612a4657612a4661540e565b6020026020010151838381518110612a6057612a6061540e565b60200260200101819052508180612a76906156c4565b9250505b60010161295e565b5060408401518b8114612ab9576000888152600c602090815260408083208054600181018255908452919092200182905585018c90525b612ac6858585858c61432f565b6000888152601360209081526040918290208751918801516001600160a01b0316600160601b9081026001600160601b03909316929092178155918701516001830155606087015160028301805460808a015160a08b015163ffffffff908116600160401b026bffffffff0000000000000000199282166401000000000267ffffffffffffffff199094169190951617919091179081168317825560c08a01518a9594909360ff60601b19166cffffffffff0000000000000000199092169190911790836005811115612b9b57612b9b614b60565b021790555060e08201518051612bbb916003840191602090910190614807565b50506040518d81528991507fff312ce131c4d73ac90ece91266be7090486c5e15f78b7ea2b108c36dfd475299060200160405180910390a25060019c9b505050505050505050505050565b6000806001600a541115612c2d576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314612c725760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6000612c7d846116af565b9050846001600160a01b0316816001600160a01b031614612cc45760405163521eb56d60e11b81526001600160a01b03808716600483015282166024820152604401610cf7565b600084815260136020526040902060016002820154600160601b900460ff166005811115612cf457612cf4614b60565b1480612d1f575060056002820154600160601b900460ff166005811115612d1d57612d1d614b60565b145b15612d68576002810154600160601b900460ff166005811115612d4457612d44614b60565b604051633c053f9d60e21b8152600481019190915260248101869052604401610cf7565b6002810154600160401b900463ffffffff1615612da25760028101805460ff60601b19166c05000000000000000000000000179055612db8565b60028101805460ff60601b1916600160601b1790555b60005b6003820154811015612e3d5760008690506020836003018381548110612de357612de361540e565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff16901b81179050600f60008281526020019081526020016000206000612e3491906148b6565b50600101612dbb565b5080546040516001600160601b0390911693506000906001600160a01b0388169085908381818185875af1925050503d8060008114612e98576040519150601f19603f3d011682016040523d82523d6000602084013e612e9d565b606091505b5050905080612ede5760405163cd3f165960e01b8152600060048201523060248201526001600160a01b038816604482015260648101859052608401610cf7565b866001600160a01b03167fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d85604051612f1991815260200190565b60405180910390a260405186907fe45f5b9540df4f71b7e044809fa318806328c1ea2388a70c7373d97ccf8a0faa90600090a250506001600a819055959194509092505050565b6007546000906001600160a01b03163314612fa35760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b8151835114612fd257825182516040516308151c1160e41b815260048101929092526024820152604401610cf7565b6000848152601360205260409020600280820154600160601b900460ff16600581111561300157613001614b60565b14613026576002810154600160601b900460ff166005811115612d4457612d44614b60565b83516000805b82811015613115576000889050602087838151811061304d5761304d61540e565b60209081029190910181015163ffffffff90811690921b929092176000818152600e845260408082208151808301909252549384168082526401000000009094046001600160601b03169481019490945290929190036130ee578783815181106130b9576130b961540e565b60200260200101518a6040516332832be560e21b8152600401610cf792919063ffffffff929092168252602082015260400190565b6020810151613106906001600160601b031685615457565b9350505080600101905061302c565b5080341461314657604051637ebbcab960e11b81523460048201526024810182905260448101889052606401610cf7565b6001600160a01b038881166000908152601160205260409020541615613182576040516322ddebd960e21b815260048101889052602401610cf7565b60a087901b6001600160a01b0389161760005b838110156134705760008882815181106131b1576131b161540e565b6020026020010151905060008883815181106131cf576131cf61540e565b60200260200101519050816001600160a01b03168c6001600160a01b03160361320e576040516322ddebd960e21b8152600481018c9052602401610cf7565b6001600160a01b038281166000908152601160205260409020541615613265576001600160a01b038281166000908152601160205260409081902054905163631695bd60e01b815291166004820152602401610cf7565b60008b905060208a858151811061327e5761327e61540e565b60209081029190910181015163ffffffff90811690921b929092176000818152600e8452604080822054600f909552902054909290911690036132d7576040516304ad100760e21b8152600481018d9052602401610cf7565b6000818152600f602090815260408083208054600181810183559185528385200180546001600160a01b03808a166001600160a01b031990921682179092558a8652600d8552838620845180860190955290845263ffffffff8089168587019081528254948501835591875294909520925192909101805494518416600160a01b0277ffffffffffffffffffffffffffffffffffffffffffffffff19909516929091169190911792909217909155600289018054600160401b90049091169060086133a1836156dd565b91906101000a81548163ffffffff021916908363ffffffff160217905550508c60116000856001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826001600160a01b03168c8e6001600160a01b03167f6835389a6da5341647f18cbe0a89c56f473f4c17bfaee6e6d07d61f1928e0b7c8560405161345a919063ffffffff91909116815260200190565b60405180910390a4505050806001019050613195565b50600284015463ffffffff64010000000082048116600160401b90920416036134b25760028401805460ff60601b19166c030000000000000000000000001790555b600081815260106020526040812080543492906134d99084906001600160601b031661557a565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550886001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3460405161353891815260200190565b60405180910390a250600198975050505050505050565b6007546000906001600160a01b031633146135925760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b600061359d836116af565b9050836001600160a01b0316816001600160a01b0316146135e45760405163521eb56d60e11b81526001600160a01b03808616600483015282166024820152604401610cf7565b600083815260136020526040902060016002820154600160601b900460ff16600581111561361457613614614b60565b1461363557604051635960d22f60e11b815260048101859052602401610cf7565b80546001600160601b0316341461367a578054604051631c30abbb60e31b81523460048201526001600160601b03909116602482015260448101859052606401610cf7565b60028101805460ff60601b19166c0200000000000000000000000017905560405184907fa48b531f972c0e4aca57afcc5c099c52a7bd21bc5e2a1b733eec3be9e88da97a90600090a2506001949350505050565b6137166040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529060c08201908152602001606081525090565b60008281526013602090815260409182902082516101008101845281546001600160601b0381168252600160601b908190046001600160a01b031693820193909352600182015493810193909352600281015463ffffffff8082166060860152640100000000820481166080860152600160401b82041660a0850152909160c08401910460ff1660058111156137ae576137ae614b60565b60058111156137bf576137bf614b60565b81526020016003820180548060200260200160405190810160405280929190818152602001828054801561383e57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116138015790505b5050505050815250509050919050565b60006001600a541115613874576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b031633146138b95760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b60006138c4856116af565b9050856001600160a01b0316816001600160a01b03161461390b5760405163521eb56d60e11b81526001600160a01b03808816600483015282166024820152604401610cf7565b6001600160a01b03841660009081526012602052604090205460ff1661394e5760405162a2307960e51b81526001600160a01b0385166004820152602401610cf7565b600085815260136020526040902060036002820154600160601b900460ff16600581111561397e5761397e614b60565b146139c7576002810154600160601b900460ff1660058111156139a3576139a3614b60565b604051633c053f9d60e21b8152600481019190915260248101879052604401610cf7565b604080516101008101825282546001600160601b0381168252600160601b908190046001600160a01b03166020830152600184015492820192909252600283015463ffffffff8082166060840152640100000000820481166080840152600160401b82041660a0830152600092613af49291859160c08401910460ff166005811115613a5557613a55614b60565b6005811115613a6657613a66614b60565b815260200160038201805480602002602001604051908101604052809291908181526020018280548015613ae557602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411613aa85790505b50505050508152505088613f1c565b6002830154604051631e731b7560e31b81529192506001600160a01b0388169163f398dba891613b3191859163ffffffff16908a90600401615700565b6020604051808303816000875af1158015613b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b74919061573b565b82546001600160601b0316600160601b6001600160a01b03831690810291909117845560028401805460ff60601b19166c040000000000000000000000001790556040519195509088907f2d53f895cd5faf3cddba94a25c2ced2105885b5b37450ff430ffa3cbdf332c7490600090a360405187907fa133ed72c03a7d008deaae618a61613c4fd41c67bba1cad1a6bc0a1c5a9c156e90600090a250506001600a5550949350505050565b60006001600a541115613c45576040516345f5ce8b60e11b815260040160405180910390fd5b6002600a556007546001600160a01b03163314613c8a5760075460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610cf7565b6001600160a01b038616613cb15760405163d92e233d60e01b815260040160405180910390fd5b613cbc858585614227565b60005b8451811015613d4657838181518110613cda57613cda61540e565b60200260200101516000015163ffffffff1660001480613d205750838181518110613d0757613d0761540e565b6020026020010151602001516001600160601b03166000145b15613d3e57604051637c946ed760e01b815260040160405180910390fd5b600101613cbf565b505060095480613d55816156c4565b915050613da06040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529060c08201908152602001606081525090565b63ffffffff8316606082015260408101869052600160c082018181525050613dcc81868688518661432f565b6000828152601360209081526040918290208351918401516001600160a01b0316600160601b9081026001600160601b039093169290921781559183015160018301556060830151600283018054608086015160a087015163ffffffff908116600160401b026bffffffff0000000000000000199282166401000000000267ffffffffffffffff199094169190951617919091179081168317825560c0860151869594909360ff60601b19166cffffffffff0000000000000000199092169190911790836005811115613ea157613ea1614b60565b021790555060e08201518051613ec1916003840191602090910190614807565b5050506009829055613ed387836145dc565b817fb34c1e02384201736eb4693b9b173306cb41bff12f15894dea5773088e9a3b1c87604051613f0591815260200190565b60405180910390a2506001600a5595945050505050565b60608260a0015163ffffffff1667ffffffffffffffff811115613f4157613f41614bf3565b604051908082528060200260200182016040528015613f6a578160200160208202803683370190505b5090506000805b8460e001515181101561404f57600084905060208660e001518381518110613f9b57613f9b61540e565b602002602001015163ffffffff16901b8117905060005b6000828152600f6020526040902054811015614045576000828152600f60205260409020805482908110613fe857613fe861540e565b9060005260206000200160009054906101000a90046001600160a01b03168585815181106140185761401861540e565b6001600160a01b03909216602092830291909101909101528361403a816156c4565b945050600101613fb2565b5050600101613f71565b505092915050565b7aff00000000000000ff00000000000000ff00000000000000ff00006bffffffff0000000000000000604083901c9081167bffffffff00000000000000000000000000000000000000000000000084161760201c6fffffffff000000000000000000000000919091166001600160e01b031984161717601081901c9182167eff00000000000000ff00000000000000ff00000000000000ff000000000000821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c1617906141c3827f0606060606060606060606060606060606060606060606060606060606060606615457565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f1660276141f39190615758565b61421d827f3030303030303030303030303030303030303030303030303030303030303030615457565b610be19190615457565b600083900361424957604051637c946ed760e01b815260040160405180910390fd5b8151158061425957508051825114155b1561428457815181516040516308151c1160e41b815260048101929092526024820152604401610cf7565b6000805b83518110156126015761429c826001615457565b8482815181106142ae576142ae61540e565b602002602001015163ffffffff161015614302578381815181106142d4576142d461540e565b6020026020010151604051632ab10b0b60e21b8152600401610cf7919063ffffffff91909116815260200190565b8381815181106143145761431461540e565b602090810291909101015163ffffffff169150600101614288565b60008267ffffffffffffffff81111561434a5761434a614bf3565b604051908082528060200260200182016040528015614373578160200160208202803683370190505b5060e087015260005b838110156144f9578581815181106143965761439661540e565b60200260200101518760e0015182815181106143b4576143b461540e565b63ffffffff90921660209283029190910182015286518491908890849081106143df576143df61540e565b602002602001015163ffffffff16901b811790508582815181106144055761440561540e565b6020908102919091018101516000838152600e8352604090208151815492909301516001600160601b0316640100000000026fffffffffffffffffffffffffffffffff1990921663ffffffff90931692909217179055855186908390811061446f5761446f61540e565b6020026020010151600001518860800181815161448c919061576f565b63ffffffff1690525085516001600160601b038416908790849081106144b4576144b461540e565b6020026020010151602001516001600160601b031611156144f0578582815181106144e1576144e161540e565b60200260200101516020015192505b5060010161437c565b506001600160601b0381168652608086015160009061451990600261578c565b61452490600161576f565b63ffffffff1690506145376003826157c2565b600003614550576145496003826157d6565b9050614569565b61455b6003826157d6565b614566906001615457565b90505b80876060015163ffffffff1610806145945750866080015163ffffffff16876060015163ffffffff16115b156145d3576060870151608088015160405163eb3a8ba360e01b815263ffffffff92831660048201526024810184905291166044820152606401610cf7565b50505050505050565b6145e682826146cc565b6001600160a01b0382163b156146c857604051630a85bd0160e11b80825233600483015260006024830181905260448301849052608060648401526084830152906001600160a01b0384169063150b7a029060a4016020604051808303816000875af115801561465a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061467e9190615424565b6001600160e01b031916146146c85760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610cf7565b5050565b6001600160a01b0382166147165760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610cf7565b6000818152600260205260409020546001600160a01b03161561477b5760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610cf7565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b508054600082559060005260206000209081019061480491906148d4565b50565b828054828255906000526020600020906007016008900481019282156148a65791602002820160005b8382111561487457835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302614830565b80156148a45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302614874565b505b506148b2929150614904565b5090565b50805460008255906000526020600020908101906148049190614904565b5b808211156148b257805477ffffffffffffffffffffffffffffffffffffffffffffffff191681556001016148d5565b5b808211156148b25760008155600101614905565b6001600160e01b03198116811461480457600080fd5b60006020828403121561494157600080fd5b813561494c81614919565b9392505050565b60005b8381101561496e578181015183820152602001614956565b50506000910152565b6000815180845261498f816020860160208601614953565b601f01601f19169290920160200192915050565b60208152600061494c6020830184614977565b6000602082840312156149c857600080fd5b5035919050565b6001600160a01b038116811461480457600080fd5b600080604083850312156149f757600080fd5b8235614a02816149cf565b946020939093013593505050565b600060208284031215614a2257600080fd5b813561494c816149cf565b6000604080830185845260206040602086015281865180845260608701915060208801935060005b81811015614a89578451805163ffffffff1684528401516001600160601b0316848401529383019391850191600101614a55565b509098975050505050505050565b60008060408385031215614aaa57600080fd5b50508035926020909101359150565b60008151808452602080850194506020840160005b83811015614af35781516001600160a01b031687529582019590820190600101614ace565b509495945050505050565b828152604060208201526000614b176040830184614ab9565b949350505050565b600080600060608486031215614b3457600080fd5b8335614b3f816149cf565b92506020840135614b4f816149cf565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b60068110614b9457634e487b7160e01b600052602160045260246000fd5b9052565b6001600160601b03881681526001600160a01b03871660208201526040810186905263ffffffff85811660608301528481166080830152831660a082015260e08101614be760c0830184614b76565b98975050505050505050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715614c2c57614c2c614bf3565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614c5b57614c5b614bf3565b604052919050565b600067ffffffffffffffff831115614c7d57614c7d614bf3565b614c90601f8401601f1916602001614c32565b9050828152838383011115614ca457600080fd5b828260208301376000602084830101529392505050565b600060208284031215614ccd57600080fd5b813567ffffffffffffffff811115614ce457600080fd5b8201601f81018413614cf557600080fd5b614b1784823560208401614c63565b600067ffffffffffffffff821115614d1e57614d1e614bf3565b5060051b60200190565b600082601f830112614d3957600080fd5b81356020614d4e614d4983614d04565b614c32565b8083825260208201915060208460051b870101935086841115614d7057600080fd5b602086015b84811015614d95578035614d88816149cf565b8352918301918301614d75565b509695505050505050565b80356001600160601b03811681146115c957600080fd5b600080600060608486031215614dcc57600080fd5b833567ffffffffffffffff80821115614de457600080fd5b614df087838801614d28565b9450602091508186013581811115614e0757600080fd5b86019050601f81018713614e1a57600080fd5b8035614e28614d4982614d04565b81815260059190911b82018301908381019089831115614e4757600080fd5b928401925b82841015614e6c57614e5d84614da0565b82529284019290840190614e4c565b96999698505050506040949094013593505050565b60008060408385031215614e9457600080fd5b8235614e9f816149cf565b915060208301358015158114614eb457600080fd5b809150509250929050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b81811015614f0257845183529383019391830191600101614ee6565b5090979650505050505050565b600080600080600060808688031215614f2757600080fd5b8535614f32816149cf565b94506020860135614f42816149cf565b935060408601359250606086013567ffffffffffffffff80821115614f6657600080fd5b818801915088601f830112614f7a57600080fd5b813581811115614f8957600080fd5b896020828501011115614f9b57600080fd5b9699959850939650602001949392505050565b803563ffffffff811681146115c957600080fd5b600082601f830112614fd357600080fd5b81356020614fe3614d4983614d04565b8083825260208201915060208460051b87010193508684111561500557600080fd5b602086015b84811015614d955761501b81614fae565b835291830191830161500a565b600082601f83011261503957600080fd5b81356020615049614d4983614d04565b82815260069290921b8401810191818101908684111561506857600080fd5b8286015b84811015614d9557604081890312156150855760008081fd5b61508d614c09565b61509682614fae565b81526150a3858301614da0565b8186015283529183019160400161506c565b60008060008060008060c087890312156150ce57600080fd5b86356150d9816149cf565b955060208701359450604087013567ffffffffffffffff808211156150fd57600080fd5b6151098a838b01614fc2565b9550606089013591508082111561511f57600080fd5b5061512c89828a01615028565b93505061513b60808801614fae565b915060a087013590509295509295509295565b6000806000806080858703121561516457600080fd5b843561516f816149cf565b935060208501359250604085013567ffffffffffffffff8082111561519357600080fd5b61519f88838901614d28565b935060608701359150808211156151b557600080fd5b506151c287828801614fc2565b91505092959194509250565b600080604083850312156151e157600080fd5b82356151ec816149cf565b91506020830135614eb4816149cf565b60008151808452602080850194506020840160005b83811015614af357815163ffffffff1687529582019590820190600101615211565b602081526001600160601b0382511660208201526001600160a01b036020830151166040820152604082015160608201526000606083015161527d608084018263ffffffff169052565b50608083015163ffffffff811660a08401525060a083015163ffffffff811660c08401525060c08301516152b460e0840182614b76565b5060e083015161010083810152614b176101208401826151fc565b600080600080608085870312156152e557600080fd5b84356152f0816149cf565b9350602085013592506040850135615307816149cf565b9150606085013567ffffffffffffffff81111561532357600080fd5b8501601f8101871361533457600080fd5b6151c287823560208401614c63565b600080600080600060a0868803121561535b57600080fd5b8535615366816149cf565b945060208601359350604086013567ffffffffffffffff8082111561538a57600080fd5b61539689838a01614fc2565b945060608801359150808211156153ac57600080fd5b506153b988828901615028565b9250506153c860808701614fae565b90509295509295909350565b600181811c908216806153e857607f821691505b60208210810361540857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561543657600080fd5b815161494c81614919565b634e487b7160e01b600052601160045260246000fd5b80820180821115610be157610be1615441565b601f821115611410576000816000526020600020601f850160051c810160208610156154935750805b601f850160051c820191505b818110156154b25782815560010161549f565b505050505050565b815167ffffffffffffffff8111156154d4576154d4614bf3565b6154e8816154e284546153d4565b8461546a565b602080601f83116001811461551d57600084156155055750858301515b600019600386901b1c1916600185901b1785556154b2565b600085815260208120601f198616915b8281101561554c5788860151825594840194600190910190840161552d565b508582101561556a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160601b0381811683821601908082111561559a5761559a615441565b5092915050565b6001600160601b0382811682821603908082111561559a5761559a615441565b63ffffffff82811682821603908082111561559a5761559a615441565b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000808654615640816153d4565b60018281168015615658576001811461566d5761569c565b60ff198416875282151583028701945061569c565b8a60005260208060002060005b858110156156935781548a82015290840190820161567a565b50505082870194505b5050505085516156b0818360208a01614953565b019384525050602082015260400192915050565b6000600182016156d6576156d6615441565b5060010190565b600063ffffffff8083168181036156f6576156f6615441565b6001019392505050565b6060815260006157136060830186614ab9565b63ffffffff8516602084015282810360408401526157318185614977565b9695505050505050565b60006020828403121561574d57600080fd5b815161494c816149cf565b8082028115828204841417610be157610be1615441565b63ffffffff81811683821601908082111561559a5761559a615441565b63ffffffff81811683821602808216919082811461404f5761404f615441565b634e487b7160e01b600052601260045260246000fd5b6000826157d1576157d16157ac565b500690565b6000826157e5576157e56157ac565b50049056fea2646970667358221220001599f9a184266e9e5a874dffd64276a4e7bb33b4140a66a8fe43c5f040d06964736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.23/ServiceRegistryTokenUtility.json b/abis/0.8.23/ServiceRegistryTokenUtility.json new file mode 100644 index 00000000..8c7db65d --- /dev/null +++ b/abis/0.8.23/ServiceRegistryTokenUtility.json @@ -0,0 +1,926 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ServiceRegistryTokenUtility", + "sourceName": "contracts/ServiceRegistryTokenUtility.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_serviceRegistry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "AgentInstanceRegistered", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentInstancesSlotsFilled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "AgentNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentNotInService", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "componentId", + "type": "uint256" + } + ], + "name": "ComponentNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "HashExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectAgentBondingValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectRegistrationDepositValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OnlyOwnServiceMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorHasNoInstances", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceMustBeInactive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TokenRejected", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "WrongAgentId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "state", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "currentThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxThreshold", + "type": "uint256" + } + ], + "name": "WrongThreshold", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "drainer", + "type": "address" + } + ], + "name": "DrainerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorTokenSlashed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenDeposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "drainer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenDrain", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenRefund", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "activateRegistrationTokenDeposit", + "outputs": [ + { + "internalType": "bool", + "name": "isTokenSecured", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newDrainer", + "type": "address" + } + ], + "name": "changeDrainer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newManager", + "type": "address" + } + ], + "name": "changeManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + }, + { + "internalType": "uint256[]", + "name": "bonds", + "type": "uint256[]" + } + ], + "name": "createWithToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "drain", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "drainer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "getAgentBond", + "outputs": [ + { + "internalType": "uint256", + "name": "bond", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "getOperatorBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "isTokenSecuredService", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapOperatorAndServiceIdOperatorBalances", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceAndAgentIdAgentBond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapServiceIdTokenDeposit", + "outputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint96", + "name": "securityDeposit", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapSlashedFunds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + }, + { + "internalType": "uint32[]", + "name": "agentIds", + "type": "uint32[]" + } + ], + "name": "registerAgentsTokenDeposit", + "outputs": [ + { + "internalType": "bool", + "name": "isTokenSecured", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "resetServiceToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "serviceRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "agentInstances", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "slash", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "terminateTokenRefund", + "outputs": [ + { + "internalType": "uint256", + "name": "securityRefund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "unbondTokenRefund", + "outputs": [ + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a0604052600160035534801561001557600080fd5b5060405162001f1338038062001f1383398101604081905261003691610080565b6001600160a01b03811661005d5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0316608052600080546001600160a01b031916331790556100b0565b60006020828403121561009257600080fd5b81516001600160a01b03811681146100a957600080fd5b9392505050565b608051611e2b620000e8600039600081816103be015281816105c1015281816106bd015281816108470152610b5b0152611e2b6000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806375c1f934116100d8578063b0f4c2481161008c578063dc4f8bc511610066578063dc4f8bc514610400578063e3ce9a8414610413578063ece531321461042657600080fd5b8063b0f4c248146103a6578063cbcf252a146103b9578063cbd413a5146103e057600080fd5b80638da5cb5b116100bd5780638da5cb5b1461036d578063a3fbbaae14610380578063a6f9dae11461039357600080fd5b806375c1f934146103165780638a2bd86f1461033e57600080fd5b806346d7836d1161013a578063542db44911610114578063542db449146102dd57806357838e85146102f05780635f3662581461030357600080fd5b806346d7836d14610264578063481c6a751461029f5780635419bb8c146102ca57600080fd5b806325e1afc31161016b57806325e1afc3146101cf5780633cebfa4f146101e2578063421448541461024457600080fd5b806310c6aa191461018757806313f824d81461019c575b600080fd5b61019a610195366004611940565b610439565b005b6101bc6101aa366004611964565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b6101bc6101dd366004611964565b6104fc565b61021d6101f0366004611964565b6004602052600090815260409020546001600160a01b03811690600160a01b90046001600160601b031682565b604080516001600160a01b0390931683526001600160601b039091166020830152016101c6565b6101bc610252366004611964565b60066020526000908152604090205481565b61028f610272366004611964565b6000908152600460205260409020546001600160a01b0316151590565b60405190151581526020016101c6565b6001546102b2906001600160a01b031681565b6040516001600160a01b0390911681526020016101c6565b61028f6102d8366004611a57565b6106b6565b61028f6102eb366004611964565b610a80565b6002546102b2906001600160a01b031681565b61019a610311366004611964565b610e06565b6101bc610324366004611b22565b602090811b90911760009081526005909152604090205490565b6101bc61034c366004611b44565b60a01b6001600160a01b039091161760009081526006602052604090205490565b6000546102b2906001600160a01b031681565b61019a61038e366004611940565b610e57565b61019a6103a1366004611940565b610f15565b6101bc6103b4366004611b44565b610fd1565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6101bc6103ee366004611940565b60076020526000908152604090205481565b61028f61040e366004611bea565b6110f7565b61019a610421366004611c43565b611456565b6101bc610434366004611940565b6116f2565b6000546001600160a01b0316331461047e5760005460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6001600160a01b0381166104a55760405163d92e233d60e01b815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f8d1e8547016120917daad7f81c42b48f7fee379badc48f1889f0f43bb619472590600090a250565b600060016003541115610522576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b031633146105675760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b6000828152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915280156106aa5781602001516001600160601b0316925060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e866040518263ffffffff1660e01b815260040161060d91815260200190565b602060405180830381865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190611cc3565b905061065b82828661181b565b816001600160a01b0316816001600160a01b03167fb5ea3bd24bc48df54cdc99f11e448ab16503a3e16f46c363202f5fff4891acba866040516106a091815260200190565b60405180910390a3505b50506001600355919050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634236aff8856040518263ffffffff1660e01b815260040161070991815260200190565b60e060405180830381865afa158015610726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074a9190611ce0565b9650505050509250508060ff1660041461078357604051633c053f9d60e21b815260ff8216600482015260248101859052604401610475565b8551158061079357508451865114155b156107be57855185516040516308151c1160e41b815260048101929092526024820152604401610475565b336001600160a01b038316146107ff576040516379f91cd360e01b81523360048201526001600160a01b038316602482015260448101859052606401610475565b6000848152600460205260409020546001600160a01b0316806108355760405163d92e233d60e01b815260040160405180910390fd5b86516000805b82811015610a315760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634eb780da8c848151811061088657610886611d84565b60200260200101516040518263ffffffff1660e01b81526004016108b991906001600160a01b0391909116815260200190565b602060405180830381865afa1580156108d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fa9190611cc3565b60a08a901b6001600160a01b0382161760008181526006602052604081205492935090919081900361092e57505050610a29565b808c858151811061094157610941611d84565b602002602001015110610963576109588186611db0565b9450600090506109b2565b8b848151811061097557610975611d84565b6020026020010151856109889190611db0565b94508b848151811061099c5761099c611d84565b6020026020010151816109af9190611dc9565b90505b60008281526006602052604090208190558b518b906001600160a01b038516907fd79658b314eb967321e5e6a82ab39f6f7ffc567d38c6feee527761aca406a597908f9088908110610a0657610a06611d84565b6020026020010151604051610a1d91815260200190565b60405180910390a35050505b60010161083b565b506001600160a01b038316600090815260076020526040902054610a559082611db0565b6001600160a01b03909316600090815260076020526040902092909255506001979650505050505050565b600060016003541115610aa6576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b03163314610aeb5760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b6000828152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915280156106aa5760208201516040516331a9108f60e11b8152600481018690526001600160601b03909116906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bce9190611cc3565b604051636eb1769f60e11b81526001600160a01b03808316600483015230602483015291925060009185169063dd62ed3e90604401602060405180830381865afa158015610c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c449190611ddc565b905082811015610c7857604051631c30abbb60e31b8152600481018290526024810184905260448101889052606401610475565b6040516370a0823160e01b8152306004820152600196506000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce79190611ddc565b9050610cf58584308761189e565b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015610d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d609190611ddc565b905080821180610d79575084610d768383611dc9565b14155b15610da857604051631c30abbb60e31b81526000600482015260248101869052604481018a9052606401610475565b856001600160a01b0316846001600160a01b03167f98c09d9949722bae4bd0d988d4050091c3ae7ec6d51d3c6bbfe4233593944e9e87604051610ded91815260200190565b60405180910390a3505050505050506001600355919050565b6001546001600160a01b03163314610e465760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b600090815260046020526040812055565b6000546001600160a01b03163314610e975760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610475565b6001600160a01b038116610ebe5760405163d92e233d60e01b815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d90600090a250565b6000546001600160a01b03163314610f555760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610475565b6001600160a01b038116610f7c5760405163d92e233d60e01b815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b600060016003541115610ff7576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b0316331461103c5760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b6000828152600460205260409020546001600160a01b031680156110eb5760a083901b6001600160a01b03851617600081815260066020526040902054925082156110e95760008181526006602052604081205561109b82868561181b565b816001600160a01b0316856001600160a01b03167fb5ea3bd24bc48df54cdc99f11e448ab16503a3e16f46c363202f5fff4891acba856040516110e091815260200190565b60405180910390a35b505b50600160035592915050565b60006001600354111561111d576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b031633146111625760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b6000838152600460205260409020546001600160a01b031680156114495782516000805b828110156111e957600087905060208783815181106111a7576111a7611d84565b60209081029190910181015163ffffffff1690911b91909117600081815260059092526040909120546111da8185611db0565b93505050806001019050611186565b50604051636eb1769f60e11b81526001600160a01b0388811660048301523060248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561123a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125e9190611ddc565b90508181101561129257604051637ebbcab960e11b8152600481018290526024810183905260448101889052606401610475565b60a087901b6001600160a01b03891617600081815260066020526040812080548592906112c0908490611db0565b90915550506040516370a0823160e01b8152306004820152600196506000906001600160a01b038716906370a0823190602401602060405180830381865afa158015611310573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113349190611ddc565b9050611342868b308761189e565b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015611389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ad9190611ddc565b9050808211806113c65750846113c38383611dc9565b14155b156113f557604051637ebbcab960e11b81526000600482015260248101869052604481018b9052606401610475565b866001600160a01b03168b6001600160a01b03167f98c09d9949722bae4bd0d988d4050091c3ae7ec6d51d3c6bbfe4233593944e9e8760405161143a91815260200190565b60405180910390a35050505050505b5060016003559392505050565b6001546001600160a01b031633146114965760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b60408051600060248083018290528351808403909101815260449092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166370a0823160e01b1790527f70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be91906001600160a01b0386163b1561152757600080825160208401895afa91505b816115505760405163e77376f360e01b81526001600160a01b0387166004820152602401610475565b6000805b865181101561169e5785818151811061156f5761156f611d84565b602002602001015160000315611696576001600160601b03801686828151811061159b5761159b611d84565b602002602001015111156115f8578581815181106115bb576115bb611d84565b60200260200101516001600160601b03604051637ae5968560e01b81526004016104759291909182526001600160601b0316602082015260400190565b6000899050602088838151811061161157611611611d84565b602002602001015163ffffffff16901b8117905086828151811061163757611637611d84565b602002602001015160056000838152602001908152602001600020819055508287838151811061166957611669611d84565b602002602001015111156116945786828151811061168957611689611d84565b602002602001015192505b505b600101611554565b506040805180820182526001600160a01b0398891681526001600160601b03928316602080830191825260009b8c52600490529190992098519051909116600160a01b029616959095179095555050505050565b600060016003541115611718576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556000546001600160a01b0316331461175d5760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610475565b6002546001600160a01b03166117865760405163d92e233d60e01b815260040160405180910390fd5b506001600160a01b0381166000908152600760205260409020548015611811576001600160a01b038083166000908152600760205260408120556002546117d0918491168361181b565b6040518181526001600160a01b0383169033907feb64d3e0fe21df59e0edd78e9749e4bc9f3cf593a842d487fe40f29ef45fdad69060200160405180910390a35b6001600355919050565b600060405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d11600160005114161716915060006060528060405250806118985760405163cd3f165960e01b81526001600160a01b0380861660048301523060248301528416604482015260648101839052608401610475565b50505050565b60006040516323b872dd60e01b6000528460045283602452826044526020600060646000808a5af13d15601f3d11600160005114161716915060006060528060405250806119215760405163cd3f165960e01b81526001600160a01b03808716600483015280861660248301528416604482015260648101839052608401610475565b5050505050565b6001600160a01b038116811461193d57600080fd5b50565b60006020828403121561195257600080fd5b813561195d81611928565b9392505050565b60006020828403121561197657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156119bc576119bc61197d565b604052919050565b600067ffffffffffffffff8211156119de576119de61197d565b5060051b60200190565b600082601f8301126119f957600080fd5b81356020611a0e611a09836119c4565b611993565b8083825260208201915060208460051b870101935086841115611a3057600080fd5b602086015b84811015611a4c5780358352918301918301611a35565b509695505050505050565b600080600060608486031215611a6c57600080fd5b833567ffffffffffffffff80821115611a8457600080fd5b818601915086601f830112611a9857600080fd5b81356020611aa8611a09836119c4565b82815260059290921b8401810191818101908a841115611ac757600080fd5b948201945b83861015611aee578535611adf81611928565b82529482019490820190611acc565b97505087013592505080821115611b0457600080fd5b50611b11868287016119e8565b925050604084013590509250925092565b60008060408385031215611b3557600080fd5b50508035926020909101359150565b60008060408385031215611b5757600080fd5b8235611b6281611928565b946020939093013593505050565b63ffffffff8116811461193d57600080fd5b600082601f830112611b9357600080fd5b81356020611ba3611a09836119c4565b8083825260208201915060208460051b870101935086841115611bc557600080fd5b602086015b84811015611a4c578035611bdd81611b70565b8352918301918301611bca565b600080600060608486031215611bff57600080fd5b8335611c0a81611928565b925060208401359150604084013567ffffffffffffffff811115611c2d57600080fd5b611c3986828701611b82565b9150509250925092565b60008060008060808587031215611c5957600080fd5b843593506020850135611c6b81611928565b9250604085013567ffffffffffffffff80821115611c8857600080fd5b611c9488838901611b82565b93506060870135915080821115611caa57600080fd5b50611cb7878288016119e8565b91505092959194509250565b600060208284031215611cd557600080fd5b815161195d81611928565b600080600080600080600060e0888a031215611cfb57600080fd5b87516001600160601b0381168114611d1257600080fd5b6020890151909750611d2381611928565b604089015160608a01519197509550611d3b81611b70565b6080890151909450611d4c81611b70565b60a0890151909350611d5d81611b70565b60c089015190925060ff81168114611d7457600080fd5b8091505092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115611dc357611dc3611d9a565b92915050565b81810381811115611dc357611dc3611d9a565b600060208284031215611dee57600080fd5b505191905056fea264697066735822122023246dae9b531e20a6b83937091898d80680fe798cef8ba59934b9c4ee525fc764736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101825760003560e01c806375c1f934116100d8578063b0f4c2481161008c578063dc4f8bc511610066578063dc4f8bc514610400578063e3ce9a8414610413578063ece531321461042657600080fd5b8063b0f4c248146103a6578063cbcf252a146103b9578063cbd413a5146103e057600080fd5b80638da5cb5b116100bd5780638da5cb5b1461036d578063a3fbbaae14610380578063a6f9dae11461039357600080fd5b806375c1f934146103165780638a2bd86f1461033e57600080fd5b806346d7836d1161013a578063542db44911610114578063542db449146102dd57806357838e85146102f05780635f3662581461030357600080fd5b806346d7836d14610264578063481c6a751461029f5780635419bb8c146102ca57600080fd5b806325e1afc31161016b57806325e1afc3146101cf5780633cebfa4f146101e2578063421448541461024457600080fd5b806310c6aa191461018757806313f824d81461019c575b600080fd5b61019a610195366004611940565b610439565b005b6101bc6101aa366004611964565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b6101bc6101dd366004611964565b6104fc565b61021d6101f0366004611964565b6004602052600090815260409020546001600160a01b03811690600160a01b90046001600160601b031682565b604080516001600160a01b0390931683526001600160601b039091166020830152016101c6565b6101bc610252366004611964565b60066020526000908152604090205481565b61028f610272366004611964565b6000908152600460205260409020546001600160a01b0316151590565b60405190151581526020016101c6565b6001546102b2906001600160a01b031681565b6040516001600160a01b0390911681526020016101c6565b61028f6102d8366004611a57565b6106b6565b61028f6102eb366004611964565b610a80565b6002546102b2906001600160a01b031681565b61019a610311366004611964565b610e06565b6101bc610324366004611b22565b602090811b90911760009081526005909152604090205490565b6101bc61034c366004611b44565b60a01b6001600160a01b039091161760009081526006602052604090205490565b6000546102b2906001600160a01b031681565b61019a61038e366004611940565b610e57565b61019a6103a1366004611940565b610f15565b6101bc6103b4366004611b44565b610fd1565b6102b27f000000000000000000000000000000000000000000000000000000000000000081565b6101bc6103ee366004611940565b60076020526000908152604090205481565b61028f61040e366004611bea565b6110f7565b61019a610421366004611c43565b611456565b6101bc610434366004611940565b6116f2565b6000546001600160a01b0316331461047e5760005460405163521eb56d60e11b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6001600160a01b0381166104a55760405163d92e233d60e01b815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f8d1e8547016120917daad7f81c42b48f7fee379badc48f1889f0f43bb619472590600090a250565b600060016003541115610522576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b031633146105675760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b6000828152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915280156106aa5781602001516001600160601b0316925060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e866040518263ffffffff1660e01b815260040161060d91815260200190565b602060405180830381865afa15801561062a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064e9190611cc3565b905061065b82828661181b565b816001600160a01b0316816001600160a01b03167fb5ea3bd24bc48df54cdc99f11e448ab16503a3e16f46c363202f5fff4891acba866040516106a091815260200190565b60405180910390a3505b50506001600355919050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634236aff8856040518263ffffffff1660e01b815260040161070991815260200190565b60e060405180830381865afa158015610726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074a9190611ce0565b9650505050509250508060ff1660041461078357604051633c053f9d60e21b815260ff8216600482015260248101859052604401610475565b8551158061079357508451865114155b156107be57855185516040516308151c1160e41b815260048101929092526024820152604401610475565b336001600160a01b038316146107ff576040516379f91cd360e01b81523360048201526001600160a01b038316602482015260448101859052606401610475565b6000848152600460205260409020546001600160a01b0316806108355760405163d92e233d60e01b815260040160405180910390fd5b86516000805b82811015610a315760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634eb780da8c848151811061088657610886611d84565b60200260200101516040518263ffffffff1660e01b81526004016108b991906001600160a01b0391909116815260200190565b602060405180830381865afa1580156108d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fa9190611cc3565b60a08a901b6001600160a01b0382161760008181526006602052604081205492935090919081900361092e57505050610a29565b808c858151811061094157610941611d84565b602002602001015110610963576109588186611db0565b9450600090506109b2565b8b848151811061097557610975611d84565b6020026020010151856109889190611db0565b94508b848151811061099c5761099c611d84565b6020026020010151816109af9190611dc9565b90505b60008281526006602052604090208190558b518b906001600160a01b038516907fd79658b314eb967321e5e6a82ab39f6f7ffc567d38c6feee527761aca406a597908f9088908110610a0657610a06611d84565b6020026020010151604051610a1d91815260200190565b60405180910390a35050505b60010161083b565b506001600160a01b038316600090815260076020526040902054610a559082611db0565b6001600160a01b03909316600090815260076020526040902092909255506001979650505050505050565b600060016003541115610aa6576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b03163314610aeb5760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b6000828152600460209081526040918290208251808401909352546001600160a01b038116808452600160a01b9091046001600160601b03169183019190915280156106aa5760208201516040516331a9108f60e11b8152600481018690526001600160601b03909116906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bce9190611cc3565b604051636eb1769f60e11b81526001600160a01b03808316600483015230602483015291925060009185169063dd62ed3e90604401602060405180830381865afa158015610c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c449190611ddc565b905082811015610c7857604051631c30abbb60e31b8152600481018290526024810184905260448101889052606401610475565b6040516370a0823160e01b8152306004820152600196506000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610cc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce79190611ddc565b9050610cf58584308761189e565b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015610d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d609190611ddc565b905080821180610d79575084610d768383611dc9565b14155b15610da857604051631c30abbb60e31b81526000600482015260248101869052604481018a9052606401610475565b856001600160a01b0316846001600160a01b03167f98c09d9949722bae4bd0d988d4050091c3ae7ec6d51d3c6bbfe4233593944e9e87604051610ded91815260200190565b60405180910390a3505050505050506001600355919050565b6001546001600160a01b03163314610e465760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b600090815260046020526040812055565b6000546001600160a01b03163314610e975760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610475565b6001600160a01b038116610ebe5760405163d92e233d60e01b815260040160405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d90600090a250565b6000546001600160a01b03163314610f555760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610475565b6001600160a01b038116610f7c5760405163d92e233d60e01b815260040160405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b600060016003541115610ff7576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b0316331461103c5760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b6000828152600460205260409020546001600160a01b031680156110eb5760a083901b6001600160a01b03851617600081815260066020526040902054925082156110e95760008181526006602052604081205561109b82868561181b565b816001600160a01b0316856001600160a01b03167fb5ea3bd24bc48df54cdc99f11e448ab16503a3e16f46c363202f5fff4891acba856040516110e091815260200190565b60405180910390a35b505b50600160035592915050565b60006001600354111561111d576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556001546001600160a01b031633146111625760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b6000838152600460205260409020546001600160a01b031680156114495782516000805b828110156111e957600087905060208783815181106111a7576111a7611d84565b60209081029190910181015163ffffffff1690911b91909117600081815260059092526040909120546111da8185611db0565b93505050806001019050611186565b50604051636eb1769f60e11b81526001600160a01b0388811660048301523060248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561123a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125e9190611ddc565b90508181101561129257604051637ebbcab960e11b8152600481018290526024810183905260448101889052606401610475565b60a087901b6001600160a01b03891617600081815260066020526040812080548592906112c0908490611db0565b90915550506040516370a0823160e01b8152306004820152600196506000906001600160a01b038716906370a0823190602401602060405180830381865afa158015611310573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113349190611ddc565b9050611342868b308761189e565b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015611389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ad9190611ddc565b9050808211806113c65750846113c38383611dc9565b14155b156113f557604051637ebbcab960e11b81526000600482015260248101869052604481018b9052606401610475565b866001600160a01b03168b6001600160a01b03167f98c09d9949722bae4bd0d988d4050091c3ae7ec6d51d3c6bbfe4233593944e9e8760405161143a91815260200190565b60405180910390a35050505050505b5060016003559392505050565b6001546001600160a01b031633146114965760015460405163312d21ff60e11b81523360048201526001600160a01b039091166024820152604401610475565b60408051600060248083018290528351808403909101815260449092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166370a0823160e01b1790527f70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be91906001600160a01b0386163b1561152757600080825160208401895afa91505b816115505760405163e77376f360e01b81526001600160a01b0387166004820152602401610475565b6000805b865181101561169e5785818151811061156f5761156f611d84565b602002602001015160000315611696576001600160601b03801686828151811061159b5761159b611d84565b602002602001015111156115f8578581815181106115bb576115bb611d84565b60200260200101516001600160601b03604051637ae5968560e01b81526004016104759291909182526001600160601b0316602082015260400190565b6000899050602088838151811061161157611611611d84565b602002602001015163ffffffff16901b8117905086828151811061163757611637611d84565b602002602001015160056000838152602001908152602001600020819055508287838151811061166957611669611d84565b602002602001015111156116945786828151811061168957611689611d84565b602002602001015192505b505b600101611554565b506040805180820182526001600160a01b0398891681526001600160601b03928316602080830191825260009b8c52600490529190992098519051909116600160a01b029616959095179095555050505050565b600060016003541115611718576040516345f5ce8b60e11b815260040160405180910390fd5b60026003556000546001600160a01b0316331461175d5760005460405163521eb56d60e11b81523360048201526001600160a01b039091166024820152604401610475565b6002546001600160a01b03166117865760405163d92e233d60e01b815260040160405180910390fd5b506001600160a01b0381166000908152600760205260409020548015611811576001600160a01b038083166000908152600760205260408120556002546117d0918491168361181b565b6040518181526001600160a01b0383169033907feb64d3e0fe21df59e0edd78e9749e4bc9f3cf593a842d487fe40f29ef45fdad69060200160405180910390a35b6001600355919050565b600060405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d11600160005114161716915060006060528060405250806118985760405163cd3f165960e01b81526001600160a01b0380861660048301523060248301528416604482015260648101839052608401610475565b50505050565b60006040516323b872dd60e01b6000528460045283602452826044526020600060646000808a5af13d15601f3d11600160005114161716915060006060528060405250806119215760405163cd3f165960e01b81526001600160a01b03808716600483015280861660248301528416604482015260648101839052608401610475565b5050505050565b6001600160a01b038116811461193d57600080fd5b50565b60006020828403121561195257600080fd5b813561195d81611928565b9392505050565b60006020828403121561197657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156119bc576119bc61197d565b604052919050565b600067ffffffffffffffff8211156119de576119de61197d565b5060051b60200190565b600082601f8301126119f957600080fd5b81356020611a0e611a09836119c4565b611993565b8083825260208201915060208460051b870101935086841115611a3057600080fd5b602086015b84811015611a4c5780358352918301918301611a35565b509695505050505050565b600080600060608486031215611a6c57600080fd5b833567ffffffffffffffff80821115611a8457600080fd5b818601915086601f830112611a9857600080fd5b81356020611aa8611a09836119c4565b82815260059290921b8401810191818101908a841115611ac757600080fd5b948201945b83861015611aee578535611adf81611928565b82529482019490820190611acc565b97505087013592505080821115611b0457600080fd5b50611b11868287016119e8565b925050604084013590509250925092565b60008060408385031215611b3557600080fd5b50508035926020909101359150565b60008060408385031215611b5757600080fd5b8235611b6281611928565b946020939093013593505050565b63ffffffff8116811461193d57600080fd5b600082601f830112611b9357600080fd5b81356020611ba3611a09836119c4565b8083825260208201915060208460051b870101935086841115611bc557600080fd5b602086015b84811015611a4c578035611bdd81611b70565b8352918301918301611bca565b600080600060608486031215611bff57600080fd5b8335611c0a81611928565b925060208401359150604084013567ffffffffffffffff811115611c2d57600080fd5b611c3986828701611b82565b9150509250925092565b60008060008060808587031215611c5957600080fd5b843593506020850135611c6b81611928565b9250604085013567ffffffffffffffff80821115611c8857600080fd5b611c9488838901611b82565b93506060870135915080821115611caa57600080fd5b50611cb7878288016119e8565b91505092959194509250565b600060208284031215611cd557600080fd5b815161195d81611928565b600080600080600080600060e0888a031215611cfb57600080fd5b87516001600160601b0381168114611d1257600080fd5b6020890151909750611d2381611928565b604089015160608a01519197509550611d3b81611b70565b6080890151909450611d4c81611b70565b60a0890151909350611d5d81611b70565b60c089015190925060ff81168114611d7457600080fd5b8091505092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115611dc357611dc3611d9a565b92915050565b81810381811115611dc357611dc3611d9a565b600060208284031215611dee57600080fd5b505191905056fea264697066735822122023246dae9b531e20a6b83937091898d80680fe798cef8ba59934b9c4ee525fc764736f6c63430008170033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/scripts/deployment/l2/deploy_02_operator_whitelist.js b/scripts/deployment/l2/deploy_02_operator_whitelist.js index c000dbb7..fb802d85 100644 --- a/scripts/deployment/l2/deploy_02_operator_whitelist.js +++ b/scripts/deployment/l2/deploy_02_operator_whitelist.js @@ -81,7 +81,7 @@ async function main() { // Contract verification if (parsedData.contractVerification) { const execSync = require("child_process").execSync; - execSync("npx hardhat verify --constructor-args scripts/deployment/l2/verify_10_operator_whitelist.js --network " + providerName + " " + operatorWhitelist.address, { encoding: "utf-8" }); + execSync("npx hardhat verify --constructor-args scripts/deployment/l2/verify_02_operator_whitelist.js --network " + providerName + " " + operatorWhitelist.address, { encoding: "utf-8" }); } } diff --git a/scripts/deployment/l2/deploy_03_service_registry_token_utility.js b/scripts/deployment/l2/deploy_03_service_registry_token_utility.js index f22c23b3..19316fae 100644 --- a/scripts/deployment/l2/deploy_03_service_registry_token_utility.js +++ b/scripts/deployment/l2/deploy_03_service_registry_token_utility.js @@ -81,7 +81,7 @@ async function main() { // Contract verification if (parsedData.contractVerification) { const execSync = require("child_process").execSync; - execSync("npx hardhat verify --constructor-args scripts/deployment/l2/verify_11_service_registry_token_utility.js --network " + providerName + " " + serviceRegistryTokenUtility.address, { encoding: "utf-8" }); + execSync("npx hardhat verify --constructor-args scripts/deployment/l2/verify_03_service_registry_token_utility.js --network " + providerName + " " + serviceRegistryTokenUtility.address, { encoding: "utf-8" }); } } diff --git a/scripts/deployment/l2/deploy_04_service_manager_token.js b/scripts/deployment/l2/deploy_04_service_manager_token.js index 75c82d68..d791444d 100644 --- a/scripts/deployment/l2/deploy_04_service_manager_token.js +++ b/scripts/deployment/l2/deploy_04_service_manager_token.js @@ -84,7 +84,7 @@ async function main() { // Contract verification if (parsedData.contractVerification) { const execSync = require("child_process").execSync; - execSync("npx hardhat verify --constructor-args scripts/deployment/l2/verify_12_service_manager_token.js --network " + providerName + " " + serviceManagerToken.address, { encoding: "utf-8" }); + execSync("npx hardhat verify --constructor-args scripts/deployment/l2/verify_04_service_manager_token.js --network " + providerName + " " + serviceManagerToken.address, { encoding: "utf-8" }); } } diff --git a/scripts/deployment/l2/deploy_05_gnosis_safe_multisig.js b/scripts/deployment/l2/deploy_05_gnosis_safe_multisig.js index edd360af..7c458372 100644 --- a/scripts/deployment/l2/deploy_05_gnosis_safe_multisig.js +++ b/scripts/deployment/l2/deploy_05_gnosis_safe_multisig.js @@ -77,7 +77,7 @@ async function main() { // Contract verification if (parsedData.contractVerification) { const execSync = require("child_process").execSync; - execSync("npx hardhat verify --contract contracts/multisigs/GnosisSafeMultisig.sol:GnosisSafeMultisig --constructor-args scripts/deployment/l2/verify_03_gnosis_safe_multisig.js --network " + providerName + " " + gnosisSafeMultisig.address, { encoding: "utf-8" }); + execSync("npx hardhat verify --contract contracts/multisigs/GnosisSafeMultisig.sol:GnosisSafeMultisig --constructor-args scripts/deployment/l2/verify_05_gnosis_safe_multisig.js --network " + providerName + " " + gnosisSafeMultisig.address, { encoding: "utf-8" }); } } diff --git a/scripts/deployment/l2/deploy_06_gnosis_safe_same_address_multisig.js b/scripts/deployment/l2/deploy_06_gnosis_safe_same_address_multisig.js index b31156e2..3b0d2185 100644 --- a/scripts/deployment/l2/deploy_06_gnosis_safe_same_address_multisig.js +++ b/scripts/deployment/l2/deploy_06_gnosis_safe_same_address_multisig.js @@ -77,7 +77,7 @@ async function main() { // Contract verification if (parsedData.contractVerification) { const execSync = require("child_process").execSync; - execSync("npx hardhat verify --contract contracts/multisigs/GnosisSafeSameAddressMultisig.sol:GnosisSafeSameAddressMultisig --constructor-args scripts/deployment/l2/verify_04_gnosis_safe_same_address_multisig.js --network " + providerName + " " + gnosisSafeSameAddressMultisig.address, { encoding: "utf-8" }); + execSync("npx hardhat verify --contract contracts/multisigs/GnosisSafeSameAddressMultisig.sol:GnosisSafeSameAddressMultisig --constructor-args scripts/deployment/l2/verify_06_gnosis_safe_same_address_multisig.js --network " + providerName + " " + gnosisSafeSameAddressMultisig.address, { encoding: "utf-8" }); } } diff --git a/scripts/deployment/l2/deploy_07_10_change_managers_and_permissions.js b/scripts/deployment/l2/deploy_07_10_change_managers_and_permissions.js index 031797f7..3fa65a8b 100644 --- a/scripts/deployment/l2/deploy_07_10_change_managers_and_permissions.js +++ b/scripts/deployment/l2/deploy_07_10_change_managers_and_permissions.js @@ -76,21 +76,21 @@ async function main() { console.log("Transaction:", result.hash); // 8. EOA to change the manager of ServiceRegistryTokenUtility to ServiceManagerToken calling `changeManager(ServiceManagerToken)`; - console.log("You are signing the following transaction: serviceRegistryTokenUtility.connect(EOA).changeManager(serviceManagerTokenAddress)"); + console.log("8. You are signing the following transaction: serviceRegistryTokenUtility.connect(EOA).changeManager(serviceManagerTokenAddress)"); result = await serviceRegistryTokenUtility.connect(EOA).changeManager(serviceManagerTokenAddress, { gasPrice }); // Transaction details console.log("Contract address:", serviceRegistryTokenUtilityAddress); console.log("Transaction:", result.hash); // 9. EOA to whitelist GnosisSafeMultisig in ServiceRegistry via `changeMultisigPermission(GnosisSafeMultisig)`; - console.log("6. You are signing the following transaction: serviceRegistry.connect(EOA).changeMultisigPermission()"); + console.log("9. You are signing the following transaction: serviceRegistry.connect(EOA).changeMultisigPermission()"); result = await serviceRegistry.connect(EOA).changeMultisigPermission(gnosisSafeMultisigImplementationAddress, true, { gasPrice }); // Transaction details console.log("Contract address:", serviceRegistryAddress); console.log("Transaction:", result.hash); // 10. EOA to whitelist GnosisSafeSameAddressMultisig in ServiceRegistry via `changeMultisigPermission(GnosisSafeSameAddressMultisig)`; - console.log("7. You are signing the following transaction: serviceRegistry.connect(EOA).changeMultisigPermission()"); + console.log("10. You are signing the following transaction: serviceRegistry.connect(EOA).changeMultisigPermission()"); result = await serviceRegistry.connect(EOA).changeMultisigPermission(gnosisSafeSameAddressMultisigImplementationAddress, true, { gasPrice }); // Transaction details console.log("Contract address:", serviceRegistryAddress); diff --git a/scripts/deployment/l2/globals_arbitrum_sepolia.json b/scripts/deployment/l2/globals_arbitrum_sepolia.json index 75172cfe..f585602b 100644 --- a/scripts/deployment/l2/globals_arbitrum_sepolia.json +++ b/scripts/deployment/l2/globals_arbitrum_sepolia.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"arbitrumSepolia","gasPriceInGwei":"0.2","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry","serviceRegistrySymbol":"AUTONOLAS-SERVICE-V1","bridgeMediatorAddress":"0x45d995F302D0B5cF52ec0eDD3945321Eb0f84ee6","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","gnosisSafeMultisigImplementationAddress":"","gnosisSafeSameAddressMultisigImplementationAddress":"","operatorWhitelistAddress":"","serviceRegistryTokenUtilityAddress":"","serviceManagerTokenAddress":"","olasAddress":"","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000"} \ No newline at end of file +{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"arbitrumSepolia","gasPriceInGwei":"0.2","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry","serviceRegistrySymbol":"AUTONOLAS-SERVICE-V1","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","gnosisSafeMultisigImplementationAddress":"0x19936159B528C66750992C3cBcEd2e71cF4E4824","gnosisSafeSameAddressMultisigImplementationAddress":"0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2","operatorWhitelistAddress":"0x29086141ecdc310058fc23273F8ef7881d20C2f7","serviceRegistryTokenUtilityAddress":"0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994","serviceManagerTokenAddress":"0x5BA58970c2Ae16Cf6218783018100aF2dCcFc915","olasAddress":"","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000"} \ No newline at end of file