{ "contractName": "ContractRegistryClient", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "newOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "onlyOwnerCanUpdateRegistry", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "prevRegistry", "outputs": [ { "internalType": "contract IContractRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "registry", "outputs": [ { "internalType": "contract IContractRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "updateRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "restoreRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_onlyOwnerCanUpdateRegistry", "type": "bool" } ], "name": "restrictRegistryUpdate", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onlyOwnerCanUpdateRegistry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevRegistry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"restoreRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_onlyOwnerCanUpdateRegistry\",\"type\":\"bool\"}],\"name\":\"restrictRegistryUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Base contract for ContractRegistry clients\",\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"constructor\":{\"details\":\"initializes a new ContractRegistryClient instance\",\"params\":{\"_registry\":\"address of a contract-registry contract\"}},\"restoreRegistry()\":{\"details\":\"restores the previous contract-registry\"},\"restrictRegistryUpdate(bool)\":{\"details\":\"restricts the permission to update the contract-registry\",\"params\":{\"_onlyOwnerCanUpdateRegistry\":\"indicates whether or not permission is restricted to owner only\"}},\"transferOwnership(address)\":{\"details\":\"allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner\",\"params\":{\"_newOwner\":\"new contract owner\"}},\"updateRegistry()\":{\"details\":\"updates to the new contract-registry\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol\":\"ContractRegistryClient\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol\":{\"keccak256\":\"0x74caf88eff1cb113ad8277df9ba7933a6f1e0deea8fd1855157def3be833b859\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://c7793c9f245736cd8413bc8c4b5c40b67949cbee32289a16d29c83cf59396ad6\",\"dweb:/ipfs/QmWony7b1buUrGnE32gjLAnSwkBYMrJ68vUcCwDMmp3MbJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol\":{\"keccak256\":\"0x6ef69d9dcc80a8a36d5eb37783375cd5e4831c6d20c723fa6f6b6a06c0aeb53d\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://5a5d087e2c5b47739615ef22e1f29749de44b43c9a37cfae32b3dfc498a258c4\",\"dweb:/ipfs/Qmd1mXKEQbmBxqHk326LGVzNoayXsam8gZNecknnYpBnyh\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol\":{\"keccak256\":\"0x073efa69fcd6b5e60f841b28b366d63b62ff48ab12a06ce3f5a7f41afd6ce885\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://e8b8ecb2d29197ca77f0ed98f728ace54e6edcfdf5cd1194ae22701607eaf608\",\"dweb:/ipfs/QmcsR6Q35Hurh3TrPkYAboicz9bQQoGCWmZLzUCDyhotH8\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol\":{\"keccak256\":\"0x3551889a83738b621c29ed66f1ecb6a843cca4217e54c9357198559b9cc92259\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://231a59c8f2665adeda8c7e6930832409c9b991fd27ad84b3a24335e7bf269bbe\",\"dweb:/ipfs/QmeJJbn1EAUbZenruTEdJAnwUn3dxsVNeJvxPe81qKEGqL\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IOwned.sol\":{\"keccak256\":\"0xc60a9d197abc28c1906ed4d18b59caa0242db754a0e1f67af6e6277593530dae\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://a8c6f3e6525a81a5165ccbf04f73f6c389c14b74135d11a7b5f70b1c9bdac75c\",\"dweb:/ipfs/QmaPu4Z7yUPc9sMADmoTZVY6AnyDSYHtNNCx3mm4VkJwhP\"]}},\"version\":1}", "bytecode": "0x", "deployedBytecode": "0x", "immutableReferences": {}, "sourceMap": "", "deployedSourceMap": "", "source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"./Owned.sol\";\r\nimport \"./Utils.sol\";\r\nimport \"./interfaces/IContractRegistry.sol\";\r\n\r\n/**\r\n * @dev Base contract for ContractRegistry clients\r\n*/\r\ncontract ContractRegistryClient is Owned, Utils {\r\n bytes32 internal constant CONTRACT_REGISTRY = \"ContractRegistry\";\r\n bytes32 internal constant BANCOR_NETWORK = \"BancorNetwork\";\r\n bytes32 internal constant BANCOR_FORMULA = \"BancorFormula\";\r\n bytes32 internal constant CONVERTER_FACTORY = \"ConverterFactory\";\r\n bytes32 internal constant CONVERSION_PATH_FINDER = \"ConversionPathFinder\";\r\n bytes32 internal constant CONVERTER_UPGRADER = \"BancorConverterUpgrader\";\r\n bytes32 internal constant CONVERTER_REGISTRY = \"BancorConverterRegistry\";\r\n bytes32 internal constant CONVERTER_REGISTRY_DATA = \"BancorConverterRegistryData\";\r\n bytes32 internal constant BNT_TOKEN = \"BNTToken\";\r\n bytes32 internal constant BANCOR_X = \"BancorX\";\r\n bytes32 internal constant BANCOR_X_UPGRADER = \"BancorXUpgrader\";\r\n bytes32 internal constant CHAINLINK_ORACLE_WHITELIST = \"ChainlinkOracleWhitelist\";\r\n\r\n IContractRegistry public registry; // address of the current contract-registry\r\n IContractRegistry public prevRegistry; // address of the previous contract-registry\r\n bool public onlyOwnerCanUpdateRegistry; // only an owner can update the contract-registry\r\n\r\n /**\r\n * @dev verifies that the caller is mapped to the given contract name\r\n *\r\n * @param _contractName contract name\r\n */\r\n modifier only(bytes32 _contractName) {\r\n _only(_contractName);\r\n _;\r\n }\r\n\r\n // error message binary size optimization\r\n function _only(bytes32 _contractName) internal view {\r\n require(msg.sender == addressOf(_contractName), \"ERR_ACCESS_DENIED\");\r\n }\r\n\r\n /**\r\n * @dev initializes a new ContractRegistryClient instance\r\n *\r\n * @param _registry address of a contract-registry contract\r\n */\r\n constructor(IContractRegistry _registry) internal validAddress(address(_registry)) {\r\n registry = IContractRegistry(_registry);\r\n prevRegistry = IContractRegistry(_registry);\r\n }\r\n\r\n /**\r\n * @dev updates to the new contract-registry\r\n */\r\n function updateRegistry() public {\r\n // verify that this function is permitted\r\n require(msg.sender == owner || !onlyOwnerCanUpdateRegistry, \"ERR_ACCESS_DENIED\");\r\n\r\n // get the new contract-registry\r\n IContractRegistry newRegistry = IContractRegistry(addressOf(CONTRACT_REGISTRY));\r\n\r\n // verify that the new contract-registry is different and not zero\r\n require(newRegistry != registry && address(newRegistry) != address(0), \"ERR_INVALID_REGISTRY\");\r\n\r\n // verify that the new contract-registry is pointing to a non-zero contract-registry\r\n require(newRegistry.addressOf(CONTRACT_REGISTRY) != address(0), \"ERR_INVALID_REGISTRY\");\r\n\r\n // save a backup of the current contract-registry before replacing it\r\n prevRegistry = registry;\r\n\r\n // replace the current contract-registry with the new contract-registry\r\n registry = newRegistry;\r\n }\r\n\r\n /**\r\n * @dev restores the previous contract-registry\r\n */\r\n function restoreRegistry() public ownerOnly {\r\n // restore the previous contract-registry\r\n registry = prevRegistry;\r\n }\r\n\r\n /**\r\n * @dev restricts the permission to update the contract-registry\r\n *\r\n * @param _onlyOwnerCanUpdateRegistry indicates whether or not permission is restricted to owner only\r\n */\r\n function restrictRegistryUpdate(bool _onlyOwnerCanUpdateRegistry) public ownerOnly {\r\n // change the permission to update the contract-registry\r\n onlyOwnerCanUpdateRegistry = _onlyOwnerCanUpdateRegistry;\r\n }\r\n\r\n /**\r\n * @dev returns the address associated with the given contract name\r\n *\r\n * @param _contractName contract name\r\n *\r\n * @return contract address\r\n */\r\n function addressOf(bytes32 _contractName) internal view returns (address) {\r\n return registry.addressOf(_contractName);\r\n }\r\n}\r\n", "sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol", "ast": { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol", "exportedSymbols": { "ContractRegistryClient": [ 21719 ] }, "id": 21720, "license": "SEE LICENSE IN LICENSE", "nodeType": "SourceUnit", "nodes": [ { "id": 21516, "literals": [ "solidity", "0.6", ".12" ], "nodeType": "PragmaDirective", "src": "52:23:56" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol", "file": "./Owned.sol", "id": 21517, "nodeType": "ImportDirective", "scope": 21720, "sourceUnit": 21819, "src": "77:21:56", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol", "file": "./Utils.sol", "id": 21518, "nodeType": "ImportDirective", "scope": 21720, "sourceUnit": 22662, "src": "100:21:56", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol", "file": "./interfaces/IContractRegistry.sol", "id": 21519, "nodeType": "ImportDirective", "scope": 21720, "sourceUnit": 22832, "src": "123:44:56", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 21521, "name": "Owned", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21818, "src": "268:5:56", "typeDescriptions": { "typeIdentifier": "t_contract$_Owned_$21818", "typeString": "contract Owned" } }, "id": 21522, "nodeType": "InheritanceSpecifier", "src": "268:5:56" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21523, "name": "Utils", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22661, "src": "275:5:56", "typeDescriptions": { "typeIdentifier": "t_contract$_Utils_$22661", "typeString": "contract Utils" } }, "id": 21524, "nodeType": "InheritanceSpecifier", "src": "275:5:56" } ], "contractDependencies": [ 21818, 22661, 22847 ], "contractKind": "contract", "documentation": { "id": 21520, "nodeType": "StructuredDocumentation", "src": "171:60:56", "text": " @dev Base contract for ContractRegistry clients" }, "fullyImplemented": true, "id": 21719, "linearizedBaseContracts": [ 21719, 22661, 21818, 22847 ], "name": "ContractRegistryClient", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 21527, "mutability": "constant", "name": "CONTRACT_REGISTRY", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "288:64:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21525, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "288:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "436f6e74726163745265676973747279", "id": 21526, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "334:18:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_014cc675742635098f3843c56f86f2875ab1c0e8ccd166d07159a5036b798b15", "typeString": "literal_string \"ContractRegistry\"" }, "value": "ContractRegistry" }, "visibility": "internal" }, { "constant": true, "id": 21530, "mutability": "constant", "name": "BANCOR_NETWORK", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "359:58:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21528, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "359:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f724e6574776f726b", "id": 21529, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "402:15:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e13073a1961b7477f917c9e8fc77a7d64eb68a6e4f8820f41bc0991c65d90aea", "typeString": "literal_string \"BancorNetwork\"" }, "value": "BancorNetwork" }, "visibility": "internal" }, { "constant": true, "id": 21533, "mutability": "constant", "name": "BANCOR_FORMULA", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "424:58:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21531, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "424:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f72466f726d756c61", "id": 21532, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "467:15:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f9aac19de3c8e04eb4d0548047a1cd61c5aaafde7cf99ed9c7ed906ce4dddf38", "typeString": "literal_string \"BancorFormula\"" }, "value": "BancorFormula" }, "visibility": "internal" }, { "constant": true, "id": 21536, "mutability": "constant", "name": "CONVERTER_FACTORY", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "489:64:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21534, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "489:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "436f6e766572746572466163746f7279", "id": 21535, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "535:18:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_01f892de917bf09cf6fd04f57ff78c6ca006205a8809769abbeb39a039d3d768", "typeString": "literal_string \"ConverterFactory\"" }, "value": "ConverterFactory" }, "visibility": "internal" }, { "constant": true, "id": 21539, "mutability": "constant", "name": "CONVERSION_PATH_FINDER", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "560:73:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21537, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "560:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "436f6e76657273696f6e5061746846696e646572", "id": 21538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "611:22:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d55bb14cf5551b26acee2cc099a4125a85ce113cb3306082cd15a1b4785376f1", "typeString": "literal_string \"ConversionPathFinder\"" }, "value": "ConversionPathFinder" }, "visibility": "internal" }, { "constant": true, "id": 21542, "mutability": "constant", "name": "CONVERTER_UPGRADER", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "640:72:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21540, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "640:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f72436f6e7665727465725570677261646572", "id": 21541, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "687:25:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e8cccdfec0e08322695b48c2ff60a2acb1243c72e02ec3a238fe40eefe726c01", "typeString": "literal_string \"BancorConverterUpgrader\"" }, "value": "BancorConverterUpgrader" }, "visibility": "internal" }, { "constant": true, "id": 21545, "mutability": "constant", "name": "CONVERTER_REGISTRY", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "719:72:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21543, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "719:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f72436f6e7665727465725265676973747279", "id": 21544, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "766:25:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_be29ba855de63e3aeb1afb9aed4122f6a4ac386581ea1b32773e72966a3749e7", "typeString": "literal_string \"BancorConverterRegistry\"" }, "value": "BancorConverterRegistry" }, "visibility": "internal" }, { "constant": true, "id": 21548, "mutability": "constant", "name": "CONVERTER_REGISTRY_DATA", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "798:81:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21546, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "798:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f72436f6e766572746572526567697374727944617461", "id": 21547, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "850:29:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f47ef61fa81526eefb8475acf271ff419a87423535a77af3ef98ebc7b31c640c", "typeString": "literal_string \"BancorConverterRegistryData\"" }, "value": "BancorConverterRegistryData" }, "visibility": "internal" }, { "constant": true, "id": 21551, "mutability": "constant", "name": "BNT_TOKEN", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "886:48:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21549, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "886:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "424e54546f6b656e", "id": 21550, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "924:10:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_4686149f7058d2454e334cfa4ea1a3482469c64fd3d4f50dfc69716086aee66f", "typeString": "literal_string \"BNTToken\"" }, "value": "BNTToken" }, "visibility": "internal" }, { "constant": true, "id": 21554, "mutability": "constant", "name": "BANCOR_X", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "941:46:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21552, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "941:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f7258", "id": 21553, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "978:9:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_86ea4d05259b04f0f72cb84c9671b182b8bbe45a219bbea86edd67f80c414eb4", "typeString": "literal_string \"BancorX\"" }, "value": "BancorX" }, "visibility": "internal" }, { "constant": true, "id": 21557, "mutability": "constant", "name": "BANCOR_X_UPGRADER", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "994:63:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21555, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "994:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f72585570677261646572", "id": 21556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1040:17:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d5e7e6eba8567517cf1f8f313379e5a6dbd5dcff956b158cf65a32e6b2bb5fd8", "typeString": "literal_string \"BancorXUpgrader\"" }, "value": "BancorXUpgrader" }, "visibility": "internal" }, { "constant": true, "id": 21560, "mutability": "constant", "name": "CHAINLINK_ORACLE_WHITELIST", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "1064:81:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21558, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1064:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "436861696e6c696e6b4f7261636c6557686974656c697374", "id": 21559, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1119:26:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f1d302dc7d7d6451424d658039558f1ea7e3cbf7255a10240557f430d300feb3", "typeString": "literal_string \"ChainlinkOracleWhitelist\"" }, "value": "ChainlinkOracleWhitelist" }, "visibility": "internal" }, { "constant": false, "functionSelector": "7b103999", "id": 21562, "mutability": "mutable", "name": "registry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "1154:33:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "typeName": { "contractScope": null, "id": 21561, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "1154:17:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "61cd756e", "id": 21564, "mutability": "mutable", "name": "prevRegistry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "1243:37:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "typeName": { "contractScope": null, "id": 21563, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "1243:17:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "2fe8a6ad", "id": 21566, "mutability": "mutable", "name": "onlyOwnerCanUpdateRegistry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "1333:38:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21565, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1333:4:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "public" }, { "body": { "id": 21576, "nodeType": "Block", "src": "1616:51:56", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21572, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21569, "src": "1633:13:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 21571, "name": "_only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21593, "src": "1627:5:56", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$__$", "typeString": "function (bytes32) view" } }, "id": 21573, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1627:20:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21574, "nodeType": "ExpressionStatement", "src": "1627:20:56" }, { "id": 21575, "nodeType": "PlaceholderStatement", "src": "1658:1:56" } ] }, "documentation": { "id": 21567, "nodeType": "StructuredDocumentation", "src": "1430:143:56", "text": " @dev verifies that the caller is mapped to the given contract name\n @param _contractName contract name" }, "id": 21577, "name": "only", "nodeType": "ModifierDefinition", "overrides": null, "parameters": { "id": 21570, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21569, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21577, "src": "1593:21:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21568, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1593:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "1592:23:56" }, "src": "1579:88:56", "virtual": false, "visibility": "internal" }, { "body": { "id": 21592, "nodeType": "Block", "src": "1774:87:56", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21583, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1793:3:56", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 21584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1793:10:56", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21586, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21579, "src": "1817:13:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 21585, "name": "addressOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21718, "src": "1807:9:56", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) view returns (address)" } }, "id": 21587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1807:24:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1793:38:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f4143434553535f44454e494544", "id": 21589, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1833:19:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666", "typeString": "literal_string \"ERR_ACCESS_DENIED\"" }, "value": "ERR_ACCESS_DENIED" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666", "typeString": "literal_string \"ERR_ACCESS_DENIED\"" } ], "id": 21582, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1785:7:56", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1785:68:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21591, "nodeType": "ExpressionStatement", "src": "1785:68:56" } ] }, "documentation": null, "id": 21593, "implemented": true, "kind": "function", "modifiers": [], "name": "_only", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21580, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21579, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21593, "src": "1737:21:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21578, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1737:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "1736:23:56" }, "returnParameters": { "id": 21581, "nodeType": "ParameterList", "parameters": [], "src": "1774:0:56" }, "scope": 21719, "src": "1722:139:56", "stateMutability": "view", "virtual": false, "visibility": "internal" }, { "body": { "id": 21617, "nodeType": "Block", "src": "2111:112:56", "statements": [ { "expression": { "argumentTypes": null, "id": 21609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21605, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "2122:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21607, "name": "_registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21596, "src": "2151:9:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } ], "id": 21606, "name": "IContractRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22831, "src": "2133:17:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$", "typeString": "type(contract IContractRegistry)" } }, "id": 21608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2133:28:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "2122:39:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21610, "nodeType": "ExpressionStatement", "src": "2122:39:56" }, { "expression": { "argumentTypes": null, "id": 21615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21611, "name": "prevRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21564, "src": "2172:12:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21613, "name": "_registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21596, "src": "2205:9:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } ], "id": 21612, "name": "IContractRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22831, "src": "2187:17:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$", "typeString": "type(contract IContractRegistry)" } }, "id": 21614, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2187:28:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "2172:43:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21616, "nodeType": "ExpressionStatement", "src": "2172:43:56" } ] }, "documentation": { "id": 21594, "nodeType": "StructuredDocumentation", "src": "1869:153:56", "text": " @dev initializes a new ContractRegistryClient instance\n @param _registry address of a contract-registry contract" }, "id": 21618, "implemented": true, "kind": "constructor", "modifiers": [ { "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21601, "name": "_registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21596, "src": "2099:9:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } ], "id": 21600, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2091:7:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21599, "name": "address", "nodeType": "ElementaryTypeName", "src": "2091:7:56", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21602, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2091:18:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 21603, "modifierName": { "argumentTypes": null, "id": 21598, "name": "validAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22618, "src": "2078:12:56", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "2078:32:56" } ], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21597, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21596, "mutability": "mutable", "name": "_registry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21618, "src": "2040:27:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "typeName": { "contractScope": null, "id": 21595, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "2040:17:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "value": null, "visibility": "internal" } ], "src": "2039:29:56" }, "returnParameters": { "id": 21604, "nodeType": "ParameterList", "parameters": [], "src": "2111:0:56" }, "scope": 21719, "src": "2028:195:56", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 21679, "nodeType": "Block", "src": "2333:892:56", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 21629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21623, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2403:3:56", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 21624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2403:10:56", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 21625, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21728, "src": "2417:5:56", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2403:19:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "id": 21628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2426:27:56", "subExpression": { "argumentTypes": null, "id": 21627, "name": "onlyOwnerCanUpdateRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21566, "src": "2427:26:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2403:50:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f4143434553535f44454e494544", "id": 21630, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2455:19:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666", "typeString": "literal_string \"ERR_ACCESS_DENIED\"" }, "value": "ERR_ACCESS_DENIED" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666", "typeString": "literal_string \"ERR_ACCESS_DENIED\"" } ], "id": 21622, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2395:7:56", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21631, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2395:80:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21632, "nodeType": "ExpressionStatement", "src": "2395:80:56" }, { "assignments": [ 21634 ], "declarations": [ { "constant": false, "id": 21634, "mutability": "mutable", "name": "newRegistry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21679, "src": "2530:29:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "typeName": { "contractScope": null, "id": 21633, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "2530:17:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "value": null, "visibility": "internal" } ], "id": 21640, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21637, "name": "CONTRACT_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21527, "src": "2590:17:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 21636, "name": "addressOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21718, "src": "2580:9:56", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) view returns (address)" } }, "id": 21638, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2580:28:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 21635, "name": "IContractRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22831, "src": "2562:17:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$", "typeString": "type(contract IContractRegistry)" } }, "id": 21639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2562:47:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "VariableDeclarationStatement", "src": "2530:79:56" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 21654, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "id": 21644, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 21642, "name": "newRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21634, "src": "2706:11:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 21643, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "2721:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "2706:23:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21653, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21647, "name": "newRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21634, "src": "2741:11:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } ], "id": 21646, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2733:7:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21645, "name": "address", "nodeType": "ElementaryTypeName", "src": "2733:7:56", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2733:20:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21651, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2765:1:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 21650, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2757:7:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21649, "name": "address", "nodeType": "ElementaryTypeName", "src": "2757:7:56", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21652, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2757:10:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2733:34:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2706:61:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f5245474953545259", "id": 21655, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2769:22:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d", "typeString": "literal_string \"ERR_INVALID_REGISTRY\"" }, "value": "ERR_INVALID_REGISTRY" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d", "typeString": "literal_string \"ERR_INVALID_REGISTRY\"" } ], "id": 21641, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2698:7:56", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21656, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2698:94:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21657, "nodeType": "ExpressionStatement", "src": "2698:94:56" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21667, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21661, "name": "CONTRACT_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21527, "src": "2929:17:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "id": 21659, "name": "newRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21634, "src": "2907:11:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "addressOf", "nodeType": "MemberAccess", "referencedDeclaration": 22830, "src": "2907:21:56", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) view external returns (address)" } }, "id": 21662, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2907:40:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21665, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2959:1:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 21664, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2951:7:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21663, "name": "address", "nodeType": "ElementaryTypeName", "src": "2951:7:56", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21666, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2951:10:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2907:54:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f5245474953545259", "id": 21668, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2963:22:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d", "typeString": "literal_string \"ERR_INVALID_REGISTRY\"" }, "value": "ERR_INVALID_REGISTRY" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d", "typeString": "literal_string \"ERR_INVALID_REGISTRY\"" } ], "id": 21658, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2899:7:56", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21669, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2899:87:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21670, "nodeType": "ExpressionStatement", "src": "2899:87:56" }, { "expression": { "argumentTypes": null, "id": 21673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21671, "name": "prevRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21564, "src": "3078:12:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21672, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "3093:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "3078:23:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21674, "nodeType": "ExpressionStatement", "src": "3078:23:56" }, { "expression": { "argumentTypes": null, "id": 21677, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21675, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "3195:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21676, "name": "newRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21634, "src": "3206:11:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "3195:22:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21678, "nodeType": "ExpressionStatement", "src": "3195:22:56" } ] }, "documentation": { "id": 21619, "nodeType": "StructuredDocumentation", "src": "2231:63:56", "text": " @dev updates to the new contract-registry" }, "functionSelector": "49d10b64", "id": 21680, "implemented": true, "kind": "function", "modifiers": [], "name": "updateRegistry", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21620, "nodeType": "ParameterList", "parameters": [], "src": "2323:2:56" }, "returnParameters": { "id": 21621, "nodeType": "ParameterList", "parameters": [], "src": "2333:0:56" }, "scope": 21719, "src": "2300:925:56", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21690, "nodeType": "Block", "src": "3348:93:56", "statements": [ { "expression": { "argumentTypes": null, "id": 21688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21686, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "3410:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21687, "name": "prevRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21564, "src": "3421:12:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "3410:23:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21689, "nodeType": "ExpressionStatement", "src": "3410:23:56" } ] }, "documentation": { "id": 21681, "nodeType": "StructuredDocumentation", "src": "3233:65:56", "text": " @dev restores the previous contract-registry" }, "functionSelector": "b4a176d3", "id": 21691, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21684, "modifierName": { "argumentTypes": null, "id": 21683, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21754, "src": "3338:9:56", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3338:9:56" } ], "name": "restoreRegistry", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21682, "nodeType": "ParameterList", "parameters": [], "src": "3328:2:56" }, "returnParameters": { "id": 21685, "nodeType": "ParameterList", "parameters": [], "src": "3348:0:56" }, "scope": 21719, "src": "3304:137:56", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21703, "nodeType": "Block", "src": "3738:141:56", "statements": [ { "expression": { "argumentTypes": null, "id": 21701, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21699, "name": "onlyOwnerCanUpdateRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21566, "src": "3815:26:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21700, "name": "_onlyOwnerCanUpdateRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21694, "src": "3844:27:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3815:56:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 21702, "nodeType": "ExpressionStatement", "src": "3815:56:56" } ] }, "documentation": { "id": 21692, "nodeType": "StructuredDocumentation", "src": "3449:200:56", "text": " @dev restricts the permission to update the contract-registry\n @param _onlyOwnerCanUpdateRegistry indicates whether or not permission is restricted to owner only" }, "functionSelector": "024c7ec7", "id": 21704, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21697, "modifierName": { "argumentTypes": null, "id": 21696, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21754, "src": "3728:9:56", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3728:9:56" } ], "name": "restrictRegistryUpdate", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21695, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21694, "mutability": "mutable", "name": "_onlyOwnerCanUpdateRegistry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21704, "src": "3687:32:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21693, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3687:4:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3686:34:56" }, "returnParameters": { "id": 21698, "nodeType": "ParameterList", "parameters": [], "src": "3738:0:56" }, "scope": 21719, "src": "3655:224:56", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21717, "nodeType": "Block", "src": "4151:59:56", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21714, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21707, "src": "4188:13:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "id": 21712, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "4169:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "addressOf", "nodeType": "MemberAccess", "referencedDeclaration": 22830, "src": "4169:18:56", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) view external returns (address)" } }, "id": 21715, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4169:33:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 21711, "id": 21716, "nodeType": "Return", "src": "4162:40:56" } ] }, "documentation": { "id": 21705, "nodeType": "StructuredDocumentation", "src": "3887:184:56", "text": " @dev returns the address associated with the given contract name\n @param _contractName contract name\n @return contract address" }, "id": 21718, "implemented": true, "kind": "function", "modifiers": [], "name": "addressOf", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21708, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21707, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21718, "src": "4096:21:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21706, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4096:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "4095:23:56" }, "returnParameters": { "id": 21711, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21710, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21718, "src": "4142:7:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21709, "name": "address", "nodeType": "ElementaryTypeName", "src": "4142:7:56", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4141:9:56" }, "scope": 21719, "src": "4077:133:56", "stateMutability": "view", "virtual": false, "visibility": "internal" } ], "scope": 21720, "src": "233:3980:56" } ], "src": "52:4163:56" }, "legacyAST": { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol", "exportedSymbols": { "ContractRegistryClient": [ 21719 ] }, "id": 21720, "license": "SEE LICENSE IN LICENSE", "nodeType": "SourceUnit", "nodes": [ { "id": 21516, "literals": [ "solidity", "0.6", ".12" ], "nodeType": "PragmaDirective", "src": "52:23:56" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol", "file": "./Owned.sol", "id": 21517, "nodeType": "ImportDirective", "scope": 21720, "sourceUnit": 21819, "src": "77:21:56", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol", "file": "./Utils.sol", "id": 21518, "nodeType": "ImportDirective", "scope": 21720, "sourceUnit": 22662, "src": "100:21:56", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol", "file": "./interfaces/IContractRegistry.sol", "id": 21519, "nodeType": "ImportDirective", "scope": 21720, "sourceUnit": 22832, "src": "123:44:56", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 21521, "name": "Owned", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21818, "src": "268:5:56", "typeDescriptions": { "typeIdentifier": "t_contract$_Owned_$21818", "typeString": "contract Owned" } }, "id": 21522, "nodeType": "InheritanceSpecifier", "src": "268:5:56" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21523, "name": "Utils", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22661, "src": "275:5:56", "typeDescriptions": { "typeIdentifier": "t_contract$_Utils_$22661", "typeString": "contract Utils" } }, "id": 21524, "nodeType": "InheritanceSpecifier", "src": "275:5:56" } ], "contractDependencies": [ 21818, 22661, 22847 ], "contractKind": "contract", "documentation": { "id": 21520, "nodeType": "StructuredDocumentation", "src": "171:60:56", "text": " @dev Base contract for ContractRegistry clients" }, "fullyImplemented": true, "id": 21719, "linearizedBaseContracts": [ 21719, 22661, 21818, 22847 ], "name": "ContractRegistryClient", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "id": 21527, "mutability": "constant", "name": "CONTRACT_REGISTRY", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "288:64:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21525, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "288:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "436f6e74726163745265676973747279", "id": 21526, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "334:18:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_014cc675742635098f3843c56f86f2875ab1c0e8ccd166d07159a5036b798b15", "typeString": "literal_string \"ContractRegistry\"" }, "value": "ContractRegistry" }, "visibility": "internal" }, { "constant": true, "id": 21530, "mutability": "constant", "name": "BANCOR_NETWORK", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "359:58:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21528, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "359:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f724e6574776f726b", "id": 21529, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "402:15:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e13073a1961b7477f917c9e8fc77a7d64eb68a6e4f8820f41bc0991c65d90aea", "typeString": "literal_string \"BancorNetwork\"" }, "value": "BancorNetwork" }, "visibility": "internal" }, { "constant": true, "id": 21533, "mutability": "constant", "name": "BANCOR_FORMULA", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "424:58:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21531, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "424:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f72466f726d756c61", "id": 21532, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "467:15:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f9aac19de3c8e04eb4d0548047a1cd61c5aaafde7cf99ed9c7ed906ce4dddf38", "typeString": "literal_string \"BancorFormula\"" }, "value": "BancorFormula" }, "visibility": "internal" }, { "constant": true, "id": 21536, "mutability": "constant", "name": "CONVERTER_FACTORY", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "489:64:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21534, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "489:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "436f6e766572746572466163746f7279", "id": 21535, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "535:18:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_01f892de917bf09cf6fd04f57ff78c6ca006205a8809769abbeb39a039d3d768", "typeString": "literal_string \"ConverterFactory\"" }, "value": "ConverterFactory" }, "visibility": "internal" }, { "constant": true, "id": 21539, "mutability": "constant", "name": "CONVERSION_PATH_FINDER", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "560:73:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21537, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "560:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "436f6e76657273696f6e5061746846696e646572", "id": 21538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "611:22:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d55bb14cf5551b26acee2cc099a4125a85ce113cb3306082cd15a1b4785376f1", "typeString": "literal_string \"ConversionPathFinder\"" }, "value": "ConversionPathFinder" }, "visibility": "internal" }, { "constant": true, "id": 21542, "mutability": "constant", "name": "CONVERTER_UPGRADER", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "640:72:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21540, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "640:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f72436f6e7665727465725570677261646572", "id": 21541, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "687:25:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e8cccdfec0e08322695b48c2ff60a2acb1243c72e02ec3a238fe40eefe726c01", "typeString": "literal_string \"BancorConverterUpgrader\"" }, "value": "BancorConverterUpgrader" }, "visibility": "internal" }, { "constant": true, "id": 21545, "mutability": "constant", "name": "CONVERTER_REGISTRY", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "719:72:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21543, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "719:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f72436f6e7665727465725265676973747279", "id": 21544, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "766:25:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_be29ba855de63e3aeb1afb9aed4122f6a4ac386581ea1b32773e72966a3749e7", "typeString": "literal_string \"BancorConverterRegistry\"" }, "value": "BancorConverterRegistry" }, "visibility": "internal" }, { "constant": true, "id": 21548, "mutability": "constant", "name": "CONVERTER_REGISTRY_DATA", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "798:81:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21546, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "798:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f72436f6e766572746572526567697374727944617461", "id": 21547, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "850:29:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f47ef61fa81526eefb8475acf271ff419a87423535a77af3ef98ebc7b31c640c", "typeString": "literal_string \"BancorConverterRegistryData\"" }, "value": "BancorConverterRegistryData" }, "visibility": "internal" }, { "constant": true, "id": 21551, "mutability": "constant", "name": "BNT_TOKEN", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "886:48:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21549, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "886:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "424e54546f6b656e", "id": 21550, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "924:10:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_4686149f7058d2454e334cfa4ea1a3482469c64fd3d4f50dfc69716086aee66f", "typeString": "literal_string \"BNTToken\"" }, "value": "BNTToken" }, "visibility": "internal" }, { "constant": true, "id": 21554, "mutability": "constant", "name": "BANCOR_X", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "941:46:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21552, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "941:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f7258", "id": 21553, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "978:9:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_86ea4d05259b04f0f72cb84c9671b182b8bbe45a219bbea86edd67f80c414eb4", "typeString": "literal_string \"BancorX\"" }, "value": "BancorX" }, "visibility": "internal" }, { "constant": true, "id": 21557, "mutability": "constant", "name": "BANCOR_X_UPGRADER", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "994:63:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21555, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "994:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "42616e636f72585570677261646572", "id": 21556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1040:17:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_d5e7e6eba8567517cf1f8f313379e5a6dbd5dcff956b158cf65a32e6b2bb5fd8", "typeString": "literal_string \"BancorXUpgrader\"" }, "value": "BancorXUpgrader" }, "visibility": "internal" }, { "constant": true, "id": 21560, "mutability": "constant", "name": "CHAINLINK_ORACLE_WHITELIST", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "1064:81:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21558, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1064:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "argumentTypes": null, "hexValue": "436861696e6c696e6b4f7261636c6557686974656c697374", "id": 21559, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1119:26:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f1d302dc7d7d6451424d658039558f1ea7e3cbf7255a10240557f430d300feb3", "typeString": "literal_string \"ChainlinkOracleWhitelist\"" }, "value": "ChainlinkOracleWhitelist" }, "visibility": "internal" }, { "constant": false, "functionSelector": "7b103999", "id": 21562, "mutability": "mutable", "name": "registry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "1154:33:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "typeName": { "contractScope": null, "id": 21561, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "1154:17:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "61cd756e", "id": 21564, "mutability": "mutable", "name": "prevRegistry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "1243:37:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "typeName": { "contractScope": null, "id": 21563, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "1243:17:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "2fe8a6ad", "id": 21566, "mutability": "mutable", "name": "onlyOwnerCanUpdateRegistry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21719, "src": "1333:38:56", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21565, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1333:4:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "public" }, { "body": { "id": 21576, "nodeType": "Block", "src": "1616:51:56", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21572, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21569, "src": "1633:13:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 21571, "name": "_only", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21593, "src": "1627:5:56", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$__$", "typeString": "function (bytes32) view" } }, "id": 21573, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1627:20:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21574, "nodeType": "ExpressionStatement", "src": "1627:20:56" }, { "id": 21575, "nodeType": "PlaceholderStatement", "src": "1658:1:56" } ] }, "documentation": { "id": 21567, "nodeType": "StructuredDocumentation", "src": "1430:143:56", "text": " @dev verifies that the caller is mapped to the given contract name\n @param _contractName contract name" }, "id": 21577, "name": "only", "nodeType": "ModifierDefinition", "overrides": null, "parameters": { "id": 21570, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21569, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21577, "src": "1593:21:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21568, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1593:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "1592:23:56" }, "src": "1579:88:56", "virtual": false, "visibility": "internal" }, { "body": { "id": 21592, "nodeType": "Block", "src": "1774:87:56", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21583, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "1793:3:56", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 21584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1793:10:56", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21586, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21579, "src": "1817:13:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 21585, "name": "addressOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21718, "src": "1807:9:56", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) view returns (address)" } }, "id": 21587, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1807:24:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1793:38:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f4143434553535f44454e494544", "id": 21589, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1833:19:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666", "typeString": "literal_string \"ERR_ACCESS_DENIED\"" }, "value": "ERR_ACCESS_DENIED" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666", "typeString": "literal_string \"ERR_ACCESS_DENIED\"" } ], "id": 21582, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "1785:7:56", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21590, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1785:68:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21591, "nodeType": "ExpressionStatement", "src": "1785:68:56" } ] }, "documentation": null, "id": 21593, "implemented": true, "kind": "function", "modifiers": [], "name": "_only", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21580, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21579, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21593, "src": "1737:21:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21578, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1737:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "1736:23:56" }, "returnParameters": { "id": 21581, "nodeType": "ParameterList", "parameters": [], "src": "1774:0:56" }, "scope": 21719, "src": "1722:139:56", "stateMutability": "view", "virtual": false, "visibility": "internal" }, { "body": { "id": 21617, "nodeType": "Block", "src": "2111:112:56", "statements": [ { "expression": { "argumentTypes": null, "id": 21609, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21605, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "2122:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21607, "name": "_registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21596, "src": "2151:9:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } ], "id": 21606, "name": "IContractRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22831, "src": "2133:17:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$", "typeString": "type(contract IContractRegistry)" } }, "id": 21608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2133:28:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "2122:39:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21610, "nodeType": "ExpressionStatement", "src": "2122:39:56" }, { "expression": { "argumentTypes": null, "id": 21615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21611, "name": "prevRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21564, "src": "2172:12:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21613, "name": "_registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21596, "src": "2205:9:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } ], "id": 21612, "name": "IContractRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22831, "src": "2187:17:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$", "typeString": "type(contract IContractRegistry)" } }, "id": 21614, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2187:28:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "2172:43:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21616, "nodeType": "ExpressionStatement", "src": "2172:43:56" } ] }, "documentation": { "id": 21594, "nodeType": "StructuredDocumentation", "src": "1869:153:56", "text": " @dev initializes a new ContractRegistryClient instance\n @param _registry address of a contract-registry contract" }, "id": 21618, "implemented": true, "kind": "constructor", "modifiers": [ { "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21601, "name": "_registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21596, "src": "2099:9:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } ], "id": 21600, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2091:7:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21599, "name": "address", "nodeType": "ElementaryTypeName", "src": "2091:7:56", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21602, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2091:18:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 21603, "modifierName": { "argumentTypes": null, "id": 21598, "name": "validAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22618, "src": "2078:12:56", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "2078:32:56" } ], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21597, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21596, "mutability": "mutable", "name": "_registry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21618, "src": "2040:27:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "typeName": { "contractScope": null, "id": 21595, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "2040:17:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "value": null, "visibility": "internal" } ], "src": "2039:29:56" }, "returnParameters": { "id": 21604, "nodeType": "ParameterList", "parameters": [], "src": "2111:0:56" }, "scope": 21719, "src": "2028:195:56", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 21679, "nodeType": "Block", "src": "2333:892:56", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 21629, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21623, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2403:3:56", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 21624, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2403:10:56", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 21625, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21728, "src": "2417:5:56", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2403:19:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "id": 21628, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "2426:27:56", "subExpression": { "argumentTypes": null, "id": 21627, "name": "onlyOwnerCanUpdateRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21566, "src": "2427:26:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2403:50:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f4143434553535f44454e494544", "id": 21630, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2455:19:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666", "typeString": "literal_string \"ERR_ACCESS_DENIED\"" }, "value": "ERR_ACCESS_DENIED" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666", "typeString": "literal_string \"ERR_ACCESS_DENIED\"" } ], "id": 21622, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2395:7:56", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21631, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2395:80:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21632, "nodeType": "ExpressionStatement", "src": "2395:80:56" }, { "assignments": [ 21634 ], "declarations": [ { "constant": false, "id": 21634, "mutability": "mutable", "name": "newRegistry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21679, "src": "2530:29:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "typeName": { "contractScope": null, "id": 21633, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "2530:17:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "value": null, "visibility": "internal" } ], "id": 21640, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21637, "name": "CONTRACT_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21527, "src": "2590:17:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 21636, "name": "addressOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21718, "src": "2580:9:56", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) view returns (address)" } }, "id": 21638, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2580:28:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 21635, "name": "IContractRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22831, "src": "2562:17:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$", "typeString": "type(contract IContractRegistry)" } }, "id": 21639, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2562:47:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "VariableDeclarationStatement", "src": "2530:79:56" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 21654, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" }, "id": 21644, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 21642, "name": "newRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21634, "src": "2706:11:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 21643, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "2721:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "2706:23:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21653, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21647, "name": "newRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21634, "src": "2741:11:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } ], "id": 21646, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2733:7:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21645, "name": "address", "nodeType": "ElementaryTypeName", "src": "2733:7:56", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21648, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2733:20:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21651, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2765:1:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 21650, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2757:7:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21649, "name": "address", "nodeType": "ElementaryTypeName", "src": "2757:7:56", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21652, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2757:10:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2733:34:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2706:61:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f5245474953545259", "id": 21655, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2769:22:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d", "typeString": "literal_string \"ERR_INVALID_REGISTRY\"" }, "value": "ERR_INVALID_REGISTRY" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d", "typeString": "literal_string \"ERR_INVALID_REGISTRY\"" } ], "id": 21641, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2698:7:56", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21656, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2698:94:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21657, "nodeType": "ExpressionStatement", "src": "2698:94:56" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21667, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21661, "name": "CONTRACT_REGISTRY", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21527, "src": "2929:17:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "id": 21659, "name": "newRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21634, "src": "2907:11:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21660, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "addressOf", "nodeType": "MemberAccess", "referencedDeclaration": 22830, "src": "2907:21:56", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) view external returns (address)" } }, "id": 21662, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2907:40:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21665, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2959:1:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 21664, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2951:7:56", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21663, "name": "address", "nodeType": "ElementaryTypeName", "src": "2951:7:56", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21666, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2951:10:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2907:54:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f5245474953545259", "id": 21668, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2963:22:56", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d", "typeString": "literal_string \"ERR_INVALID_REGISTRY\"" }, "value": "ERR_INVALID_REGISTRY" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d", "typeString": "literal_string \"ERR_INVALID_REGISTRY\"" } ], "id": 21658, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2899:7:56", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21669, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2899:87:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21670, "nodeType": "ExpressionStatement", "src": "2899:87:56" }, { "expression": { "argumentTypes": null, "id": 21673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21671, "name": "prevRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21564, "src": "3078:12:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21672, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "3093:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "3078:23:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21674, "nodeType": "ExpressionStatement", "src": "3078:23:56" }, { "expression": { "argumentTypes": null, "id": 21677, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21675, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "3195:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21676, "name": "newRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21634, "src": "3206:11:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "3195:22:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21678, "nodeType": "ExpressionStatement", "src": "3195:22:56" } ] }, "documentation": { "id": 21619, "nodeType": "StructuredDocumentation", "src": "2231:63:56", "text": " @dev updates to the new contract-registry" }, "functionSelector": "49d10b64", "id": 21680, "implemented": true, "kind": "function", "modifiers": [], "name": "updateRegistry", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21620, "nodeType": "ParameterList", "parameters": [], "src": "2323:2:56" }, "returnParameters": { "id": 21621, "nodeType": "ParameterList", "parameters": [], "src": "2333:0:56" }, "scope": 21719, "src": "2300:925:56", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21690, "nodeType": "Block", "src": "3348:93:56", "statements": [ { "expression": { "argumentTypes": null, "id": 21688, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21686, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "3410:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21687, "name": "prevRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21564, "src": "3421:12:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "src": "3410:23:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21689, "nodeType": "ExpressionStatement", "src": "3410:23:56" } ] }, "documentation": { "id": 21681, "nodeType": "StructuredDocumentation", "src": "3233:65:56", "text": " @dev restores the previous contract-registry" }, "functionSelector": "b4a176d3", "id": 21691, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21684, "modifierName": { "argumentTypes": null, "id": 21683, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21754, "src": "3338:9:56", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3338:9:56" } ], "name": "restoreRegistry", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21682, "nodeType": "ParameterList", "parameters": [], "src": "3328:2:56" }, "returnParameters": { "id": 21685, "nodeType": "ParameterList", "parameters": [], "src": "3348:0:56" }, "scope": 21719, "src": "3304:137:56", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21703, "nodeType": "Block", "src": "3738:141:56", "statements": [ { "expression": { "argumentTypes": null, "id": 21701, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 21699, "name": "onlyOwnerCanUpdateRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21566, "src": "3815:26:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21700, "name": "_onlyOwnerCanUpdateRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21694, "src": "3844:27:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3815:56:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 21702, "nodeType": "ExpressionStatement", "src": "3815:56:56" } ] }, "documentation": { "id": 21692, "nodeType": "StructuredDocumentation", "src": "3449:200:56", "text": " @dev restricts the permission to update the contract-registry\n @param _onlyOwnerCanUpdateRegistry indicates whether or not permission is restricted to owner only" }, "functionSelector": "024c7ec7", "id": 21704, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21697, "modifierName": { "argumentTypes": null, "id": 21696, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21754, "src": "3728:9:56", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3728:9:56" } ], "name": "restrictRegistryUpdate", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21695, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21694, "mutability": "mutable", "name": "_onlyOwnerCanUpdateRegistry", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21704, "src": "3687:32:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 21693, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3687:4:56", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "3686:34:56" }, "returnParameters": { "id": 21698, "nodeType": "ParameterList", "parameters": [], "src": "3738:0:56" }, "scope": 21719, "src": "3655:224:56", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21717, "nodeType": "Block", "src": "4151:59:56", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21714, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21707, "src": "4188:13:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "id": 21712, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21562, "src": "4169:8:56", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "addressOf", "nodeType": "MemberAccess", "referencedDeclaration": 22830, "src": "4169:18:56", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) view external returns (address)" } }, "id": 21715, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4169:33:56", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 21711, "id": 21716, "nodeType": "Return", "src": "4162:40:56" } ] }, "documentation": { "id": 21705, "nodeType": "StructuredDocumentation", "src": "3887:184:56", "text": " @dev returns the address associated with the given contract name\n @param _contractName contract name\n @return contract address" }, "id": 21718, "implemented": true, "kind": "function", "modifiers": [], "name": "addressOf", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21708, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21707, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21718, "src": "4096:21:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21706, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4096:7:56", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "4095:23:56" }, "returnParameters": { "id": 21711, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21710, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21718, "src": "4142:7:56", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21709, "name": "address", "nodeType": "ElementaryTypeName", "src": "4142:7:56", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "4141:9:56" }, "scope": 21719, "src": "4077:133:56", "stateMutability": "view", "virtual": false, "visibility": "internal" } ], "scope": 21720, "src": "233:3980:56" } ], "src": "52:4163:56" }, "compiler": { "name": "solc", "version": "0.6.12+commit.27d51765.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.2.3", "updatedAt": "2020-10-20T08:24:47.839Z", "devdoc": { "details": "Base contract for ContractRegistry clients", "kind": "dev", "methods": { "acceptOwnership()": { "details": "used by a new owner to accept an ownership transfer" }, "constructor": { "details": "initializes a new ContractRegistryClient instance", "params": { "_registry": "address of a contract-registry contract" } }, "restoreRegistry()": { "details": "restores the previous contract-registry" }, "restrictRegistryUpdate(bool)": { "details": "restricts the permission to update the contract-registry", "params": { "_onlyOwnerCanUpdateRegistry": "indicates whether or not permission is restricted to owner only" } }, "transferOwnership(address)": { "details": "allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner", "params": { "_newOwner": "new contract owner" } }, "updateRegistry()": { "details": "updates to the new contract-registry" } }, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }