UNPKG

@etherisc/gif-contracts

Version:

This repository holds the GIF core contracts and tools to develop, test and deploy GIF instances.

1,326 lines (1,325 loc) 646 kB
{ "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "release", "type": "bytes32" }, { "indexed": false, "internalType": "bytes32", "name": "contractName", "type": "bytes32" } ], "name": "LogContractDeregistered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "release", "type": "bytes32" }, { "indexed": false, "internalType": "bytes32", "name": "contractName", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "contractAddress", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isNew", "type": "bool" } ], "name": "LogContractRegistered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "release", "type": "bytes32" } ], "name": "LogReleasePrepared", "type": "event" }, { "inputs": [], "name": "MAX_CONTRACTS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" }, { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "_contracts", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "_contractsInRelease", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "idx", "type": "uint256" } ], "name": "contractName", "outputs": [ { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contracts", "outputs": [ { "internalType": "uint256", "name": "_numberOfContracts", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" } ], "name": "deregister", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_release", "type": "bytes32" }, { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" } ], "name": "deregisterInRelease", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" } ], "name": "ensureSender", "outputs": [ { "internalType": "bool", "name": "_senderMatches", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" } ], "name": "getContract", "outputs": [ { "internalType": "address", "name": "_addr", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_release", "type": "bytes32" }, { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" } ], "name": "getContractInRelease", "outputs": [ { "internalType": "address", "name": "_addr", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMessage", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRelease", "outputs": [ { "internalType": "bytes32", "name": "_release", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "registry", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_initialRelease", "type": "bytes32" } ], "name": "initializeRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_newRelease", "type": "bytes32" } ], "name": "prepareRelease", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "register", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_release", "type": "bytes32" }, { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "registerInRelease", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "release", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_message", "type": "string" } ], "name": "setMessage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_message", "type": "string" } ], "name": "upgradeToV2", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "allSourcePaths": { "10": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/utils/Initializable.sol", "21": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol", "22": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol", "27": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/structs/EnumerableSet.sol", "37": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IAccess.sol", "44": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IRegistry.sol", "80": "contracts/modules/RegistryController.sol", "88": "contracts/shared/CoreController.sol", "98": "contracts/test/TestRegistryControllerUpdated.sol" }, "ast": { "absolutePath": "contracts/test/TestRegistryControllerUpdated.sol", "exportedSymbols": { "Address": [ 26374 ], "Context": [ 24074 ], "CoreController": [ 14924 ], "EnumerableSet": [ 19390 ], "IAccess": [ 21938 ], "IRegistry": [ 21750 ], "Initializable": [ 18432 ], "RegistryController": [ 10665 ], "Strings": [ 23075 ], "TestRegistryControllerUpdated": [ 16931 ] }, "id": 16932, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 16883, "literals": [ "solidity", "0.8", ".2" ], "nodeType": "PragmaDirective", "src": "39:22:98" }, { "absolutePath": "contracts/modules/RegistryController.sol", "file": "../modules/RegistryController.sol", "id": 16884, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 16932, "sourceUnit": 10666, "src": "63:43:98", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 16885, "name": "RegistryController", "nodeType": "IdentifierPath", "referencedDeclaration": 10665, "src": "151:18:98" }, "id": 16886, "nodeType": "InheritanceSpecifier", "src": "151:18:98" } ], "contractDependencies": [ 10665, 14924, 18432, 21750, 24074 ], "contractKind": "contract", "fullyImplemented": true, "id": 16931, "linearizedBaseContracts": [ 16931, 10665, 14924, 18432, 24074, 21750 ], "name": "TestRegistryControllerUpdated", "nameLocation": "118:29:98", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 16888, "mutability": "mutable", "name": "message", "nameLocation": "184:7:98", "nodeType": "VariableDeclaration", "scope": 16931, "src": "177:14:98", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 16887, "name": "string", "nodeType": "ElementaryTypeName", "src": "177:6:98", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }, { "constant": false, "id": 16890, "mutability": "mutable", "name": "upgradeV2", "nameLocation": "202:9:98", "nodeType": "VariableDeclaration", "scope": 16931, "src": "197:14:98", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 16889, "name": "bool", "nodeType": "ElementaryTypeName", "src": "197:4:98", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }, { "body": { "id": 16901, "nodeType": "Block", "src": "290:23:98", "statements": [ { "expression": { "id": 16899, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 16897, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16888, "src": "292:7:98", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 16898, "name": "_message", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16892, "src": "302:8:98", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "292:18:98", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 16900, "nodeType": "ExpressionStatement", "src": "292:18:98" } ] }, "functionSelector": "368b8772", "id": 16902, "implemented": true, "kind": "function", "modifiers": [ { "id": 16895, "modifierName": { "id": 16894, "name": "onlyInstanceOperator", "nodeType": "IdentifierPath", "referencedDeclaration": 14825, "src": "269:20:98" }, "nodeType": "ModifierInvocation", "src": "269:20:98" } ], "name": "setMessage", "nameLocation": "227:10:98", "nodeType": "FunctionDefinition", "parameters": { "id": 16893, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 16892, "mutability": "mutable", "name": "_message", "nameLocation": "252:8:98", "nodeType": "VariableDeclaration", "scope": 16902, "src": "238:22:98", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 16891, "name": "string", "nodeType": "ElementaryTypeName", "src": "238:6:98", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "237:24:98" }, "returnParameters": { "id": 16896, "nodeType": "ParameterList", "parameters": [], "src": "290:0:98" }, "scope": 16931, "src": "218:95:98", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 16909, "nodeType": "Block", "src": "376:19:98", "statements": [ { "expression": { "id": 16907, "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16888, "src": "385:7:98", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "functionReturnParameters": 16906, "id": 16908, "nodeType": "Return", "src": "378:14:98" } ] }, "functionSelector": "ce6d41de", "id": 16910, "implemented": true, "kind": "function", "modifiers": [], "name": "getMessage", "nameLocation": "327:10:98", "nodeType": "FunctionDefinition", "parameters": { "id": 16903, "nodeType": "ParameterList", "parameters": [], "src": "337:2:98" }, "returnParameters": { "id": 16906, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 16905, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 16910, "src": "361:13:98", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 16904, "name": "string", "nodeType": "ElementaryTypeName", "src": "361:6:98", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "360:15:98" }, "scope": 16931, "src": "318:77:98", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 16929, "nodeType": "Block", "src": "453:130:98", "statements": [ { "expression": { "arguments": [ { "id": 16917, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "472:10:98", "subExpression": { "id": 16916, "name": "upgradeV2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16890, "src": "473:9:98", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552524f523a5245432d3130323a555047524144455f4f4e43455f4f4d4c59", "id": 16918, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "484:33:98", "typeDescriptions": { "typeIdentifier": "t_stringliteral_584862d2e254607edab8323f691596b09145970a7a655d210eb1f81c78c94e40", "typeString": "literal_string \"ERROR:REC-102:UPGRADE_ONCE_OMLY\"" }, "value": "ERROR:REC-102:UPGRADE_ONCE_OMLY" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_584862d2e254607edab8323f691596b09145970a7a655d210eb1f81c78c94e40", "typeString": "literal_string \"ERROR:REC-102:UPGRADE_ONCE_OMLY\"" } ], "id": 16915, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "464:7:98", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 16919, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "464:54:98", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 16920, "nodeType": "ExpressionStatement", "src": "464:54:98" }, { "expression": { "id": 16923, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 16921, "name": "upgradeV2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16890, "src": "528:9:98", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "hexValue": "74727565", "id": 16922, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "540:4:98", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "528:16:98", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 16924, "nodeType": "ExpressionStatement", "src": "528:16:98" }, { "expression": { "arguments": [ { "id": 16926, "name": "_message", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16912, "src": "566:8:98", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "id": 16925, "name": "setMessage", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16902, "src": "555:10:98", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory)" } }, "id": 16927, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "555:20:98", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 16928, "nodeType": "ExpressionStatement", "src": "555:20:98" } ] }, "functionSelector": "2b34378a", "id": 16930, "implemented": true, "kind": "function", "modifiers": [], "name": "upgradeToV2", "nameLocation": "410:11:98", "nodeType": "FunctionDefinition", "parameters": { "id": 16913, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 16912, "mutability": "mutable", "name": "_message", "nameLocation": "436:8:98", "nodeType": "VariableDeclaration", "scope": 16930, "src": "422:22:98", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 16911, "name": "string", "nodeType": "ElementaryTypeName", "src": "422:6:98", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "421:24:98" }, "returnParameters": { "id": 16914, "nodeType": "ParameterList", "parameters": [], "src": "453:0:98" }, "scope": 16931, "src": "401:182:98", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" } ], "scope": 16932, "src": "109:476:98" } ], "src": "39:547:98" }, "bytecode": "608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611aad806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636c0f79b6116100b8578063c4d66de81161007c578063c4d66de81461028f578063ce6d41de146102a2578063d22057a9146102b7578063dc527b08146102ca578063e16c7d98146102dd578063f6b3e7d0146102f057610137565b80636c0f79b61461025057806376b707b71461025857806386d1a69f14610260578063893917ea14610269578063b0ef18a01461027c57610137565b8063368b8772116100ff578063368b8772146101b557806348cd4cb1146101c85780634a941e5e146101d157806356bbc19d1461021d578063699235151461023057610137565b80631d5e73141461013c578063208131541461015157806324042a0a146101645780632b34378a1461017f5780632ca65a7914610192575b600080fd5b61014f61014a3660046117b7565b610303565b005b61014f61015f36600461174f565b6103c4565b61016c606481565b6040519081526020015b60405180910390f35b61014f61018d3660046117ef565b610479565b6101a56101a0366004611704565b6104e2565b6040519015158152602001610176565b61014f6101c33660046117ef565b61050c565b61016c60035481565b6102056101df366004611796565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b039091168152602001610176565b61014f61022b36600461174f565b6105c9565b61016c61023e36600461174f565b60056020526000908152604090205481565b61016c61073c565b60025461016c565b61016c60025481565b61014f61027736600461174f565b61075b565b61020561028a366004611796565b610970565b61014f61029d3660046116cc565b610983565b6102aa610ab9565b60405161017691906118cd565b61014f6102c5366004611767565b610b4b565b61014f6102d8366004611796565b610c00565b6102056102eb36600461174f565b610cb0565b61016c6102fe36600461174f565b610cc4565b6000546201000090046001600160a01b0316632ca65a796103213390565b6040518263ffffffff1660e01b815260040161033d9190611899565b60206040518083038186803b15801561035557600080fd5b505afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d919061172f565b6103b25760405162461bcd60e51b81526004016103a99061196e565b60405180910390fd5b6103bf8360008484610cdf565b505050565b6000546201000090046001600160a01b0316632ca65a796103e23390565b6040518263ffffffff1660e01b81526004016103fe9190611899565b60206040518083038186803b15801561041657600080fd5b505afa15801561042a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044e919061172f565b61046a5760405162461bcd60e51b81526004016103a99061196e565b61047660025482611099565b50565b60085460ff16156104cc5760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5245432d3130323a555047524144455f4f4e43455f4f4d4c590060448201526064016103a9565b6008805460ff191660011790556104768161050c565b60006104f0600254836112bb565b6001600160a01b0316836001600160a01b031614905092915050565b6000546201000090046001600160a01b0316632ca65a7961052a3390565b6040518263ffffffff1660e01b81526004016105469190611899565b60206040518083038186803b15801561055e57600080fd5b505afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610596919061172f565b6105b25760405162461bcd60e51b81526004016103a99061196e565b80516105c5906007906020840190611633565b5050565b600054610100900460ff16158080156105e95750600054600160ff909116105b8061060a57506105f8306112e1565b15801561060a575060005460ff166001145b6106265760405162461bcd60e51b81526004016103a990611920565b6000805460ff191660011790558015610649576000805461ff0019166101001790555b6000805462010000600160b01b031916306201000002179055600282905561066e3390565b60028054600090815260046020908152604080832076496e7374616e63654f70657261746f725365727669636560481b80855290835281842080546001600160a01b0319166001600160a01b0397909716969096179095559254825260069052206106d8916112f4565b506002546000908152600560205260409020600190554360035580156105c5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b600254600090815260066020526040812061075690611300565b905090565b6000546201000090046001600160a01b0316632ca65a796107793390565b6040518263ffffffff1660e01b81526004016107959190611899565b60206040518083038186803b1580156107ad57600080fd5b505afa1580156107c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e5919061172f565b6108015760405162461bcd60e51b81526004016103a99061196e565b600254600090815260056020526040902054806108605760405162461bcd60e51b815260206004820152601b60248201527f4552524f523a5245432d3030313a454d5054595f52454c45415345000000000060448201526064016103a9565b600082815260056020526040902054156108c85760405162461bcd60e51b815260206004820152602360248201527f4552524f523a5245432d3030323a4e45575f52454c454153455f4e4f545f454d60448201526250545960e81b60648201526084016103a9565b60005b8181101561093a5760025460009081526006602052604081206108ee908361130a565b600254600090815260046020908152604080832084845290915290205490915061092790859060019084906001600160a01b0316610cdf565b506109336001826119b1565b90506108cb565b5060028290556040518281527fbd50692eb75750d216c747528a2dfced5915eab7b4ee40bcf8120d0d035297b490602001610730565b600061097c83836112bb565b9392505050565b600054610100900460ff16158080156109a35750600054600160ff909116105b806109c457506109b2306112e1565b1580156109c4575060005460ff166001145b6109e05760405162461bcd60e51b81526004016103a990611920565b6000805460ff191660011790558015610a03576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b03851602179055610a2d600090565b6541636365737360d01b14610a6f57610a4e6541636365737360d01b611316565b600180546001600160a01b0319166001600160a01b03929092169190911790555b610a776113fe565b80156105c5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610730565b606060078054610ac8906119e0565b80601f0160208091040260200160405190810160405280929190818152602001828054610af4906119e0565b8015610b415780601f10610b1657610100808354040283529160200191610b41565b820191906000526020600020905b815481529060010190602001808311610b2457829003601f168201915b5050505050905090565b6000546201000090046001600160a01b0316632ca65a79610b693390565b6040518263ffffffff1660e01b8152600401610b859190611899565b60206040518083038186803b158015610b9d57600080fd5b505afa158015610bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd5919061172f565b610bf15760405162461bcd60e51b81526004016103a99061196e565b6105c560025460008484610cdf565b6000546201000090046001600160a01b0316632ca65a79610c1e3390565b6040518263ffffffff1660e01b8152600401610c3a9190611899565b60206040518083038186803b158015610c5257600080fd5b505afa158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8a919061172f565b610ca65760405162461bcd60e51b81526004016103a99061196e565b6105c58282611099565b6000610cbe600254836112bb565b92915050565b6002546000908152600660205260408120610cbe908361130a565b6000848152600660205260408120606490610cf990611300565b10610d505760405162461bcd60e51b815260206004820152602160248201527f4552524f523a5245432d3031303a4d41585f434f4e5452414354535f4c494d496044820152601560fa1b60648201526084016103a9565b600085815260056020526040902054151580610d695750835b610db55760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a5245432d3031313a52454c454153455f554e4b4e4f574e00000060448201526064016103a9565b82610e0c5760405162461bcd60e51b815260206004820152602160248201527f4552524f523a5245432d3031323a434f4e54524143545f4e414d455f454d50546044820152605960f81b60648201526084016103a9565b6000858152600660205260409020610e24908461146b565b1580610e7557508276496e7374616e63654f70657261746f725365727669636560481b148015610e75575060008581526004602090815260408083208684529091529020546001600160a01b031633145b610ecc5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5245432d3031333a434f4e54524143545f4e414d455f45584953604482015261545360f01b60648201526084016103a9565b6001600160a01b038216610f2e5760405162461bcd60e51b815260206004820152602360248201527f4552524f523a5245432d3031343a434f4e54524143545f414444524553535f5a60448201526245524f60e81b60648201526084016103a9565b60008581526004602090815260408083208684529091529020546001600160a01b0316610f92576000858152600660205260409020610f6d90846112f4565b506000858152600560205260408120805491610f8883611a1b565b9190505550600190505b6000858152600460209081526040808320868452825280832080546001600160a01b0319166001600160a01b03871617905587835260069091529020610fd790611300565b600086815260056020526040902054146110425760405162461bcd60e51b815260206004820152602660248201527f4552524f523a5245432d3031353a434f4e54524143545f4e554d4245525f4d496044820152650a69a82a886960d31b60648201526084016103a9565b60408051868152602081018590526001600160a01b03841681830152821515606082015290517f7c5c4e97e59cbd96c53653dfd3f538e50d7bab44baa352481fdc3fa7f18e30089181900360800190a15050505050565b6000546201000090046001600160a01b0316632ca65a796110b73390565b6040518263ffffffff1660e01b81526004016110d39190611899565b60206040518083038186803b1580156110eb57600080fd5b505afa1580156110ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611123919061172f565b61113f5760405162461bcd60e51b81526004016103a99061196e565b6000828152600660205260409020611157908261146b565b6111a35760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a5245432d3032303a434f4e54524143545f554e4b4e4f574e000060448201526064016103a9565b60008281526006602052604090206111bb9082611483565b5060008281526005602052604081208054600192906111db9084906119c9565b90915550506000828152600460209081526040808320848452825280832080546001600160a01b03191690558483526006909152902061121a90611300565b600083815260056020526040902054146112855760405162461bcd60e51b815260206004820152602660248201527f4552524f523a5245432d3032313a434f4e54524143545f4e554d4245525f4d496044820152650a69a82a886960d31b60648201526084016103a9565b60408051838152602081018390527f095bd8db0f80ec14d4d7e375fb7fb3603144ba5b594106e0410243553f97a1319101610730565b60009182526004602090815260408084209284529190529020546001600160a01b031690565b6001600160a01b0381163b15155b919050565b600061097c838361148f565b6000610cbe825490565b600061097c83836114de565b60008054604051631c2d8fb360e31b815260048101849052620100009091046001600160a01b03169063e16c7d989060240160206040518083038186803b15801561136057600080fd5b505afa158015611374573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139891906116e8565b90506001600160a01b0381166112ef5760405162461bcd60e51b815260206004820152602560248201527f4552524f523a4352432d3030343a434f4e54524143545f4e4f545f5245474953604482015264151154915160da1b60648201526084016103a9565b600054610100900460ff166114695760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103a9565b565b6000818152600183016020526040812054151561097c565b600061097c8383611516565b60008181526001830160205260408120546114d657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cbe565b506000610cbe565b600082600001828154811061150357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b6000818152600183016020526040812054801561162957600061153a6001836119c9565b855490915060009061154e906001906119c9565b90508181146115cf57600086600001828154811061157c57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106115ad57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b85548690806115ee57634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cbe565b6000915050610cbe565b82805461163f906119e0565b90600052602060002090601f01602090048101928261166157600085556116a7565b82601f1061167a57805160ff19168380011785556116a7565b828001600101855582156116a7579182015b828111156116a757825182559160200191906001019061168c565b506116b39291506116b7565b5090565b5b808211156116b357600081556001016116b8565b6000602082840312156116dd578081fd5b813561097c81611a62565b6000602082840312156116f9578081fd5b815161097c81611a62565b60008060408385031215611716578081fd5b823561172181611a62565b946020939093013593505050565b600060208284031215611740578081fd5b8151801515811461097c578182fd5b600060208284031215611760578081fd5b5035919050565b60008060408385031215611779578182fd5b82359150602083013561178b81611a62565b809150509250929050565b600080604083850312156117a8578182fd5b50508035926020909101359150565b6000806000606084860312156117cb578081fd5b833592506020840135915060408401356117e481611a62565b809150509250925092565b600060208284031215611800578081fd5b813567ffffffffffffffff80821115611817578283fd5b818401915084601f83011261182a578283fd5b81358181111561183c5761183c611a4c565b604051601f8201601f19908116603f0116810190838211818310171561186457611864611a4c565b8160405282815287602084870101111561187c578586fd5b826020860160208301379182016020019490945295945050505050565b6001600160a01b0391909116815276496e7374616e63654f70657261746f725365727669636560481b602082015260400190565b6000602080835283518082850152825b818110156118f9578581018301518582016040015282016118dd565b8181111561190a5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526023908201527f4552524f523a4352432d3030313a4e4f545f494e5354414e43455f4f504552416040820152622a27a960e91b606082015260800190565b600082198211156119c4576119c4611a36565b500190565b6000828210156119db576119db611a36565b500390565b6002810460018216806119f457607f821691505b60208210811415611a1557634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611a2f57611a2f611a36565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461047657600080fdfea2646970667358221220c956c49d845828696589489d7fdc37b49bb521c0486c0df558f1b17af8ee73ec64736f6c63430008020033", "bytecodeSha1": "1612f421e9e6ba7cf54917b0cd78ece1164f2919", "compiler": { "evm_version": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "version": "0.8.2+commit.661d1103" }, "contractName": "TestRegistryControllerUpdated", "coverageMap": { "branches": { "10": { "CoreController._afterInitialize": { "77": [ 4888, 4901, true ] }, "CoreController.initialize": { "76": [ 3209, 3242, false ] } }, "21": {}, "22": {}, "27": { "EnumerableSet._remove": { "74": [ 2922, 2937, false ], "75": [ 3404, 3430, false ] } }, "37": {}, "44": {}, "80": { "RegistryController._deregisterInRelease": { "88": [ 7396, 7459, true ], "89": [ 7703, 7782, true ] }, "RegistryController._registerInRelease": { "80": [ 5619, 5681, true ], "81": [ 5864, 5897, true ], "82": [ 5901, 5913, true ], "83": [ 5965, 5986, true ], "84": [ 6335, 6377, false ], "85": [ 6381, 6432, true ], "86": [ 6503, 6533, true ], "87": [ 6888, 6967, true ] }, "RegistryController.prepareRelease": { "78": [ 4087, 4105, true ], "79": [ 4168, 4205, true ] } }, "88": { "Context._msgSender": { "72": [ 564, 627, true ] }, "CoreController._getContractAddress": { "73": [ 1724, 1753, true ] }, "CoreController.initialize": { "71": [ 1255, 1277, false ] } }, "98": { "TestRegistryControllerUpdated.upgradeToV2": { "70": [ 472, 482, true ] } } }, "statements": { "10": {}, "21": { "Address.isContract": { "49": [ 1458, 1488 ] } }, "22": { "Context._msgSender": { "1": [ 712, 729 ] } }, "27": { "EnumerableSet._add": { "59": [ 2234, 2257 ], "60": [ 2392, 2432 ], "61": [ 2446, 2457 ], "62": [ 2488, 2500 ] }, "EnumerableSet._at": { "63": [ 4897, 4922 ] }, "EnumerableSet._contains": { "56": [ 4243, 4274 ] }, "EnumerableSet._length": { "52": [ 4437, 4462 ] }, "EnumerableSet._remove": { "64": [ 3592, 3630 ], "65": [ 3704, 3740 ], "66": [ 3876, 3893 ], "67": [ 3961, 3987 ], "68": [ 4002, 4013 ], "69": [ 4044, 4056 ] }, "EnumerableSet.add": { "50": [ 5904, 5934 ] }, "EnumerableSet.at": { "53": [ 7088, 7117 ] }, "EnumerableSet.contains": { "57": [ 6415, 6450 ] }, "EnumerableSet.length": { "51": [ 6620, 6646 ] }, "EnumerableSet.remove": { "58": [ 6198, 6231 ] } }, "37": {}, "44": {}, "80": { "RegistryController._deregisterInRelease": { "42": [ 7388, 7494 ], "43": [ 7505, 7566 ], "44": [ 7577, 7611 ], "45": [ 7621, 7663 ], "46": [