{ "contractName": "ContractRegistry", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "AddressUpdate", "type": "event" }, { "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": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "contractNames", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "newOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "itemCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" } ], "name": "addressOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true }, { "inputs": [ { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "registerAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" } ], "name": "unregisterAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" } ], "name": "getAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true } ], "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_contractName\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"AddressUpdate\",\"type\":\"event\"},{\"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\":[{\"internalType\":\"bytes32\",\"name\":\"_contractName\",\"type\":\"bytes32\"}],\"name\":\"addressOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"contractNames\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_contractName\",\"type\":\"bytes32\"}],\"name\":\"getAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"itemCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_contractName\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_contractAddress\",\"type\":\"address\"}],\"name\":\"registerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_contractName\",\"type\":\"bytes32\"}],\"name\":\"unregisterAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract Registry The contract registry keeps contract addresses by name. The owner can update contract addresses so that a contract name always points to the latest version of the given contract. Other contracts can query the registry to get updated addresses instead of depending on specific addresses. Note that contract names are limited to 32 bytes UTF8 encoded ASCII strings to optimize gas costs\",\"events\":{\"AddressUpdate(bytes32,address)\":{\"details\":\"triggered when an address pointed to by a contract name is modified\",\"params\":{\"_contractAddress\":\"new contract address\",\"_contractName\":\"contract name\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"addressOf(bytes32)\":{\"details\":\"returns the address associated with the given contract name\",\"params\":{\"_contractName\":\"contract name\"},\"returns\":{\"_0\":\"contract address\"}},\"getAddress(bytes32)\":{\"details\":\"deprecated, backward compatibility\"},\"itemCount()\":{\"details\":\"returns the number of items in the registry\",\"returns\":{\"_0\":\"number of items\"}},\"registerAddress(bytes32,address)\":{\"details\":\"registers a new address for the contract name in the registry\",\"params\":{\"_contractAddress\":\"contract address\",\"_contractName\":\"contract name\"}},\"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\"}},\"unregisterAddress(bytes32)\":{\"details\":\"removes an existing contract address from the registry\",\"params\":{\"_contractName\":\"contract name\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistry.sol\":\"ContractRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistry.sol\":{\"keccak256\":\"0x2c528338138def339adcf2cff6003747add2baec544025f9e00e8ac7ca3ae9a5\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://3bf4a4cd09bf05a9c83a7255989bddf55afe82e201e83492ca7d5dc3bb95eb22\",\"dweb:/ipfs/QmUBkzUfk5x8sAW4Xm9krmBkQCYx9nziKNdhMehbCCtoWT\"]},\"/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": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319163317905561098f806100326000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba5097146101d35780638da5cb5b146101db578063bb34534c146101e3578063d4ee1d9014610200578063f2fde38b146102085761009e565b806321f8a721146100a35780632bbd9530146100dc5780633ca6bb92146100fb578063662de3791461018d5780636bfb0d01146101b9575b600080fd5b6100c0600480360360208110156100b957600080fd5b503561022e565b604080516001600160a01b039092168252519081900360200190f35b6100f9600480360360208110156100f257600080fd5b503561023f565b005b6101186004803603602081101561011157600080fd5b5035610453565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015257818101518382015260200161013a565b50505050905090810190601f16801561017f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100f9600480360360408110156101a357600080fd5b50803590602001356001600160a01b03166104f9565b6101c16105f0565b60408051918252519081900360200190f35b6100f96105f6565b6100c06106ad565b6100c0600480360360208110156101f957600080fd5b50356106bc565b6100c06106d7565b6100f96004803603602081101561021e57600080fd5b50356001600160a01b03166106e6565b6000610239826106bc565b92915050565b610247610764565b6000818152600260205260409020546001600160a01b03166102a3576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b600081815260026020526040902080546001600160a01b0319169055600354600110156103df57600380546060919060001981019081106102e057fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561036e5780601f106103435761010080835404028352916020019161036e565b820191906000526020600020905b81548152906001019060200180831161035157829003601f168201915b50505050509050600060026000848152602001908152602001600020600101549050816003828154811061039e57fe5b9060005260206000200190805190602001906103bb929190610886565b5060006103c7836107b9565b60009081526002602052604090206001019190915550505b60038054806103ea57fe5b6001900381819060005260206000200160006104069190610904565b9055600081815260026020908152604080832060010183905580519283525183927ffc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f2991892908290030190a250565b6003818154811061046057fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505081565b610501610764565b8061050b816107c0565b6000838152600260205260409020546001600160a01b0390811690831681141561053557506105eb565b6001600160a01b038116610589576003805460008681526002602052604090206001015561056285610814565b8154600181018355600092835260209283902082516105879491909201920190610886565b505b60008481526002602090815260409182902080546001600160a01b0319166001600160a01b0387169081179091558251908152915186927ffc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f2991892908290030190a2505b505050565b60035490565b6001546001600160a01b03163314610649576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6000908152600260205260409020546001600160a01b031690565b6001546001600160a01b031681565b6106ee610764565b6000546001600160a01b0382811691161415610742576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107b7576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b6020015190565b6001600160a01b038116610811576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b60408051602080825281830190925260609182919060208201818036833701905050905060005b602081101561087f5783816020811061085057fe5b1a60f81b82828151811061086057fe5b60200101906001600160f81b031916908160001a90535060010161083b565b5092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106108c757805160ff19168380011785556108f4565b828001600101855582156108f4579182015b828111156108f45782518255916020019190600101906108d9565b50610900929150610944565b5090565b50805460018160011615610100020316600290046000825580601f1061092a5750610811565b601f01602090049060005260206000209081019061081191905b5b80821115610900576000815560010161094556fea2646970667358221220c1ee460acf4574042f65f6a745c4d45779297f7f10559449a9fb7e99752852a864736f6c634300060c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba5097146101d35780638da5cb5b146101db578063bb34534c146101e3578063d4ee1d9014610200578063f2fde38b146102085761009e565b806321f8a721146100a35780632bbd9530146100dc5780633ca6bb92146100fb578063662de3791461018d5780636bfb0d01146101b9575b600080fd5b6100c0600480360360208110156100b957600080fd5b503561022e565b604080516001600160a01b039092168252519081900360200190f35b6100f9600480360360208110156100f257600080fd5b503561023f565b005b6101186004803603602081101561011157600080fd5b5035610453565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015257818101518382015260200161013a565b50505050905090810190601f16801561017f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100f9600480360360408110156101a357600080fd5b50803590602001356001600160a01b03166104f9565b6101c16105f0565b60408051918252519081900360200190f35b6100f96105f6565b6100c06106ad565b6100c0600480360360208110156101f957600080fd5b50356106bc565b6100c06106d7565b6100f96004803603602081101561021e57600080fd5b50356001600160a01b03166106e6565b6000610239826106bc565b92915050565b610247610764565b6000818152600260205260409020546001600160a01b03166102a3576040805162461bcd60e51b815260206004820152601060248201526f4552525f494e56414c49445f4e414d4560801b604482015290519081900360640190fd5b600081815260026020526040902080546001600160a01b0319169055600354600110156103df57600380546060919060001981019081106102e057fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561036e5780601f106103435761010080835404028352916020019161036e565b820191906000526020600020905b81548152906001019060200180831161035157829003601f168201915b50505050509050600060026000848152602001908152602001600020600101549050816003828154811061039e57fe5b9060005260206000200190805190602001906103bb929190610886565b5060006103c7836107b9565b60009081526002602052604090206001019190915550505b60038054806103ea57fe5b6001900381819060005260206000200160006104069190610904565b9055600081815260026020908152604080832060010183905580519283525183927ffc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f2991892908290030190a250565b6003818154811061046057fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505081565b610501610764565b8061050b816107c0565b6000838152600260205260409020546001600160a01b0390811690831681141561053557506105eb565b6001600160a01b038116610589576003805460008681526002602052604090206001015561056285610814565b8154600181018355600092835260209283902082516105879491909201920190610886565b505b60008481526002602090815260409182902080546001600160a01b0319166001600160a01b0387169081179091558251908152915186927ffc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f2991892908290030190a2505b505050565b60035490565b6001546001600160a01b03163314610649576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031681565b6000908152600260205260409020546001600160a01b031690565b6001546001600160a01b031681565b6106ee610764565b6000546001600160a01b0382811691161415610742576040805162461bcd60e51b815260206004820152600e60248201526d22a9292fa9a0a6a2afa7aba722a960911b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107b7576040805162461bcd60e51b815260206004820152601160248201527011549497d050d0d154d4d7d11153925151607a1b604482015290519081900360640190fd5b565b6020015190565b6001600160a01b038116610811576040805162461bcd60e51b81526020600482015260136024820152724552525f494e56414c49445f4144445245535360681b604482015290519081900360640190fd5b50565b60408051602080825281830190925260609182919060208201818036833701905050905060005b602081101561087f5783816020811061085057fe5b1a60f81b82828151811061086057fe5b60200101906001600160f81b031916908160001a90535060010161083b565b5092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106108c757805160ff19168380011785556108f4565b828001600101855582156108f4579182015b828111156108f45782518255916020019190600101906108d9565b50610900929150610944565b5090565b50805460018160011615610100020316600290046000825580601f1061092a5750610811565b601f01602090049060005260206000209081019061081191905b5b80821115610900576000815560010161094556fea2646970667358221220c1ee460acf4574042f65f6a745c4d45779297f7f10559449a9fb7e99752852a864736f6c634300060c0033", "immutableReferences": {}, "sourceMap": "633:5154:55:-:0;;;;;;;;;;;;-1:-1:-1;619:5:57;:18;;-1:-1:-1;;;;;;619:18:57;627:10;619:18;;;633:5154:55;;;;;;", "deployedSourceMap": "633:5154:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5661:123;;;;;;;;;;;;;;;;-1:-1:-1;5661:123:55;;:::i;:::-;;;;-1:-1:-1;;;;;5661:123:55;;;;;;;;;;;;;;3240:1394;;;;;;;;;;;;;;;;-1:-1:-1;3240:1394:55;;:::i;:::-;;971:29;;;;;;;;;;;;;;;;-1:-1:-1;971:29:55;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:964;;;;;;;;;;;;;;;;-1:-1:-1;2129:964:55;;;;;;-1:-1:-1;;;;;2129:964:55;;:::i;1482:97::-;;;:::i;:::-;;;;;;;;;;;;;;;;1422:217:57;;;:::i;219:29::-;;;:::i;1777:143:55:-;;;;;;;;;;;;;;;;-1:-1:-1;1777:143:55;;:::i;255:23:57:-;;;:::i;1164:167::-;;;;;;;;;;;;;;;;-1:-1:-1;1164:167:57;-1:-1:-1;;;;;1164:167:57;;:::i;5661:123:55:-;5725:7;5752:24;5762:13;5752:9;:24::i;:::-;5745:31;5661:123;-1:-1:-1;;5661:123:55:o;3240:1394::-;726:12:57;:10;:12::i;:::-;3465:1:55::1;3417:20:::0;;;:5:::1;:20;::::0;;;;:36;-1:-1:-1;;;;;3417:36:55::1;3409:79;;;::::0;;-1:-1:-1;;;3409:79:55;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;3409:79:55;;;;;;;;;;;;;::::1;;3597:1;3550:20:::0;;;:5:::1;:20;::::0;;;;:49;;-1:-1:-1;;;;;;3550:49:55::1;::::0;;3862:13:::1;:20:::0;3550:49;-1:-1:-1;3858:488:55::1;;;3942:13;3956:20:::0;;3903:36:::1;::::0;3942:13;-1:-1:-1;;3956:24:55;;;3942:39;::::1;;;;;;::::0;;;::::1;::::0;;;;::::1;3903:78:::0;;::::1;::::0;;::::1;;-1:-1:-1::0;;3903:78:55::1;;::::0;::::1;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;3942:39:::0;3903:78;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3996:23;4022:5;:20;4028:13;4022:20;;;;;;;;;;;:30;;;3996:56;;4102:22;4069:13;4083:15;4069:30;;;;;;;;;;;;;;;:55;;;;;;;;;;;;:::i;:::-;;4139:24;4166:39;4182:22;4166:15;:39::i;:::-;4220:33;4256:23:::0;;;:5:::1;:23;::::0;;;;4294:22:::1;;:40:::0;;;;-1:-1:-1;;3858:488:55::1;4413:13;:19;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;::::0;;4521:1:::1;4488:20:::0;;;:5:::1;:20;::::0;;;;;;;:30:::1;;:34:::0;;;4586:40;;;;;;4494:13;;4586:40:::1;::::0;;;;;;;::::1;3240:1394:::0;:::o;971:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;971:29:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;971:29:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2129:964::-;726:12:57;:10;:12::i;:::-;2260:16:55::1;594:23:64;608:8;594:13;:23::i;:::-;2429:22:55::2;2454:20:::0;;;:5:::2;:20;::::0;;;;:36;-1:-1:-1;;;;;2454:36:55;;::::2;::::0;2505:34;::::2;::::0;::::2;2501:60;;;2554:7;;;2501:60;-1:-1:-1::0;;;;;2577:28:55;::::2;2573:288;;2707:13;:20:::0;;2674::::2;::::0;;;:5:::2;:20;::::0;;;;:30:::2;;:53:::0;2818:30:::2;2680:13:::0;2818:15:::2;:30::i;:::-;2799:50:::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;2799:50:55;;;::::2;::::0;;;;;;::::2;::::0;;;;::::2;::::0;::::2;::::0;::::2;:::i;:::-;;2573:288;2920:20;::::0;;;:5:::2;:20;::::0;;;;;;;;:55;;-1:-1:-1;;;;;;2920:55:55::2;-1:-1:-1::0;;;;;2920:55:55;::::2;::::0;;::::2;::::0;;;3039:46;;;;;;;2920:20;;3039:46:::2;::::0;;;;;;;::::2;628:1:64;;749::57::1;2129:964:55::0;;:::o;1482:97::-;1551:13;:20;1482:97;:::o;1422:217:57:-;1498:8;;-1:-1:-1;;;;;1498:8:57;1484:10;:22;1476:52;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;-1:-1:-1;;;1476:52:57;;;;;;;;;;;;;;;1563:8;;;1556:5;;1544:28;;-1:-1:-1;;;;;1563:8:57;;;;1556:5;;;;1544:28;;;1591:8;;;;1583:16;;-1:-1:-1;;;;;;1583:16:57;;;-1:-1:-1;;;;;1591:8:57;;1583:16;;;;1610:21;;;1422:217::o;219:29::-;;;-1:-1:-1;;;;;219:29:57;;:::o;1777:143:55:-;1849:7;1876:20;;;:5;:20;;;;;:36;-1:-1:-1;;;;;1876:36:55;;1777:143::o;255:23:57:-;;;-1:-1:-1;;;;;255:23:57;;:::o;1164:167::-;726:12;:10;:12::i;:::-;1268:5:::1;::::0;-1:-1:-1;;;;;1255:18:57;;::::1;1268:5:::0;::::1;1255:18;;1247:45;;;::::0;;-1:-1:-1;;;1247:45:57;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;1247:45:57;;;;;;;;;;;;;::::1;;1303:8;:20:::0;;-1:-1:-1;;;;;;1303:20:57::1;-1:-1:-1::0;;;;;1303:20:57;;;::::1;::::0;;;::::1;::::0;;1164:167::o;813:104::-;882:5;;-1:-1:-1;;;;;882:5:57;868:10;:19;860:49;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;-1:-1:-1;;;860:49:57;;;;;;;;;;;;;;;813:104::o;5374:213:55:-;5541:2;5529:15;5523:22;;5374:213::o;692:128:64:-;-1:-1:-1;;;;;766:22:64;;758:54;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;-1:-1:-1;;;758:54:64;;;;;;;;;;;;;;;692:128;:::o;4872:266:55:-;4986:13;;;4996:2;4986:13;;;;;;;;;4935;;;;4986;;;;;;;;;;;-1:-1:-1;4986:13:55;4961:38;;5015:9;5010:84;5034:2;5030:1;:6;5010:84;;;5073:6;5080:1;5073:9;;;;;;;;;;5058;5068:1;5058:12;;;;;;;;;;;:24;-1:-1:-1;;;;;5058:24:55;;;;;;;;-1:-1:-1;5038:3:55;;5010:84;;;-1:-1:-1;5120:9:55;4872:266;-1:-1:-1;;4872:266:55:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", "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 Contract Registry\r\n *\r\n * The contract registry keeps contract addresses by name.\r\n * The owner can update contract addresses so that a contract name always points to the latest version\r\n * of the given contract.\r\n * Other contracts can query the registry to get updated addresses instead of depending on specific\r\n * addresses.\r\n *\r\n * Note that contract names are limited to 32 bytes UTF8 encoded ASCII strings to optimize gas costs\r\n*/\r\ncontract ContractRegistry is IContractRegistry, Owned, Utils {\r\n struct RegistryItem {\r\n address contractAddress; // contract address\r\n uint256 nameIndex; // index of the item in the list of contract names\r\n }\r\n\r\n mapping (bytes32 => RegistryItem) private items; // name -> RegistryItem mapping\r\n string[] public contractNames; // list of all registered contract names\r\n\r\n /**\r\n * @dev triggered when an address pointed to by a contract name is modified\r\n *\r\n * @param _contractName contract name\r\n * @param _contractAddress new contract address\r\n */\r\n event AddressUpdate(bytes32 indexed _contractName, address _contractAddress);\r\n\r\n /**\r\n * @dev returns the number of items in the registry\r\n *\r\n * @return number of items\r\n */\r\n function itemCount() public view returns (uint256) {\r\n return contractNames.length;\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) public view override returns (address) {\r\n return items[_contractName].contractAddress;\r\n }\r\n\r\n /**\r\n * @dev registers a new address for the contract name in the registry\r\n *\r\n * @param _contractName contract name\r\n * @param _contractAddress contract address\r\n */\r\n function registerAddress(bytes32 _contractName, address _contractAddress)\r\n public\r\n ownerOnly\r\n validAddress(_contractAddress)\r\n {\r\n // validate input\r\n require(_contractName.length > 0, \"ERR_INVALID_NAME\");\r\n\r\n // check if any change is needed\r\n address currentAddress = items[_contractName].contractAddress;\r\n if (_contractAddress == currentAddress)\r\n return;\r\n\r\n if (currentAddress == address(0)) {\r\n // update the item's index in the list\r\n items[_contractName].nameIndex = contractNames.length;\r\n\r\n // add the contract name to the name list\r\n contractNames.push(bytes32ToString(_contractName));\r\n }\r\n\r\n // update the address in the registry\r\n items[_contractName].contractAddress = _contractAddress;\r\n\r\n // dispatch the address update event\r\n emit AddressUpdate(_contractName, _contractAddress);\r\n }\r\n\r\n /**\r\n * @dev removes an existing contract address from the registry\r\n *\r\n * @param _contractName contract name\r\n */\r\n function unregisterAddress(bytes32 _contractName) public ownerOnly {\r\n // validate input\r\n require(_contractName.length > 0, \"ERR_INVALID_NAME\");\r\n require(items[_contractName].contractAddress != address(0), \"ERR_INVALID_NAME\");\r\n\r\n // remove the address from the registry\r\n items[_contractName].contractAddress = address(0);\r\n\r\n // if there are multiple items in the registry, move the last element to the deleted element's position\r\n // and modify last element's registryItem.nameIndex in the items collection to point to the right position in contractNames\r\n if (contractNames.length > 1) {\r\n string memory lastContractNameString = contractNames[contractNames.length - 1];\r\n uint256 unregisterIndex = items[_contractName].nameIndex;\r\n\r\n contractNames[unregisterIndex] = lastContractNameString;\r\n bytes32 lastContractName = stringToBytes32(lastContractNameString);\r\n RegistryItem storage registryItem = items[lastContractName];\r\n registryItem.nameIndex = unregisterIndex;\r\n }\r\n\r\n // remove the last element from the name list\r\n contractNames.pop();\r\n // zero the deleted element's index\r\n items[_contractName].nameIndex = 0;\r\n\r\n // dispatch the address update event\r\n emit AddressUpdate(_contractName, address(0));\r\n }\r\n\r\n /**\r\n * @dev utility, converts bytes32 to a string\r\n * note that the bytes32 argument is assumed to be UTF8 encoded ASCII string\r\n *\r\n * @return string representation of the given bytes32 argument\r\n */\r\n function bytes32ToString(bytes32 _bytes) private pure returns (string memory) {\r\n bytes memory byteArray = new bytes(32);\r\n for (uint256 i = 0; i < 32; i++) {\r\n byteArray[i] = _bytes[i];\r\n }\r\n\r\n return string(byteArray);\r\n }\r\n\r\n /**\r\n * @dev utility, converts string to bytes32\r\n * note that the bytes32 argument is assumed to be UTF8 encoded ASCII string\r\n *\r\n * @return string representation of the given bytes32 argument\r\n */\r\n function stringToBytes32(string memory _string) private pure returns (bytes32) {\r\n bytes32 result;\r\n assembly {\r\n result := mload(add(_string,32))\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * @dev deprecated, backward compatibility\r\n */\r\n function getAddress(bytes32 _contractName) public view returns (address) {\r\n return addressOf(_contractName);\r\n }\r\n}\r\n", "sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistry.sol", "ast": { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistry.sol", "exportedSymbols": { "ContractRegistry": [ 21514 ] }, "id": 21515, "license": "SEE LICENSE IN LICENSE", "nodeType": "SourceUnit", "nodes": [ { "id": 21214, "literals": [ "solidity", "0.6", ".12" ], "nodeType": "PragmaDirective", "src": "52:23:55" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol", "file": "./Owned.sol", "id": 21215, "nodeType": "ImportDirective", "scope": 21515, "sourceUnit": 21819, "src": "77:21:55", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol", "file": "./Utils.sol", "id": 21216, "nodeType": "ImportDirective", "scope": 21515, "sourceUnit": 22662, "src": "100:21:55", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol", "file": "./interfaces/IContractRegistry.sol", "id": 21217, "nodeType": "ImportDirective", "scope": 21515, "sourceUnit": 22832, "src": "123:44:55", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 21219, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "662:17:55", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21220, "nodeType": "InheritanceSpecifier", "src": "662:17:55" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21221, "name": "Owned", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21818, "src": "681:5:55", "typeDescriptions": { "typeIdentifier": "t_contract$_Owned_$21818", "typeString": "contract Owned" } }, "id": 21222, "nodeType": "InheritanceSpecifier", "src": "681:5:55" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21223, "name": "Utils", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22661, "src": "688:5:55", "typeDescriptions": { "typeIdentifier": "t_contract$_Utils_$22661", "typeString": "contract Utils" } }, "id": 21224, "nodeType": "InheritanceSpecifier", "src": "688:5:55" } ], "contractDependencies": [ 21818, 22661, 22831, 22847 ], "contractKind": "contract", "documentation": { "id": 21218, "nodeType": "StructuredDocumentation", "src": "171:460:55", "text": " @dev Contract Registry\n The contract registry keeps contract addresses by name.\n The owner can update contract addresses so that a contract name always points to the latest version\n of the given contract.\n Other contracts can query the registry to get updated addresses instead of depending on specific\n addresses.\n Note that contract names are limited to 32 bytes UTF8 encoded ASCII strings to optimize gas costs" }, "fullyImplemented": true, "id": 21514, "linearizedBaseContracts": [ 21514, 22661, 21818, 22847, 22831 ], "name": "ContractRegistry", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "ContractRegistry.RegistryItem", "id": 21229, "members": [ { "constant": false, "id": 21226, "mutability": "mutable", "name": "contractAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21229, "src": "732:23:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21225, "name": "address", "nodeType": "ElementaryTypeName", "src": "732:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21228, "mutability": "mutable", "name": "nameIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21229, "src": "789:17:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21227, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "789:7:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "name": "RegistryItem", "nodeType": "StructDefinition", "scope": 21514, "src": "701:173:55", "visibility": "public" }, { "constant": false, "id": 21233, "mutability": "mutable", "name": "items", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21514, "src": "882:47:55", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem)" }, "typeName": { "id": 21232, "keyType": { "id": 21230, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "891:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "882:33:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem)" }, "valueType": { "contractScope": null, "id": 21231, "name": "RegistryItem", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21229, "src": "902:12:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr", "typeString": "struct ContractRegistry.RegistryItem" } } }, "value": null, "visibility": "private" }, { "constant": false, "functionSelector": "3ca6bb92", "id": 21236, "mutability": "mutable", "name": "contractNames", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21514, "src": "971:29:55", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string[]" }, "typeName": { "baseType": { "id": 21234, "name": "string", "nodeType": "ElementaryTypeName", "src": "971:6:55", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "id": 21235, "length": null, "nodeType": "ArrayTypeName", "src": "971:8:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", "typeString": "string[]" } }, "value": null, "visibility": "public" }, { "anonymous": false, "documentation": { "id": 21237, "nodeType": "StructuredDocumentation", "src": "1071:203:55", "text": " @dev triggered when an address pointed to by a contract name is modified\n @param _contractName contract name\n @param _contractAddress new contract address" }, "id": 21243, "name": "AddressUpdate", "nodeType": "EventDefinition", "parameters": { "id": 21242, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21239, "indexed": true, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21243, "src": "1300:29:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21238, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1300:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21241, "indexed": false, "mutability": "mutable", "name": "_contractAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21243, "src": "1331:24:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21240, "name": "address", "nodeType": "ElementaryTypeName", "src": "1331:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1299:57:55" }, "src": "1280:77:55" }, { "body": { "id": 21252, "nodeType": "Block", "src": "1533:46:55", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21249, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "1551:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1551:20:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 21248, "id": 21251, "nodeType": "Return", "src": "1544:27:55" } ] }, "documentation": { "id": 21244, "nodeType": "StructuredDocumentation", "src": "1365:111:55", "text": " @dev returns the number of items in the registry\n @return number of items" }, "functionSelector": "6bfb0d01", "id": 21253, "implemented": true, "kind": "function", "modifiers": [], "name": "itemCount", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21245, "nodeType": "ParameterList", "parameters": [], "src": "1500:2:55" }, "returnParameters": { "id": 21248, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21247, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21253, "src": "1524:7:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21246, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1524:7:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1523:9:55" }, "scope": 21514, "src": "1482:97:55", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 22830 ], "body": { "id": 21267, "nodeType": "Block", "src": "1858:62:55", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21262, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "1876:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21264, "indexExpression": { "argumentTypes": null, "id": 21263, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21256, "src": "1882:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1876:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21265, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "contractAddress", "nodeType": "MemberAccess", "referencedDeclaration": 21226, "src": "1876:36:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 21261, "id": 21266, "nodeType": "Return", "src": "1869:43:55" } ] }, "documentation": { "id": 21254, "nodeType": "StructuredDocumentation", "src": "1587:184:55", "text": " @dev returns the address associated with the given contract name\n @param _contractName contract name\n @return contract address" }, "functionSelector": "bb34534c", "id": 21268, "implemented": true, "kind": "function", "modifiers": [], "name": "addressOf", "nodeType": "FunctionDefinition", "overrides": { "id": 21258, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1831:8:55" }, "parameters": { "id": 21257, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21256, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21268, "src": "1796:21:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21255, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1796:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "1795:23:55" }, "returnParameters": { "id": 21261, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21260, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21268, "src": "1849:7:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21259, "name": "address", "nodeType": "ElementaryTypeName", "src": "1849:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1848:9:55" }, "scope": 21514, "src": "1777:143:55", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 21337, "nodeType": "Block", "src": "2283:810:55", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 21285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21282, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "2329:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 21283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2329:20:55", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 21284, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2352:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2329:24:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4e414d45", "id": 21286, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2355:18:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" }, "value": "ERR_INVALID_NAME" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" } ], "id": 21281, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2321:7:55", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21287, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2321:53:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21288, "nodeType": "ExpressionStatement", "src": "2321:53:55" }, { "assignments": [ 21290 ], "declarations": [ { "constant": false, "id": 21290, "mutability": "mutable", "name": "currentAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21337, "src": "2429:22:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21289, "name": "address", "nodeType": "ElementaryTypeName", "src": "2429:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 21295, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21291, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "2454:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21293, "indexExpression": { "argumentTypes": null, "id": 21292, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "2460:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2454:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21294, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "contractAddress", "nodeType": "MemberAccess", "referencedDeclaration": 21226, "src": "2454:36:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "2429:61:55" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 21296, "name": "_contractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21273, "src": "2505:16:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 21297, "name": "currentAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21290, "src": "2525:14:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2505:34:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 21300, "nodeType": "IfStatement", "src": "2501:60:55", "trueBody": { "expression": null, "functionReturnParameters": 21280, "id": 21299, "nodeType": "Return", "src": "2554:7:55" } }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 21301, "name": "currentAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21290, "src": "2577:14:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2603:1:55", "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": 21303, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2595:7:55", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21302, "name": "address", "nodeType": "ElementaryTypeName", "src": "2595:7:55", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2595:10:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2577:28:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 21324, "nodeType": "IfStatement", "src": "2573:288:55", "trueBody": { "id": 21323, "nodeType": "Block", "src": "2607:254:55", "statements": [ { "expression": { "argumentTypes": null, "id": 21313, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21307, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "2674:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21309, "indexExpression": { "argumentTypes": null, "id": 21308, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "2680:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2674:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21310, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "nameIndex", "nodeType": "MemberAccess", "referencedDeclaration": 21228, "src": "2674:30:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21311, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "2707:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2707:20:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2674:53:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21314, "nodeType": "ExpressionStatement", "src": "2674:53:55" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21319, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "2834:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 21318, "name": "bytes32ToString", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21485, "src": "2818:15:55", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_string_memory_ptr_$", "typeString": "function (bytes32) pure returns (string memory)" } }, "id": 21320, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2818:30:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "expression": { "argumentTypes": null, "id": 21315, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "2799:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21317, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2799:18:55", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$__$", "typeString": "function (string storage ref)" } }, "id": 21321, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2799:50:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21322, "nodeType": "ExpressionStatement", "src": "2799:50:55" } ] } }, { "expression": { "argumentTypes": null, "id": 21330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21325, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "2920:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21327, "indexExpression": { "argumentTypes": null, "id": 21326, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "2926:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2920:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21328, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "contractAddress", "nodeType": "MemberAccess", "referencedDeclaration": 21226, "src": "2920:36:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21329, "name": "_contractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21273, "src": "2959:16:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2920:55:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 21331, "nodeType": "ExpressionStatement", "src": "2920:55:55" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21333, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "3053:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 21334, "name": "_contractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21273, "src": "3068:16:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 21332, "name": "AddressUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21243, "src": "3039:13:55", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, "id": 21335, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3039:46:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21336, "nodeType": "EmitStatement", "src": "3034:51:55" } ] }, "documentation": { "id": 21269, "nodeType": "StructuredDocumentation", "src": "1928:195:55", "text": " @dev registers a new address for the contract name in the registry\n @param _contractName contract name\n @param _contractAddress contract address" }, "functionSelector": "662de379", "id": 21338, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21276, "modifierName": { "argumentTypes": null, "id": 21275, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21754, "src": "2228:9:55", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2228:9:55" }, { "arguments": [ { "argumentTypes": null, "id": 21278, "name": "_contractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21273, "src": "2260:16:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 21279, "modifierName": { "argumentTypes": null, "id": 21277, "name": "validAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22618, "src": "2247:12:55", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "2247:30:55" } ], "name": "registerAddress", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21274, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21271, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21338, "src": "2154:21:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21270, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2154:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21273, "mutability": "mutable", "name": "_contractAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21338, "src": "2177:24:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21272, "name": "address", "nodeType": "ElementaryTypeName", "src": "2177:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "2153:49:55" }, "returnParameters": { "id": 21280, "nodeType": "ParameterList", "parameters": [], "src": "2283:0:55" }, "scope": 21514, "src": "2129:964:55", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21443, "nodeType": "Block", "src": "3307:1327:55", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 21350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21347, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "3353:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 21348, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3353:20:55", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 21349, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3376:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3353:24:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4e414d45", "id": 21351, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3379:18:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" }, "value": "ERR_INVALID_NAME" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" } ], "id": 21346, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3345:7:55", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21352, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3345:53:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21353, "nodeType": "ExpressionStatement", "src": "3345:53:55" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21355, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "3417:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21357, "indexExpression": { "argumentTypes": null, "id": 21356, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "3423:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3417:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21358, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "contractAddress", "nodeType": "MemberAccess", "referencedDeclaration": 21226, "src": "3417:36:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21361, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3465:1:55", "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": 21360, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3457:7:55", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21359, "name": "address", "nodeType": "ElementaryTypeName", "src": "3457:7:55", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3457:10:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "3417:50:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4e414d45", "id": 21364, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3469:18:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" }, "value": "ERR_INVALID_NAME" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" } ], "id": 21354, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3409:7:55", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21365, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3409:79:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21366, "nodeType": "ExpressionStatement", "src": "3409:79:55" }, { "expression": { "argumentTypes": null, "id": 21375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21367, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "3550:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21369, "indexExpression": { "argumentTypes": null, "id": 21368, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "3556:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3550:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21370, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "contractAddress", "nodeType": "MemberAccess", "referencedDeclaration": 21226, "src": "3550:36:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21373, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3597:1:55", "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": 21372, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3589:7:55", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21371, "name": "address", "nodeType": "ElementaryTypeName", "src": "3589:7:55", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21374, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3589:10:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "3550:49:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 21376, "nodeType": "ExpressionStatement", "src": "3550:49:55" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 21380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21377, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "3862:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3862:20:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 21379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3885:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3862:24:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 21422, "nodeType": "IfStatement", "src": "3858:488:55", "trueBody": { "id": 21421, "nodeType": "Block", "src": "3888:458:55", "statements": [ { "assignments": [ 21382 ], "declarations": [ { "constant": false, "id": 21382, "mutability": "mutable", "name": "lastContractNameString", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21421, "src": "3903:36:55", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 21381, "name": "string", "nodeType": "ElementaryTypeName", "src": "3903:6:55", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "id": 21389, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21383, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "3942:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21388, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 21387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21384, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "3956:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3956:20:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 21386, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3979:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3956:24:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3942:39:55", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "3903:78:55" }, { "assignments": [ 21391 ], "declarations": [ { "constant": false, "id": 21391, "mutability": "mutable", "name": "unregisterIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21421, "src": "3996:23:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21390, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3996:7:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 21396, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21392, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "4022:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21394, "indexExpression": { "argumentTypes": null, "id": 21393, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "4028:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4022:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21395, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "nameIndex", "nodeType": "MemberAccess", "referencedDeclaration": 21228, "src": "4022:30:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "3996:56:55" }, { "expression": { "argumentTypes": null, "id": 21401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21397, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "4069:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21399, "indexExpression": { "argumentTypes": null, "id": 21398, "name": "unregisterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21391, "src": "4083:15:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4069:30:55", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21400, "name": "lastContractNameString", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21382, "src": "4102:22:55", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "4069:55:55", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 21402, "nodeType": "ExpressionStatement", "src": "4069:55:55" }, { "assignments": [ 21404 ], "declarations": [ { "constant": false, "id": 21404, "mutability": "mutable", "name": "lastContractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21421, "src": "4139:24:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21403, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4139:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 21408, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21406, "name": "lastContractNameString", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21382, "src": "4182:22:55", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "id": 21405, "name": "stringToBytes32", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21500, "src": "4166:15:55", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (string memory) pure returns (bytes32)" } }, "id": 21407, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4166:39:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "4139:66:55" }, { "assignments": [ 21410 ], "declarations": [ { "constant": false, "id": 21410, "mutability": "mutable", "name": "registryItem", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21421, "src": "4220:33:55", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr", "typeString": "struct ContractRegistry.RegistryItem" }, "typeName": { "contractScope": null, "id": 21409, "name": "RegistryItem", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21229, "src": "4220:12:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr", "typeString": "struct ContractRegistry.RegistryItem" } }, "value": null, "visibility": "internal" } ], "id": 21414, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21411, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "4256:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21413, "indexExpression": { "argumentTypes": null, "id": 21412, "name": "lastContractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21404, "src": "4262:16:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4256:23:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "4220:59:55" }, { "expression": { "argumentTypes": null, "id": 21419, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21415, "name": "registryItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21410, "src": "4294:12:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr", "typeString": "struct ContractRegistry.RegistryItem storage pointer" } }, "id": 21417, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "nameIndex", "nodeType": "MemberAccess", "referencedDeclaration": 21228, "src": "4294:22:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21418, "name": "unregisterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21391, "src": "4319:15:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4294:40:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21420, "nodeType": "ExpressionStatement", "src": "4294:40:55" } ] } }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 21423, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "4413:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "pop", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4413:17:55", "typeDescriptions": { "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 21426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4413:19:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21427, "nodeType": "ExpressionStatement", "src": "4413:19:55" }, { "expression": { "argumentTypes": null, "id": 21433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21428, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "4488:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21430, "indexExpression": { "argumentTypes": null, "id": 21429, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "4494:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4488:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21431, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "nameIndex", "nodeType": "MemberAccess", "referencedDeclaration": 21228, "src": "4488:30:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 21432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4521:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4488:34:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21434, "nodeType": "ExpressionStatement", "src": "4488:34:55" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21436, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "4600:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4623:1:55", "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": 21438, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4615:7:55", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21437, "name": "address", "nodeType": "ElementaryTypeName", "src": "4615:7:55", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21440, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4615:10:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 21435, "name": "AddressUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21243, "src": "4586:13:55", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, "id": 21441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4586:40:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21442, "nodeType": "EmitStatement", "src": "4581:45:55" } ] }, "documentation": { "id": 21339, "nodeType": "StructuredDocumentation", "src": "3101:133:55", "text": " @dev removes an existing contract address from the registry\n @param _contractName contract name" }, "functionSelector": "2bbd9530", "id": 21444, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21344, "modifierName": { "argumentTypes": null, "id": 21343, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21754, "src": "3297:9:55", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3297:9:55" } ], "name": "unregisterAddress", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21342, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21341, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21444, "src": "3267:21:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21340, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3267:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "3266:23:55" }, "returnParameters": { "id": 21345, "nodeType": "ParameterList", "parameters": [], "src": "3307:0:55" }, "scope": 21514, "src": "3240:1394:55", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21484, "nodeType": "Block", "src": "4950:188:55", "statements": [ { "assignments": [ 21453 ], "declarations": [ { "constant": false, "id": 21453, "mutability": "mutable", "name": "byteArray", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21484, "src": "4961:22:55", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 21452, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4961:5:55", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "id": 21458, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "3332", "id": 21456, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4996:2:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" }, "value": "32" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" } ], "id": 21455, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "4986:9:55", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)" }, "typeName": { "id": 21454, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4990:5:55", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } } }, "id": 21457, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4986:13:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4961:38:55" }, { "body": { "id": 21477, "nodeType": "Block", "src": "5043:51:55", "statements": [ { "expression": { "argumentTypes": null, "id": 21475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21469, "name": "byteArray", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21453, "src": "5058:9:55", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 21471, "indexExpression": { "argumentTypes": null, "id": 21470, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21460, "src": "5068:1:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5058:12:55", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21472, "name": "_bytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21447, "src": "5073:6:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 21474, "indexExpression": { "argumentTypes": null, "id": 21473, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21460, "src": "5080:1:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5073:9:55", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "src": "5058:24:55", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "id": 21476, "nodeType": "ExpressionStatement", "src": "5058:24:55" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 21465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 21463, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21460, "src": "5030:1:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "hexValue": "3332", "id": 21464, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5034:2:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" }, "value": "32" }, "src": "5030:6:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 21478, "initializationExpression": { "assignments": [ 21460 ], "declarations": [ { "constant": false, "id": 21460, "mutability": "mutable", "name": "i", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21478, "src": "5015:9:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21459, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5015:7:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 21462, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 21461, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5027:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "5015:13:55" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 21467, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "5038:3:55", "subExpression": { "argumentTypes": null, "id": 21466, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21460, "src": "5038:1:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21468, "nodeType": "ExpressionStatement", "src": "5038:3:55" }, "nodeType": "ForStatement", "src": "5010:84:55" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21481, "name": "byteArray", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21453, "src": "5120:9:55", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 21480, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5113:6:55", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { "id": 21479, "name": "string", "nodeType": "ElementaryTypeName", "src": "5113:6:55", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21482, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5113:17:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 21451, "id": 21483, "nodeType": "Return", "src": "5106:24:55" } ] }, "documentation": { "id": 21445, "nodeType": "StructuredDocumentation", "src": "4642:224:55", "text": " @dev utility, converts bytes32 to a string\n note that the bytes32 argument is assumed to be UTF8 encoded ASCII string\n @return string representation of the given bytes32 argument" }, "id": 21485, "implemented": true, "kind": "function", "modifiers": [], "name": "bytes32ToString", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21448, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21447, "mutability": "mutable", "name": "_bytes", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21485, "src": "4897:14:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21446, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4897:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "4896:16:55" }, "returnParameters": { "id": 21451, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21450, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21485, "src": "4935:13:55", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 21449, "name": "string", "nodeType": "ElementaryTypeName", "src": "4935:6:55", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "4934:15:55" }, "scope": 21514, "src": "4872:266:55", "stateMutability": "pure", "virtual": false, "visibility": "private" }, { "body": { "id": 21499, "nodeType": "Block", "src": "5453:134:55", "statements": [ { "assignments": [ 21494 ], "declarations": [ { "constant": false, "id": 21494, "mutability": "mutable", "name": "result", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21499, "src": "5464:14:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21493, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5464:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 21495, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "5464:14:55" }, { "AST": { "nodeType": "YulBlock", "src": "5498:58:55", "statements": [ { "nodeType": "YulAssignment", "src": "5513:32:55", "value": { "arguments": [ { "arguments": [ { "name": "_string", "nodeType": "YulIdentifier", "src": "5533:7:55" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5541:2:55", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "5529:3:55" }, "nodeType": "YulFunctionCall", "src": "5529:15:55" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "5523:5:55" }, "nodeType": "YulFunctionCall", "src": "5523:22:55" }, "variableNames": [ { "name": "result", "nodeType": "YulIdentifier", "src": "5513:6:55" } ] } ] }, "evmVersion": "istanbul", "externalReferences": [ { "declaration": 21488, "isOffset": false, "isSlot": false, "src": "5533:7:55", "valueSize": 1 }, { "declaration": 21494, "isOffset": false, "isSlot": false, "src": "5513:6:55", "valueSize": 1 } ], "id": 21496, "nodeType": "InlineAssembly", "src": "5489:67:55" }, { "expression": { "argumentTypes": null, "id": 21497, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21494, "src": "5573:6:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "functionReturnParameters": 21492, "id": 21498, "nodeType": "Return", "src": "5566:13:55" } ] }, "documentation": { "id": 21486, "nodeType": "StructuredDocumentation", "src": "5146:222:55", "text": " @dev utility, converts string to bytes32\n note that the bytes32 argument is assumed to be UTF8 encoded ASCII string\n @return string representation of the given bytes32 argument" }, "id": 21500, "implemented": true, "kind": "function", "modifiers": [], "name": "stringToBytes32", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21489, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21488, "mutability": "mutable", "name": "_string", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21500, "src": "5399:21:55", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 21487, "name": "string", "nodeType": "ElementaryTypeName", "src": "5399:6:55", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "5398:23:55" }, "returnParameters": { "id": 21492, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21491, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21500, "src": "5444:7:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21490, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5444:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "5443:9:55" }, "scope": 21514, "src": "5374:213:55", "stateMutability": "pure", "virtual": false, "visibility": "private" }, { "body": { "id": 21512, "nodeType": "Block", "src": "5734:50:55", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21509, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21503, "src": "5762:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 21508, "name": "addressOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21268, "src": "5752:9:55", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) view returns (address)" } }, "id": 21510, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5752:24:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 21507, "id": 21511, "nodeType": "Return", "src": "5745:31:55" } ] }, "documentation": { "id": 21501, "nodeType": "StructuredDocumentation", "src": "5595:60:55", "text": " @dev deprecated, backward compatibility" }, "functionSelector": "21f8a721", "id": 21513, "implemented": true, "kind": "function", "modifiers": [], "name": "getAddress", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21504, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21503, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21513, "src": "5681:21:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21502, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5681:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "5680:23:55" }, "returnParameters": { "id": 21507, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21506, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21513, "src": "5725:7:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21505, "name": "address", "nodeType": "ElementaryTypeName", "src": "5725:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "5724:9:55" }, "scope": 21514, "src": "5661:123:55", "stateMutability": "view", "virtual": false, "visibility": "public" } ], "scope": 21515, "src": "633:5154:55" } ], "src": "52:5737:55" }, "legacyAST": { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistry.sol", "exportedSymbols": { "ContractRegistry": [ 21514 ] }, "id": 21515, "license": "SEE LICENSE IN LICENSE", "nodeType": "SourceUnit", "nodes": [ { "id": 21214, "literals": [ "solidity", "0.6", ".12" ], "nodeType": "PragmaDirective", "src": "52:23:55" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol", "file": "./Owned.sol", "id": 21215, "nodeType": "ImportDirective", "scope": 21515, "sourceUnit": 21819, "src": "77:21:55", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol", "file": "./Utils.sol", "id": 21216, "nodeType": "ImportDirective", "scope": 21515, "sourceUnit": 22662, "src": "100:21:55", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol", "file": "./interfaces/IContractRegistry.sol", "id": 21217, "nodeType": "ImportDirective", "scope": 21515, "sourceUnit": 22832, "src": "123:44:55", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 21219, "name": "IContractRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22831, "src": "662:17:55", "typeDescriptions": { "typeIdentifier": "t_contract$_IContractRegistry_$22831", "typeString": "contract IContractRegistry" } }, "id": 21220, "nodeType": "InheritanceSpecifier", "src": "662:17:55" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21221, "name": "Owned", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21818, "src": "681:5:55", "typeDescriptions": { "typeIdentifier": "t_contract$_Owned_$21818", "typeString": "contract Owned" } }, "id": 21222, "nodeType": "InheritanceSpecifier", "src": "681:5:55" }, { "arguments": null, "baseName": { "contractScope": null, "id": 21223, "name": "Utils", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 22661, "src": "688:5:55", "typeDescriptions": { "typeIdentifier": "t_contract$_Utils_$22661", "typeString": "contract Utils" } }, "id": 21224, "nodeType": "InheritanceSpecifier", "src": "688:5:55" } ], "contractDependencies": [ 21818, 22661, 22831, 22847 ], "contractKind": "contract", "documentation": { "id": 21218, "nodeType": "StructuredDocumentation", "src": "171:460:55", "text": " @dev Contract Registry\n The contract registry keeps contract addresses by name.\n The owner can update contract addresses so that a contract name always points to the latest version\n of the given contract.\n Other contracts can query the registry to get updated addresses instead of depending on specific\n addresses.\n Note that contract names are limited to 32 bytes UTF8 encoded ASCII strings to optimize gas costs" }, "fullyImplemented": true, "id": 21514, "linearizedBaseContracts": [ 21514, 22661, 21818, 22847, 22831 ], "name": "ContractRegistry", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "ContractRegistry.RegistryItem", "id": 21229, "members": [ { "constant": false, "id": 21226, "mutability": "mutable", "name": "contractAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21229, "src": "732:23:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21225, "name": "address", "nodeType": "ElementaryTypeName", "src": "732:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21228, "mutability": "mutable", "name": "nameIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21229, "src": "789:17:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21227, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "789:7:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "name": "RegistryItem", "nodeType": "StructDefinition", "scope": 21514, "src": "701:173:55", "visibility": "public" }, { "constant": false, "id": 21233, "mutability": "mutable", "name": "items", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21514, "src": "882:47:55", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem)" }, "typeName": { "id": 21232, "keyType": { "id": 21230, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "891:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "882:33:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem)" }, "valueType": { "contractScope": null, "id": 21231, "name": "RegistryItem", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21229, "src": "902:12:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr", "typeString": "struct ContractRegistry.RegistryItem" } } }, "value": null, "visibility": "private" }, { "constant": false, "functionSelector": "3ca6bb92", "id": 21236, "mutability": "mutable", "name": "contractNames", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21514, "src": "971:29:55", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string[]" }, "typeName": { "baseType": { "id": 21234, "name": "string", "nodeType": "ElementaryTypeName", "src": "971:6:55", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "id": 21235, "length": null, "nodeType": "ArrayTypeName", "src": "971:8:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", "typeString": "string[]" } }, "value": null, "visibility": "public" }, { "anonymous": false, "documentation": { "id": 21237, "nodeType": "StructuredDocumentation", "src": "1071:203:55", "text": " @dev triggered when an address pointed to by a contract name is modified\n @param _contractName contract name\n @param _contractAddress new contract address" }, "id": 21243, "name": "AddressUpdate", "nodeType": "EventDefinition", "parameters": { "id": 21242, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21239, "indexed": true, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21243, "src": "1300:29:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21238, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1300:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21241, "indexed": false, "mutability": "mutable", "name": "_contractAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21243, "src": "1331:24:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21240, "name": "address", "nodeType": "ElementaryTypeName", "src": "1331:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1299:57:55" }, "src": "1280:77:55" }, { "body": { "id": 21252, "nodeType": "Block", "src": "1533:46:55", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21249, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "1551:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1551:20:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "functionReturnParameters": 21248, "id": 21251, "nodeType": "Return", "src": "1544:27:55" } ] }, "documentation": { "id": 21244, "nodeType": "StructuredDocumentation", "src": "1365:111:55", "text": " @dev returns the number of items in the registry\n @return number of items" }, "functionSelector": "6bfb0d01", "id": 21253, "implemented": true, "kind": "function", "modifiers": [], "name": "itemCount", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21245, "nodeType": "ParameterList", "parameters": [], "src": "1500:2:55" }, "returnParameters": { "id": 21248, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21247, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21253, "src": "1524:7:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21246, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1524:7:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1523:9:55" }, "scope": 21514, "src": "1482:97:55", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 22830 ], "body": { "id": 21267, "nodeType": "Block", "src": "1858:62:55", "statements": [ { "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21262, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "1876:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21264, "indexExpression": { "argumentTypes": null, "id": 21263, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21256, "src": "1882:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "1876:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21265, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "contractAddress", "nodeType": "MemberAccess", "referencedDeclaration": 21226, "src": "1876:36:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 21261, "id": 21266, "nodeType": "Return", "src": "1869:43:55" } ] }, "documentation": { "id": 21254, "nodeType": "StructuredDocumentation", "src": "1587:184:55", "text": " @dev returns the address associated with the given contract name\n @param _contractName contract name\n @return contract address" }, "functionSelector": "bb34534c", "id": 21268, "implemented": true, "kind": "function", "modifiers": [], "name": "addressOf", "nodeType": "FunctionDefinition", "overrides": { "id": 21258, "nodeType": "OverrideSpecifier", "overrides": [], "src": "1831:8:55" }, "parameters": { "id": 21257, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21256, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21268, "src": "1796:21:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21255, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1796:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "1795:23:55" }, "returnParameters": { "id": 21261, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21260, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21268, "src": "1849:7:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21259, "name": "address", "nodeType": "ElementaryTypeName", "src": "1849:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1848:9:55" }, "scope": 21514, "src": "1777:143:55", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 21337, "nodeType": "Block", "src": "2283:810:55", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 21285, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21282, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "2329:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 21283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2329:20:55", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 21284, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2352:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2329:24:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4e414d45", "id": 21286, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2355:18:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" }, "value": "ERR_INVALID_NAME" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" } ], "id": 21281, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2321:7:55", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21287, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2321:53:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21288, "nodeType": "ExpressionStatement", "src": "2321:53:55" }, { "assignments": [ 21290 ], "declarations": [ { "constant": false, "id": 21290, "mutability": "mutable", "name": "currentAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21337, "src": "2429:22:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21289, "name": "address", "nodeType": "ElementaryTypeName", "src": "2429:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 21295, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21291, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "2454:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21293, "indexExpression": { "argumentTypes": null, "id": 21292, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "2460:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2454:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21294, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "contractAddress", "nodeType": "MemberAccess", "referencedDeclaration": 21226, "src": "2454:36:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "2429:61:55" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 21296, "name": "_contractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21273, "src": "2505:16:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 21297, "name": "currentAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21290, "src": "2525:14:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2505:34:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 21300, "nodeType": "IfStatement", "src": "2501:60:55", "trueBody": { "expression": null, "functionReturnParameters": 21280, "id": 21299, "nodeType": "Return", "src": "2554:7:55" } }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 21301, "name": "currentAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21290, "src": "2577:14:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21304, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2603:1:55", "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": 21303, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2595:7:55", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21302, "name": "address", "nodeType": "ElementaryTypeName", "src": "2595:7:55", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2595:10:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "2577:28:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 21324, "nodeType": "IfStatement", "src": "2573:288:55", "trueBody": { "id": 21323, "nodeType": "Block", "src": "2607:254:55", "statements": [ { "expression": { "argumentTypes": null, "id": 21313, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21307, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "2674:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21309, "indexExpression": { "argumentTypes": null, "id": 21308, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "2680:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2674:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21310, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "nameIndex", "nodeType": "MemberAccess", "referencedDeclaration": 21228, "src": "2674:30:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21311, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "2707:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2707:20:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2674:53:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21314, "nodeType": "ExpressionStatement", "src": "2674:53:55" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21319, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "2834:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 21318, "name": "bytes32ToString", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21485, "src": "2818:15:55", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_string_memory_ptr_$", "typeString": "function (bytes32) pure returns (string memory)" } }, "id": 21320, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2818:30:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "expression": { "argumentTypes": null, "id": 21315, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "2799:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21317, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2799:18:55", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_string_storage_$returns$__$", "typeString": "function (string storage ref)" } }, "id": 21321, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2799:50:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21322, "nodeType": "ExpressionStatement", "src": "2799:50:55" } ] } }, { "expression": { "argumentTypes": null, "id": 21330, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21325, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "2920:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21327, "indexExpression": { "argumentTypes": null, "id": 21326, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "2926:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2920:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21328, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "contractAddress", "nodeType": "MemberAccess", "referencedDeclaration": 21226, "src": "2920:36:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21329, "name": "_contractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21273, "src": "2959:16:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2920:55:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 21331, "nodeType": "ExpressionStatement", "src": "2920:55:55" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21333, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21271, "src": "3053:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 21334, "name": "_contractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21273, "src": "3068:16:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 21332, "name": "AddressUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21243, "src": "3039:13:55", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, "id": 21335, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3039:46:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21336, "nodeType": "EmitStatement", "src": "3034:51:55" } ] }, "documentation": { "id": 21269, "nodeType": "StructuredDocumentation", "src": "1928:195:55", "text": " @dev registers a new address for the contract name in the registry\n @param _contractName contract name\n @param _contractAddress contract address" }, "functionSelector": "662de379", "id": 21338, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21276, "modifierName": { "argumentTypes": null, "id": 21275, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21754, "src": "2228:9:55", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2228:9:55" }, { "arguments": [ { "argumentTypes": null, "id": 21278, "name": "_contractAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21273, "src": "2260:16:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 21279, "modifierName": { "argumentTypes": null, "id": 21277, "name": "validAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22618, "src": "2247:12:55", "typeDescriptions": { "typeIdentifier": "t_modifier$_t_address_$", "typeString": "modifier (address)" } }, "nodeType": "ModifierInvocation", "src": "2247:30:55" } ], "name": "registerAddress", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21274, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21271, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21338, "src": "2154:21:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21270, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2154:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 21273, "mutability": "mutable", "name": "_contractAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21338, "src": "2177:24:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21272, "name": "address", "nodeType": "ElementaryTypeName", "src": "2177:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "2153:49:55" }, "returnParameters": { "id": 21280, "nodeType": "ParameterList", "parameters": [], "src": "2283:0:55" }, "scope": 21514, "src": "2129:964:55", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21443, "nodeType": "Block", "src": "3307:1327:55", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 21350, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21347, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "3353:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 21348, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3353:20:55", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 21349, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3376:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3353:24:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4e414d45", "id": 21351, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3379:18:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" }, "value": "ERR_INVALID_NAME" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" } ], "id": 21346, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3345:7:55", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21352, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3345:53:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21353, "nodeType": "ExpressionStatement", "src": "3345:53:55" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 21363, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21355, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "3417:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21357, "indexExpression": { "argumentTypes": null, "id": 21356, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "3423:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3417:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21358, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "contractAddress", "nodeType": "MemberAccess", "referencedDeclaration": 21226, "src": "3417:36:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21361, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3465:1:55", "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": 21360, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3457:7:55", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21359, "name": "address", "nodeType": "ElementaryTypeName", "src": "3457:7:55", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21362, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3457:10:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "3417:50:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "4552525f494e56414c49445f4e414d45", "id": 21364, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3469:18:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" }, "value": "ERR_INVALID_NAME" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_8c31b897cf1b4c41d9a3a2c9019700f5d8d0c36c906997985403c8f4610f8246", "typeString": "literal_string \"ERR_INVALID_NAME\"" } ], "id": 21354, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3409:7:55", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 21365, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3409:79:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21366, "nodeType": "ExpressionStatement", "src": "3409:79:55" }, { "expression": { "argumentTypes": null, "id": 21375, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21367, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "3550:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21369, "indexExpression": { "argumentTypes": null, "id": 21368, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "3556:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3550:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21370, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "contractAddress", "nodeType": "MemberAccess", "referencedDeclaration": 21226, "src": "3550:36:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21373, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3597:1:55", "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": 21372, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3589:7:55", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21371, "name": "address", "nodeType": "ElementaryTypeName", "src": "3589:7:55", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21374, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3589:10:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "3550:49:55", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 21376, "nodeType": "ExpressionStatement", "src": "3550:49:55" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 21380, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21377, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "3862:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3862:20:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 21379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3885:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3862:24:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 21422, "nodeType": "IfStatement", "src": "3858:488:55", "trueBody": { "id": 21421, "nodeType": "Block", "src": "3888:458:55", "statements": [ { "assignments": [ 21382 ], "declarations": [ { "constant": false, "id": 21382, "mutability": "mutable", "name": "lastContractNameString", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21421, "src": "3903:36:55", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 21381, "name": "string", "nodeType": "ElementaryTypeName", "src": "3903:6:55", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "id": 21389, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21383, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "3942:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21388, "indexExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 21387, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21384, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "3956:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3956:20:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 21386, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3979:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3956:24:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3942:39:55", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "3903:78:55" }, { "assignments": [ 21391 ], "declarations": [ { "constant": false, "id": 21391, "mutability": "mutable", "name": "unregisterIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21421, "src": "3996:23:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21390, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3996:7:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 21396, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21392, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "4022:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21394, "indexExpression": { "argumentTypes": null, "id": 21393, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "4028:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4022:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21395, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "nameIndex", "nodeType": "MemberAccess", "referencedDeclaration": 21228, "src": "4022:30:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "3996:56:55" }, { "expression": { "argumentTypes": null, "id": 21401, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21397, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "4069:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21399, "indexExpression": { "argumentTypes": null, "id": 21398, "name": "unregisterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21391, "src": "4083:15:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4069:30:55", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21400, "name": "lastContractNameString", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21382, "src": "4102:22:55", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "4069:55:55", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 21402, "nodeType": "ExpressionStatement", "src": "4069:55:55" }, { "assignments": [ 21404 ], "declarations": [ { "constant": false, "id": 21404, "mutability": "mutable", "name": "lastContractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21421, "src": "4139:24:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21403, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4139:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 21408, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21406, "name": "lastContractNameString", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21382, "src": "4182:22:55", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } ], "id": 21405, "name": "stringToBytes32", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21500, "src": "4166:15:55", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (string memory) pure returns (bytes32)" } }, "id": 21407, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4166:39:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "4139:66:55" }, { "assignments": [ 21410 ], "declarations": [ { "constant": false, "id": 21410, "mutability": "mutable", "name": "registryItem", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21421, "src": "4220:33:55", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr", "typeString": "struct ContractRegistry.RegistryItem" }, "typeName": { "contractScope": null, "id": 21409, "name": "RegistryItem", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 21229, "src": "4220:12:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr", "typeString": "struct ContractRegistry.RegistryItem" } }, "value": null, "visibility": "internal" } ], "id": 21414, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21411, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "4256:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21413, "indexExpression": { "argumentTypes": null, "id": 21412, "name": "lastContractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21404, "src": "4262:16:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4256:23:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "4220:59:55" }, { "expression": { "argumentTypes": null, "id": 21419, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 21415, "name": "registryItem", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21410, "src": "4294:12:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage_ptr", "typeString": "struct ContractRegistry.RegistryItem storage pointer" } }, "id": 21417, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "nameIndex", "nodeType": "MemberAccess", "referencedDeclaration": 21228, "src": "4294:22:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 21418, "name": "unregisterIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21391, "src": "4319:15:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4294:40:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21420, "nodeType": "ExpressionStatement", "src": "4294:40:55" } ] } }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 21423, "name": "contractNames", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21236, "src": "4413:13:55", "typeDescriptions": { "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", "typeString": "string storage ref[] storage ref" } }, "id": 21425, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "pop", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4413:17:55", "typeDescriptions": { "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 21426, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4413:19:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21427, "nodeType": "ExpressionStatement", "src": "4413:19:55" }, { "expression": { "argumentTypes": null, "id": 21433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21428, "name": "items", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21233, "src": "4488:5:55", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RegistryItem_$21229_storage_$", "typeString": "mapping(bytes32 => struct ContractRegistry.RegistryItem storage ref)" } }, "id": 21430, "indexExpression": { "argumentTypes": null, "id": 21429, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "4494:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4488:20:55", "typeDescriptions": { "typeIdentifier": "t_struct$_RegistryItem_$21229_storage", "typeString": "struct ContractRegistry.RegistryItem storage ref" } }, "id": 21431, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "nameIndex", "nodeType": "MemberAccess", "referencedDeclaration": 21228, "src": "4488:30:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 21432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4521:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4488:34:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21434, "nodeType": "ExpressionStatement", "src": "4488:34:55" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21436, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21341, "src": "4600:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 21439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4623:1:55", "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": 21438, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4615:7:55", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 21437, "name": "address", "nodeType": "ElementaryTypeName", "src": "4615:7:55", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21440, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4615:10:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 21435, "name": "AddressUpdate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21243, "src": "4586:13:55", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" } }, "id": 21441, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4586:40:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 21442, "nodeType": "EmitStatement", "src": "4581:45:55" } ] }, "documentation": { "id": 21339, "nodeType": "StructuredDocumentation", "src": "3101:133:55", "text": " @dev removes an existing contract address from the registry\n @param _contractName contract name" }, "functionSelector": "2bbd9530", "id": 21444, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 21344, "modifierName": { "argumentTypes": null, "id": 21343, "name": "ownerOnly", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21754, "src": "3297:9:55", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "3297:9:55" } ], "name": "unregisterAddress", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21342, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21341, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21444, "src": "3267:21:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21340, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3267:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "3266:23:55" }, "returnParameters": { "id": 21345, "nodeType": "ParameterList", "parameters": [], "src": "3307:0:55" }, "scope": 21514, "src": "3240:1394:55", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 21484, "nodeType": "Block", "src": "4950:188:55", "statements": [ { "assignments": [ 21453 ], "declarations": [ { "constant": false, "id": 21453, "mutability": "mutable", "name": "byteArray", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21484, "src": "4961:22:55", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 21452, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4961:5:55", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "id": 21458, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "3332", "id": 21456, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4996:2:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" }, "value": "32" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" } ], "id": 21455, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "4986:9:55", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", "typeString": "function (uint256) pure returns (bytes memory)" }, "typeName": { "id": 21454, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4990:5:55", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } } }, "id": 21457, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4986:13:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4961:38:55" }, { "body": { "id": 21477, "nodeType": "Block", "src": "5043:51:55", "statements": [ { "expression": { "argumentTypes": null, "id": 21475, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21469, "name": "byteArray", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21453, "src": "5058:9:55", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 21471, "indexExpression": { "argumentTypes": null, "id": 21470, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21460, "src": "5068:1:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5058:12:55", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 21472, "name": "_bytes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21447, "src": "5073:6:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 21474, "indexExpression": { "argumentTypes": null, "id": 21473, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21460, "src": "5080:1:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "5073:9:55", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "src": "5058:24:55", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" } }, "id": 21476, "nodeType": "ExpressionStatement", "src": "5058:24:55" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 21465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 21463, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21460, "src": "5030:1:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "hexValue": "3332", "id": 21464, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5034:2:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_32_by_1", "typeString": "int_const 32" }, "value": "32" }, "src": "5030:6:55", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 21478, "initializationExpression": { "assignments": [ 21460 ], "declarations": [ { "constant": false, "id": 21460, "mutability": "mutable", "name": "i", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21478, "src": "5015:9:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 21459, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5015:7:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 21462, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 21461, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5027:1:55", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "5015:13:55" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 21467, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "5038:3:55", "subExpression": { "argumentTypes": null, "id": 21466, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21460, "src": "5038:1:55", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 21468, "nodeType": "ExpressionStatement", "src": "5038:3:55" }, "nodeType": "ForStatement", "src": "5010:84:55" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21481, "name": "byteArray", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21453, "src": "5120:9:55", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 21480, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5113:6:55", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": { "id": 21479, "name": "string", "nodeType": "ElementaryTypeName", "src": "5113:6:55", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 21482, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5113:17:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "functionReturnParameters": 21451, "id": 21483, "nodeType": "Return", "src": "5106:24:55" } ] }, "documentation": { "id": 21445, "nodeType": "StructuredDocumentation", "src": "4642:224:55", "text": " @dev utility, converts bytes32 to a string\n note that the bytes32 argument is assumed to be UTF8 encoded ASCII string\n @return string representation of the given bytes32 argument" }, "id": 21485, "implemented": true, "kind": "function", "modifiers": [], "name": "bytes32ToString", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21448, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21447, "mutability": "mutable", "name": "_bytes", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21485, "src": "4897:14:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21446, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4897:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "4896:16:55" }, "returnParameters": { "id": 21451, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21450, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21485, "src": "4935:13:55", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 21449, "name": "string", "nodeType": "ElementaryTypeName", "src": "4935:6:55", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "4934:15:55" }, "scope": 21514, "src": "4872:266:55", "stateMutability": "pure", "virtual": false, "visibility": "private" }, { "body": { "id": 21499, "nodeType": "Block", "src": "5453:134:55", "statements": [ { "assignments": [ 21494 ], "declarations": [ { "constant": false, "id": 21494, "mutability": "mutable", "name": "result", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21499, "src": "5464:14:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21493, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5464:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 21495, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "5464:14:55" }, { "AST": { "nodeType": "YulBlock", "src": "5498:58:55", "statements": [ { "nodeType": "YulAssignment", "src": "5513:32:55", "value": { "arguments": [ { "arguments": [ { "name": "_string", "nodeType": "YulIdentifier", "src": "5533:7:55" }, { "kind": "number", "nodeType": "YulLiteral", "src": "5541:2:55", "type": "", "value": "32" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "5529:3:55" }, "nodeType": "YulFunctionCall", "src": "5529:15:55" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "5523:5:55" }, "nodeType": "YulFunctionCall", "src": "5523:22:55" }, "variableNames": [ { "name": "result", "nodeType": "YulIdentifier", "src": "5513:6:55" } ] } ] }, "evmVersion": "istanbul", "externalReferences": [ { "declaration": 21488, "isOffset": false, "isSlot": false, "src": "5533:7:55", "valueSize": 1 }, { "declaration": 21494, "isOffset": false, "isSlot": false, "src": "5513:6:55", "valueSize": 1 } ], "id": 21496, "nodeType": "InlineAssembly", "src": "5489:67:55" }, { "expression": { "argumentTypes": null, "id": 21497, "name": "result", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21494, "src": "5573:6:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "functionReturnParameters": 21492, "id": 21498, "nodeType": "Return", "src": "5566:13:55" } ] }, "documentation": { "id": 21486, "nodeType": "StructuredDocumentation", "src": "5146:222:55", "text": " @dev utility, converts string to bytes32\n note that the bytes32 argument is assumed to be UTF8 encoded ASCII string\n @return string representation of the given bytes32 argument" }, "id": 21500, "implemented": true, "kind": "function", "modifiers": [], "name": "stringToBytes32", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21489, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21488, "mutability": "mutable", "name": "_string", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21500, "src": "5399:21:55", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 21487, "name": "string", "nodeType": "ElementaryTypeName", "src": "5399:6:55", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "5398:23:55" }, "returnParameters": { "id": 21492, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21491, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21500, "src": "5444:7:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21490, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5444:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "5443:9:55" }, "scope": 21514, "src": "5374:213:55", "stateMutability": "pure", "virtual": false, "visibility": "private" }, { "body": { "id": 21512, "nodeType": "Block", "src": "5734:50:55", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 21509, "name": "_contractName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21503, "src": "5762:13:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 21508, "name": "addressOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 21268, "src": "5752:9:55", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) view returns (address)" } }, "id": 21510, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5752:24:55", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 21507, "id": 21511, "nodeType": "Return", "src": "5745:31:55" } ] }, "documentation": { "id": 21501, "nodeType": "StructuredDocumentation", "src": "5595:60:55", "text": " @dev deprecated, backward compatibility" }, "functionSelector": "21f8a721", "id": 21513, "implemented": true, "kind": "function", "modifiers": [], "name": "getAddress", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 21504, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21503, "mutability": "mutable", "name": "_contractName", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21513, "src": "5681:21:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 21502, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5681:7:55", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "src": "5680:23:55" }, "returnParameters": { "id": 21507, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 21506, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 21513, "src": "5725:7:55", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 21505, "name": "address", "nodeType": "ElementaryTypeName", "src": "5725:7:55", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "5724:9:55" }, "scope": 21514, "src": "5661:123:55", "stateMutability": "view", "virtual": false, "visibility": "public" } ], "scope": 21515, "src": "633:5154:55" } ], "src": "52:5737:55" }, "compiler": { "name": "solc", "version": "0.6.12+commit.27d51765.Emscripten.clang" }, "networks": { "42": { "events": { "0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "AddressUpdate", "type": "event" }, "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xb708175e3f6Cd850643aAF7B32212AFad50e2549", "transactionHash": "0x7bfc81b1fc45e33d018be4e91281ebc6bc7a4ac8a9b497afcc752f5630e2261c" }, "8995": { "events": { "0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "AddressUpdate", "type": "event" }, "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xb708175e3f6Cd850643aAF7B32212AFad50e2549", "transactionHash": "0x7bfc81b1fc45e33d018be4e91281ebc6bc7a4ac8a9b497afcc752f5630e2261c" }, "1604964387852": { "events": { "0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "AddressUpdate", "type": "event" }, "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xc02Bb59ae88eb23a23BadC0B9E5206Dcdc88C02f", "transactionHash": "0xdbff2a9f16cb2962b0c8c078daa2bcad8b67e4995d1fc9dd5f09648a0dabfd4b" }, "1604964469407": { "events": { "0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "AddressUpdate", "type": "event" }, "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0x4d0C2eA383F8dDbfAFea0FB92c3fE49BdE5d9725", "transactionHash": "0x86bd2cd8b9b3d3cc5c3766e9e7724d3b6adf84d8e0e48a85c22fb9e8181c9cd4" }, "1604965528035": { "events": { "0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "AddressUpdate", "type": "event" }, "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xba5D674F1bF01d7125a840220B0A86a5D7556705", "transactionHash": "0xdcd69e9e046456adeb407f3dedfb8bcfe1961703f4fa3c020a492ffb3c2647a9" }, "1604965645554": { "events": { "0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "AddressUpdate", "type": "event" }, "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0x2DE84749B53AA2237994AF994f22efaE23Bf59d9", "transactionHash": "0x4573c86c34cd809a0128f51e100e3691d1f28e0f8be050cca73536ed65b4fb79" }, "1604965679541": { "events": { "0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "AddressUpdate", "type": "event" }, "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xbb43041Ae115e5f0362E807Cb42C44a4ce61F5d3", "transactionHash": "0x1f993195a776168143b5cb56e533e3305f2b918487a279c77aa4514f9202c46d" }, "1604965719492": { "events": { "0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "AddressUpdate", "type": "event" }, "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xd52Fb83Cf4f03b8D844F29E1C6F795ca0AA58fEC", "transactionHash": "0xc317e282d0029b1d40b173ac4649df78ad4a520665808d23e490f3ee5f0d7c1c" }, "1604965760834": { "events": { "0xfc08d1253c81bcd5444fc7056ef1f5a5df4c9220b6fd70d7449267f1f0f29918": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "_contractName", "type": "bytes32" }, { "indexed": false, "internalType": "address", "name": "_contractAddress", "type": "address" } ], "name": "AddressUpdate", "type": "event" }, "0x343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a": { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "OwnerUpdate", "type": "event" } }, "links": {}, "address": "0xd316Dd5DA5F7C63D2173a392caB18973813daF13", "transactionHash": "0x20d414c1f386f14abd52d0e8d495cc65b4469b31bd7b10b0f64b0e0cda0b389b" } }, "schemaVersion": "3.2.3", "updatedAt": "2020-11-10T14:20:44.715Z", "networkType": "ethereum", "devdoc": { "details": "Contract Registry The contract registry keeps contract addresses by name. The owner can update contract addresses so that a contract name always points to the latest version of the given contract. Other contracts can query the registry to get updated addresses instead of depending on specific addresses. Note that contract names are limited to 32 bytes UTF8 encoded ASCII strings to optimize gas costs", "events": { "AddressUpdate(bytes32,address)": { "details": "triggered when an address pointed to by a contract name is modified", "params": { "_contractAddress": "new contract address", "_contractName": "contract name" } } }, "kind": "dev", "methods": { "acceptOwnership()": { "details": "used by a new owner to accept an ownership transfer" }, "addressOf(bytes32)": { "details": "returns the address associated with the given contract name", "params": { "_contractName": "contract name" }, "returns": { "_0": "contract address" } }, "getAddress(bytes32)": { "details": "deprecated, backward compatibility" }, "itemCount()": { "details": "returns the number of items in the registry", "returns": { "_0": "number of items" } }, "registerAddress(bytes32,address)": { "details": "registers a new address for the contract name in the registry", "params": { "_contractAddress": "contract address", "_contractName": "contract name" } }, "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" } }, "unregisterAddress(bytes32)": { "details": "removes an existing contract address from the registry", "params": { "_contractName": "contract name" } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }