diff --git a/external/goerli/KeepRegistry.json b/external/goerli/KeepRegistry.json new file mode 100644 index 00000000..48e1b435 --- /dev/null +++ b/external/goerli/KeepRegistry.json @@ -0,0 +1,11542 @@ +{ + "address": "0x8420404dC5e9a9f920280B2e0e08988cc7008459", + "contractName": "KeepRegistry", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "defaultPanicButton", + "type": "address" + } + ], + "name": "DefaultPanicButtonUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "governance", + "type": "address" + } + ], + "name": "GovernanceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "OperatorContractApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "OperatorContractDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "OperatorContractPanicButtonDisabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "panicButton", + "type": "address" + } + ], + "name": "OperatorContractPanicButtonUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "serviceContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "OperatorContractUpgraderUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "registryKeeper", + "type": "address" + } + ], + "name": "RegistryKeeperUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operatorContract", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "keeper", + "type": "address" + } + ], + "name": "ServiceContractUpgraderUpdated", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "defaultPanicButton", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "governance", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "operatorContractUpgraders", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "operatorContracts", + "outputs": [ + { + "internalType": "enum KeepRegistry.ContractStatus", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "panicButtons", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "registryKeeper", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "serviceContractUpgraders", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_governance", + "type": "address" + } + ], + "name": "setGovernance", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_registryKeeper", + "type": "address" + } + ], + "name": "setRegistryKeeper", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_panicButton", + "type": "address" + } + ], + "name": "setDefaultPanicButton", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + }, + { + "internalType": "address", + "name": "_panicButton", + "type": "address" + } + ], + "name": "setOperatorContractPanicButton", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "disableOperatorContractPanicButton", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_serviceContract", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorContractUpgrader", + "type": "address" + } + ], + "name": "setOperatorContractUpgrader", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + }, + { + "internalType": "address", + "name": "_serviceContractUpgrader", + "type": "address" + } + ], + "name": "setServiceContractUpgrader", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "approveOperatorContract", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "disableOperatorContract", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "isNewOperatorContract", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "isApprovedOperatorContract", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_serviceContract", + "type": "address" + } + ], + "name": "operatorContractUpgraderFor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "serviceContractUpgraderFor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"defaultPanicButton\",\"type\":\"address\"}],\"name\":\"DefaultPanicButtonUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"}],\"name\":\"GovernanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"OperatorContractApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"OperatorContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"OperatorContractPanicButtonDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"panicButton\",\"type\":\"address\"}],\"name\":\"OperatorContractPanicButtonUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"serviceContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"OperatorContractUpgraderUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"registryKeeper\",\"type\":\"address\"}],\"name\":\"RegistryKeeperUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"keeper\",\"type\":\"address\"}],\"name\":\"ServiceContractUpgraderUpdated\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"approveOperatorContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"defaultPanicButton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"disableOperatorContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"disableOperatorContractPanicButton\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"isApprovedOperatorContract\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"isNewOperatorContract\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_serviceContract\",\"type\":\"address\"}],\"name\":\"operatorContractUpgraderFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorContractUpgraders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorContracts\",\"outputs\":[{\"internalType\":\"enum KeepRegistry.ContractStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"panicButtons\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registryKeeper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"serviceContractUpgraderFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"serviceContractUpgraders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_panicButton\",\"type\":\"address\"}],\"name\":\"setDefaultPanicButton\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_panicButton\",\"type\":\"address\"}],\"name\":\"setOperatorContractPanicButton\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_serviceContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorContractUpgrader\",\"type\":\"address\"}],\"name\":\"setOperatorContractUpgrader\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registryKeeper\",\"type\":\"address\"}],\"name\":\"setRegistryKeeper\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_serviceContractUpgrader\",\"type\":\"address\"}],\"name\":\"setServiceContractUpgrader\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{},\"title\":\"KeepRegistry\"},\"userdoc\":{\"methods\":{},\"notice\":\"Governance owned registry of approved contracts and roles.\"}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/keep-core/keep-core/solidity-v1/contracts/KeepRegistry.sol\":\"KeepRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/keep-core/keep-core/solidity-v1/contracts/KeepRegistry.sol\":{\"keccak256\":\"0xbc0e44a838bae38c1d11db28b5bfcfdfd79394d423ce6fd85dcb90a6420e1f10\",\"urls\":[\"bzz-raw://74b140b3a4547cc742785c613e2927bc3592e71f0f42eff5112462a9985083cb\",\"dweb:/ipfs/QmQLsNVWAcgHhtoJAfiXjipYaksfLpcoaa45c2LvRh9hfg\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061207d806100e26000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80636557eccf116100ad578063ab033ea911610071578063ab033ea914610691578063d82437f4146106d5578063d858008a14610739578063db816b62146107bd578063ff111e3b146108015761012c565b80636557eccf1461047f578063716d6061146105035780637b4df9381461056757806384c07bd2146105eb57806384d57689146106355761012c565b80635a9671f5116100f45780635a9671f5146102cd5780635aa6e67514610329578063618dae2014610373578063637e9dbe146103b757806363dc5fcf146103fb5761012c565b806302db580b1461013157806309a6f73f146101755780632afb015e146101b95780633ae70f46146102035780633dbcab4514610267575b600080fd5b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610885565b005b6101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b2c565b005b6101c1610dfe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102656004803603604081101561021957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e24565b005b6102a96004803603602081101561027d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fff565b604051808260028111156102b957fe5b60ff16815260200191505060405180910390f35b61030f600480360360208110156102e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061101f565b604051808215151515815260200191505060405180910390f35b61033161108d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b56004803603602081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b2565b005b6103f9600480360360208110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123d565b005b61043d6004803603602081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611546565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c16004803603602081101561049557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105656004803603604081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611618565b005b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f3611826565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106776004803603602081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061184c565b604051808215151515815260200191505060405180910390f35b6106d3600480360360208110156106a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bb565b005b610737600480360360408110156106eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a44565b005b61077b6004803603602081101561074f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107ff600480360360208110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1d565b005b6108436004803603602081101561081757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fa8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b8061088f8161101f565b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f742061206e6577206f70657261746f7220636f6e7472616374000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610a2057fe5b0217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb5d7fbd1d67a09be2dd3ba169be0ebfb43f1d3fd31b12e9dc9e5bd98517bfafb82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b80610b368161184c565b610b8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b816000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50616e696320627574746f6e2064697361626c6564000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6002600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610d9057fe5b02179055507f61e8cab67fc6f073d7e3bbd8d936b519daf95f5655e8b22563c63eaba75f8fa384604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f067d7db72df8e5428d719a48ef14b072cdb3942706bfc6becc7198a316d73b788282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60066020528060005260406000206000915054906101000a900460ff1681565b600080600281111561102d57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561108557fe5b149050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06f6f3a56d213caa17abfd21597ab6f8660771e05f9d430505ce755a2fdbb551600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b806112478161184c565b61129c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f50616e696320627574746f6e20616c72656164792064697361626c656400000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f825c13d61db27b3c0dae8523f70310e87c2dfd99ea7023664547208322ff679c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6f5a686a46a4dd38461a6a5ce54c3b8dd7b989914b5a0748c8d6669c794778528282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001600281111561185b57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660028111156118b357fe5b149050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b81611a4e8161184c565b611aa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611fdc6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120246025913960400191505060405180910390fd5b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5f94d794a8a48b75e2ca89133a5b8748d14217648260c5247e57e3d314fd52a78383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe5ecd8c922f03a416959a48c633d1bfdd1615ea46923a0a3e5d65ec90a38e038600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fe44697361626c65642070616e696320627574746f6e2063616e6e6f7420626520757064617465644e6f7420616e20617070726f766564206f70657261746f7220636f6e747261637450616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373a265627a7a72315820f20bf3ebc7811d1f023543e6dd44e06785866f1c9dcf4bb8c9941c3d6c0be0ce64736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80636557eccf116100ad578063ab033ea911610071578063ab033ea914610691578063d82437f4146106d5578063d858008a14610739578063db816b62146107bd578063ff111e3b146108015761012c565b80636557eccf1461047f578063716d6061146105035780637b4df9381461056757806384c07bd2146105eb57806384d57689146106355761012c565b80635a9671f5116100f45780635a9671f5146102cd5780635aa6e67514610329578063618dae2014610373578063637e9dbe146103b757806363dc5fcf146103fb5761012c565b806302db580b1461013157806309a6f73f146101755780632afb015e146101b95780633ae70f46146102035780633dbcab4514610267575b600080fd5b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610885565b005b6101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b2c565b005b6101c1610dfe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102656004803603604081101561021957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e24565b005b6102a96004803603602081101561027d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fff565b604051808260028111156102b957fe5b60ff16815260200191505060405180910390f35b61030f600480360360208110156102e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061101f565b604051808215151515815260200191505060405180910390f35b61033161108d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b56004803603602081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b2565b005b6103f9600480360360208110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123d565b005b61043d6004803603602081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611546565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c16004803603602081101561049557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105656004803603604081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611618565b005b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f3611826565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106776004803603602081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061184c565b604051808215151515815260200191505060405180910390f35b6106d3600480360360208110156106a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bb565b005b610737600480360360408110156106eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a44565b005b61077b6004803603602081101561074f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107ff600480360360208110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1d565b005b6108436004803603602081101561081757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fa8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b8061088f8161101f565b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f742061206e6577206f70657261746f7220636f6e7472616374000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610a2057fe5b0217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb5d7fbd1d67a09be2dd3ba169be0ebfb43f1d3fd31b12e9dc9e5bd98517bfafb82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b80610b368161184c565b610b8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b816000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50616e696320627574746f6e2064697361626c6564000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6002600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610d9057fe5b02179055507f61e8cab67fc6f073d7e3bbd8d936b519daf95f5655e8b22563c63eaba75f8fa384604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f067d7db72df8e5428d719a48ef14b072cdb3942706bfc6becc7198a316d73b788282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60066020528060005260406000206000915054906101000a900460ff1681565b600080600281111561102d57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561108557fe5b149050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06f6f3a56d213caa17abfd21597ab6f8660771e05f9d430505ce755a2fdbb551600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b806112478161184c565b61129c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f50616e696320627574746f6e20616c72656164792064697361626c656400000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f825c13d61db27b3c0dae8523f70310e87c2dfd99ea7023664547208322ff679c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6f5a686a46a4dd38461a6a5ce54c3b8dd7b989914b5a0748c8d6669c794778528282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001600281111561185b57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660028111156118b357fe5b149050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b81611a4e8161184c565b611aa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611fdc6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120246025913960400191505060405180910390fd5b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5f94d794a8a48b75e2ca89133a5b8748d14217648260c5247e57e3d314fd52a78383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe5ecd8c922f03a416959a48c633d1bfdd1615ea46923a0a3e5d65ec90a38e038600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fe44697361626c65642070616e696320627574746f6e2063616e6e6f7420626520757064617465644e6f7420616e20617070726f766564206f70657261746f7220636f6e747261637450616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373a265627a7a72315820f20bf3ebc7811d1f023543e6dd44e06785866f1c9dcf4bb8c9941c3d6c0be0ce64736f6c63430005110032", + "sourceMap": "120:7949:12:-;;;4164:139;8:9:-1;5:2;;;30:1;27;20:12;5:2;4164:139:12;4208:10;4195;;:23;;;;;;;;;;;;;;;;;;4245:10;4228:14;;:27;;;;;;;;;;;;;;;;;;4286:10;4265:18;;:31;;;;;;;;;;;;;;;;;;120:7949;;;;;;", + "deployedSourceMap": "120:7949:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;120:7949:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6614:346;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6614:346:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;6966:305;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6966:305:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;1449:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6256:352;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6256:352:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2477:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2477:59:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7277:193;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7277:193:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;369:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4647:185;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4647:185:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;5462:427;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5462:427:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;7685:188;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7685:188:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7879;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7879:188:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5895:355;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5895:355:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1266:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1266:47:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;588:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7476:203;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7476:203:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4309:151;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4309:151:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;4838:618;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4838:618:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1792:60;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1792:60:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4466:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4466:175:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;2369:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2369:59:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6614:346;6715:16;3828:40;3850:17;3828:21;:40::i;:::-;3807:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:10;3401:28;;:14;;;;;;;;;;;:28;;;3393:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6812:23;6774:17;:35;6792:16;6774:35;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;;;;;;;6878:18;;;;;;;;;;;6845:12;:30;6858:16;6845:30;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;6911:42;6936:16;6911:42;;;;;;;;;;;;;;;;;;;;;;6614:346;;:::o;6966:305::-;7072:16;4036:45;4063:17;4036:26;:45::i;:::-;4015:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7114:16;3534:19;3556:12;:31;3569:17;3556:31;;;;;;;;;;;;;;;;;;;;;;;;;3534:53;;3628:1;3605:25;;:11;:25;;;;3597:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3689:10;3674:25;;:11;:25;;;3666:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7184:23;7146:17;:35;7164:16;7146:35;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;;;;;;;7222:42;7247:16;7222:42;;;;;;;;;;;;;;;;;;;;;;4150:1;;6966:305;;:::o;1449:33::-;;;;;;;;;;;;;:::o;6256:352::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6453:24;6407;:43;6432:17;6407:43;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;6492:109;6536:17;6567:24;6492:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6256:352;;:::o;2477:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;7277:193::-;7379:4;7445:18;7406:57;;;;;;;;:17;:35;7424:16;7406:35;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;;;;;;7399:64;;7277:193;;;:::o;369:25::-;;;;;;;;;;;;;:::o;4647:185::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4753:12;4732:18;;:33;;;;;;;;;;;;;;;;;;4780:45;4806:18;;;;;;;;;;;4780:45;;;;;;;;;;;;;;;;;;;;;;4647:185;:::o;5462:427::-;5580:17;4036:45;4063:17;4036:26;:45::i;:::-;4015:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5700:1;5657:45;;:12;:31;5670:17;5657:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;5636:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5810:1;5768:12;:31;5781:17;5768:31;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;5828:54;5864:17;5828:54;;;;;;;;;;;;;;;;;;;;;;5462:427;;:::o;7685:188::-;7793:7;7823:25;:43;7849:16;7823:43;;;;;;;;;;;;;;;;;;;;;;;;;7816:50;;7685:188;;;:::o;7879:::-;7987:7;8017:24;:43;8042:17;8017:43;;;;;;;;;;;;;;;;;;;;;;;;;8010:50;;7879:188;;;:::o;5895:355::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6093:25;6047;:43;6073:16;6047:43;;;;;;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;6133:110;6178:16;6208:25;6133:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5895:355;;:::o;1266:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;588:29::-;;;;;;;;;;;;;:::o;7476:203::-;7583:4;7649:23;7610:62;;;;;;;;:17;:35;7628:16;7610:35;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;;;;;;7603:69;;7476:203;;;:::o;4309:151::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4398:11;4385:10;;:24;;;;;;;;;;;;;;;;;;4424:29;4442:10;;;;;;;;;;;4424:29;;;;;;;;;;;;;;;;;;;;;;4309:151;:::o;4838:618::-;4980:17;4036:45;4063:17;4036:26;:45::i;:::-;4015:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5088:1;5045:45;;:12;:31;5058:17;5045:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;5024:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5210:1;5186:26;;:12;:26;;;;5165:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5320:12;5286;:31;5299:17;5286:31;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;5348:101;5396:17;5427:12;5348:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4838:618;;;:::o;1792:60::-;;;;;;;;;;;;;;;;;;;;;;:::o;4466:175::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4567:15;4550:14;;:32;;;;;;;;;;;;;;;;;;4597:37;4619:14;;;;;;;;;;;4597:37;;;;;;;;;;;;;;;;;;;;;;4466:175;:::o;2369:59::-;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.5.17;\n\n/// @title KeepRegistry\n/// @notice Governance owned registry of approved contracts and roles.\ncontract KeepRegistry {\n enum ContractStatus {New, Approved, Disabled}\n\n // Governance role is to enable recovery from key compromise by rekeying\n // other roles. Also, it can disable operator contract panic buttons\n // permanently.\n address public governance;\n\n // Registry Keeper maintains approved operator contracts. Each operator\n // contract must be approved before it can be authorized by a staker or\n // used by a service contract.\n address public registryKeeper;\n\n // Each operator contract has a Panic Button which can disable malicious\n // or malfunctioning contract that have been previously approved by the\n // Registry Keeper.\n //\n // New operator contract added to the registry has a default panic button\n // value assigned (defaultPanicButton). Panic button for each operator\n // contract can be later updated by Governance to individual value.\n //\n // It is possible to disable panic button for individual contract by\n // setting the panic button to zero address. In such case, operator contract\n // can not be disabled and is permanently approved in the registry.\n mapping(address => address) public panicButtons;\n\n // Default panic button for each new operator contract added to the\n // registry. Can be later updated for each contract.\n address public defaultPanicButton;\n\n // Each service contract has a Operator Contract Upgrader whose purpose\n // is to manage operator contracts for that specific service contract.\n // The Operator Contract Upgrader can add new operator contracts to the\n // service contract’s operator contract list, and deprecate old ones.\n mapping(address => address) public operatorContractUpgraders;\n\n // Operator contract may have a Service Contract Upgrader whose purpose is\n // to manage service contracts for that specific operator contract.\n // Service Contract Upgrader can add and remove service contracts\n // from the list of service contracts approved to work with the operator\n // contract. List of service contracts is maintained in the operator\n // contract and is optional - not every operator contract needs to have\n // a list of service contracts it wants to cooperate with.\n mapping(address => address) public serviceContractUpgraders;\n\n // The registry of operator contracts\n mapping(address => ContractStatus) public operatorContracts;\n\n event OperatorContractApproved(address operatorContract);\n event OperatorContractDisabled(address operatorContract);\n\n event GovernanceUpdated(address governance);\n event RegistryKeeperUpdated(address registryKeeper);\n event DefaultPanicButtonUpdated(address defaultPanicButton);\n event OperatorContractPanicButtonDisabled(address operatorContract);\n event OperatorContractPanicButtonUpdated(\n address operatorContract,\n address panicButton\n );\n event OperatorContractUpgraderUpdated(\n address serviceContract,\n address upgrader\n );\n event ServiceContractUpgraderUpdated(\n address operatorContract,\n address keeper\n );\n\n modifier onlyGovernance() {\n require(governance == msg.sender, \"Not authorized\");\n _;\n }\n\n modifier onlyRegistryKeeper() {\n require(registryKeeper == msg.sender, \"Not authorized\");\n _;\n }\n\n modifier onlyPanicButton(address _operatorContract) {\n address panicButton = panicButtons[_operatorContract];\n require(panicButton != address(0), \"Panic button disabled\");\n require(panicButton == msg.sender, \"Not authorized\");\n _;\n }\n\n modifier onlyForNewContract(address _operatorContract) {\n require(\n isNewOperatorContract(_operatorContract),\n \"Not a new operator contract\"\n );\n _;\n }\n\n modifier onlyForApprovedContract(address _operatorContract) {\n require(\n isApprovedOperatorContract(_operatorContract),\n \"Not an approved operator contract\"\n );\n _;\n }\n\n constructor() public {\n governance = msg.sender;\n registryKeeper = msg.sender;\n defaultPanicButton = msg.sender;\n }\n\n function setGovernance(address _governance) public onlyGovernance {\n governance = _governance;\n emit GovernanceUpdated(governance);\n }\n\n function setRegistryKeeper(address _registryKeeper) public onlyGovernance {\n registryKeeper = _registryKeeper;\n emit RegistryKeeperUpdated(registryKeeper);\n }\n\n function setDefaultPanicButton(address _panicButton) public onlyGovernance {\n defaultPanicButton = _panicButton;\n emit DefaultPanicButtonUpdated(defaultPanicButton);\n }\n\n function setOperatorContractPanicButton(\n address _operatorContract,\n address _panicButton\n ) public onlyForApprovedContract(_operatorContract) onlyGovernance {\n require(\n panicButtons[_operatorContract] != address(0),\n \"Disabled panic button cannot be updated\"\n );\n require(\n _panicButton != address(0),\n \"Panic button must be non-zero address\"\n );\n\n panicButtons[_operatorContract] = _panicButton;\n\n emit OperatorContractPanicButtonUpdated(\n _operatorContract,\n _panicButton\n );\n }\n\n function disableOperatorContractPanicButton(address _operatorContract)\n public\n onlyForApprovedContract(_operatorContract)\n onlyGovernance\n {\n require(\n panicButtons[_operatorContract] != address(0),\n \"Panic button already disabled\"\n );\n\n panicButtons[_operatorContract] = address(0);\n\n emit OperatorContractPanicButtonDisabled(_operatorContract);\n }\n\n function setOperatorContractUpgrader(\n address _serviceContract,\n address _operatorContractUpgrader\n ) public onlyGovernance {\n operatorContractUpgraders[_serviceContract] = _operatorContractUpgrader;\n emit OperatorContractUpgraderUpdated(\n _serviceContract,\n _operatorContractUpgrader\n );\n }\n\n function setServiceContractUpgrader(\n address _operatorContract,\n address _serviceContractUpgrader\n ) public onlyGovernance {\n serviceContractUpgraders[_operatorContract] = _serviceContractUpgrader;\n emit ServiceContractUpgraderUpdated(\n _operatorContract,\n _serviceContractUpgrader\n );\n }\n\n function approveOperatorContract(address operatorContract)\n public\n onlyForNewContract(operatorContract)\n onlyRegistryKeeper\n {\n operatorContracts[operatorContract] = ContractStatus.Approved;\n panicButtons[operatorContract] = defaultPanicButton;\n emit OperatorContractApproved(operatorContract);\n }\n\n function disableOperatorContract(address operatorContract)\n public\n onlyForApprovedContract(operatorContract)\n onlyPanicButton(operatorContract)\n {\n operatorContracts[operatorContract] = ContractStatus.Disabled;\n emit OperatorContractDisabled(operatorContract);\n }\n\n function isNewOperatorContract(address operatorContract)\n public\n view\n returns (bool)\n {\n return operatorContracts[operatorContract] == ContractStatus.New;\n }\n\n function isApprovedOperatorContract(address operatorContract)\n public\n view\n returns (bool)\n {\n return operatorContracts[operatorContract] == ContractStatus.Approved;\n }\n\n function operatorContractUpgraderFor(address _serviceContract)\n public\n view\n returns (address)\n {\n return operatorContractUpgraders[_serviceContract];\n }\n\n function serviceContractUpgraderFor(address _operatorContract)\n public\n view\n returns (address)\n {\n return serviceContractUpgraders[_operatorContract];\n }\n}\n", + "sourcePath": "/home/runner/work/keep-core/keep-core/solidity-v1/contracts/KeepRegistry.sol", + "ast": { + "absolutePath": "/home/runner/work/keep-core/keep-core/solidity-v1/contracts/KeepRegistry.sol", + "exportedSymbols": { + "KeepRegistry": [4642] + }, + "id": 4643, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4202, + "literals": ["solidity", "0.5", ".17"], + "nodeType": "PragmaDirective", + "src": "0:23:12" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title KeepRegistry\n @notice Governance owned registry of approved contracts and roles.", + "fullyImplemented": true, + "id": 4642, + "linearizedBaseContracts": [4642], + "name": "KeepRegistry", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "KeepRegistry.ContractStatus", + "id": 4206, + "members": [ + { + "id": 4203, + "name": "New", + "nodeType": "EnumValue", + "src": "169:3:12" + }, + { + "id": 4204, + "name": "Approved", + "nodeType": "EnumValue", + "src": "174:8:12" + }, + { + "id": 4205, + "name": "Disabled", + "nodeType": "EnumValue", + "src": "184:8:12" + } + ], + "name": "ContractStatus", + "nodeType": "EnumDefinition", + "src": "148:45:12" + }, + { + "constant": false, + "id": 4208, + "name": "governance", + "nodeType": "VariableDeclaration", + "scope": 4642, + "src": "369:25:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "369:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 4210, + "name": "registryKeeper", + "nodeType": "VariableDeclaration", + "scope": 4642, + "src": "588:29:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "588:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 4214, + "name": "panicButtons", + "nodeType": "VariableDeclaration", + "scope": 4642, + "src": "1266:47:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 4213, + "keyType": { + "id": 4211, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1274:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1266:27:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 4212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1285:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 4216, + "name": "defaultPanicButton", + "nodeType": "VariableDeclaration", + "scope": 4642, + "src": "1449:33:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4215, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1449:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 4220, + "name": "operatorContractUpgraders", + "nodeType": "VariableDeclaration", + "scope": 4642, + "src": "1792:60:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 4219, + "keyType": { + "id": 4217, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1800:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1792:27:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 4218, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1811:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 4224, + "name": "serviceContractUpgraders", + "nodeType": "VariableDeclaration", + "scope": 4642, + "src": "2369:59:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 4223, + "keyType": { + "id": 4221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2377:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2369:27:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 4222, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2388:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 4228, + "name": "operatorContracts", + "nodeType": "VariableDeclaration", + "scope": 4642, + "src": "2477:59:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$4206_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + }, + "typeName": { + "id": 4227, + "keyType": { + "id": 4225, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2485:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2477:34:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$4206_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + }, + "valueType": { + "contractScope": null, + "id": 4226, + "name": "ContractStatus", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4206, + "src": "2496:14:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 4232, + "name": "OperatorContractApproved", + "nodeType": "EventDefinition", + "parameters": { + "id": 4231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4230, + "indexed": false, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4232, + "src": "2574:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4229, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2574:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2573:26:12" + }, + "src": "2543:57:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 4236, + "name": "OperatorContractDisabled", + "nodeType": "EventDefinition", + "parameters": { + "id": 4235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4234, + "indexed": false, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4236, + "src": "2636:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4233, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2636:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2635:26:12" + }, + "src": "2605:57:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 4240, + "name": "GovernanceUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 4239, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4238, + "indexed": false, + "name": "governance", + "nodeType": "VariableDeclaration", + "scope": 4240, + "src": "2692:18:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4237, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2692:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2691:20:12" + }, + "src": "2668:44:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 4244, + "name": "RegistryKeeperUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 4243, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4242, + "indexed": false, + "name": "registryKeeper", + "nodeType": "VariableDeclaration", + "scope": 4244, + "src": "2745:22:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4241, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2745:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2744:24:12" + }, + "src": "2717:52:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 4248, + "name": "DefaultPanicButtonUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 4247, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4246, + "indexed": false, + "name": "defaultPanicButton", + "nodeType": "VariableDeclaration", + "scope": 4248, + "src": "2806:26:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4245, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2806:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2805:28:12" + }, + "src": "2774:60:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 4252, + "name": "OperatorContractPanicButtonDisabled", + "nodeType": "EventDefinition", + "parameters": { + "id": 4251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4250, + "indexed": false, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4252, + "src": "2881:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2881:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2880:26:12" + }, + "src": "2839:68:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 4258, + "name": "OperatorContractPanicButtonUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 4257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4254, + "indexed": false, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4258, + "src": "2962:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4253, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2962:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4256, + "indexed": false, + "name": "panicButton", + "nodeType": "VariableDeclaration", + "scope": 4258, + "src": "2996:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4255, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2996:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2952:69:12" + }, + "src": "2912:110:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 4264, + "name": "OperatorContractUpgraderUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 4263, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4260, + "indexed": false, + "name": "serviceContract", + "nodeType": "VariableDeclaration", + "scope": 4264, + "src": "3074:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4259, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3074:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4262, + "indexed": false, + "name": "upgrader", + "nodeType": "VariableDeclaration", + "scope": 4264, + "src": "3107:16:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3107:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3064:65:12" + }, + "src": "3027:103:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 4270, + "name": "ServiceContractUpgraderUpdated", + "nodeType": "EventDefinition", + "parameters": { + "id": 4269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4266, + "indexed": false, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4270, + "src": "3181:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4265, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3181:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4268, + "indexed": false, + "name": "keeper", + "nodeType": "VariableDeclaration", + "scope": 4270, + "src": "3215:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3215:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3171:64:12" + }, + "src": "3135:101:12" + }, + { + "body": { + "id": 4281, + "nodeType": "Block", + "src": "3268:79:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4273, + "name": "governance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4208, + "src": "3286:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4274, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "3300:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3300:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3286:24:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 4277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3312:16:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 4272, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "3278:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3278:51:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4279, + "nodeType": "ExpressionStatement", + "src": "3278:51:12" + }, + { + "id": 4280, + "nodeType": "PlaceholderStatement", + "src": "3339:1:12" + } + ] + }, + "documentation": null, + "id": 4282, + "name": "onlyGovernance", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 4271, + "nodeType": "ParameterList", + "parameters": [], + "src": "3265:2:12" + }, + "src": "3242:105:12", + "visibility": "internal" + }, + { + "body": { + "id": 4293, + "nodeType": "Block", + "src": "3383:83:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4285, + "name": "registryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4210, + "src": "3401:14:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4286, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "3419:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3419:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3401:28:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 4289, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3431:16:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 4284, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "3393:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3393:55:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4291, + "nodeType": "ExpressionStatement", + "src": "3393:55:12" + }, + { + "id": 4292, + "nodeType": "PlaceholderStatement", + "src": "3458:1:12" + } + ] + }, + "documentation": null, + "id": 4294, + "name": "onlyRegistryKeeper", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 4283, + "nodeType": "ParameterList", + "parameters": [], + "src": "3380:2:12" + }, + "src": "3353:113:12", + "visibility": "internal" + }, + { + "body": { + "id": 4322, + "nodeType": "Block", + "src": "3524:212:12", + "statements": [ + { + "assignments": [4299], + "declarations": [ + { + "constant": false, + "id": 4299, + "name": "panicButton", + "nodeType": "VariableDeclaration", + "scope": 4322, + "src": "3534:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4298, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3534:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4303, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4300, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4214, + "src": "3556:12:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 4302, + "indexExpression": { + "argumentTypes": null, + "id": 4301, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4296, + "src": "3569:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3556:31:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3534:53:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4305, + "name": "panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4299, + "src": "3605:11:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3628:1:12", + "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": 4306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3620:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3620:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3605:25:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "50616e696320627574746f6e2064697361626c6564", + "id": 4310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3632:23:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ade7d52768b2962ebe381899f913000013150b093135ace53d3db606894f67e1", + "typeString": "literal_string \"Panic button disabled\"" + }, + "value": "Panic button disabled" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ade7d52768b2962ebe381899f913000013150b093135ace53d3db606894f67e1", + "typeString": "literal_string \"Panic button disabled\"" + } + ], + "id": 4304, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "3597:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3597:59:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4312, + "nodeType": "ExpressionStatement", + "src": "3597:59:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4314, + "name": "panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4299, + "src": "3674:11:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4315, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "3689:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3689:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3674:25:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420617574686f72697a6564", + "id": 4318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3701:16:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + }, + "value": "Not authorized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "id": 4313, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "3666:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3666:52:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4320, + "nodeType": "ExpressionStatement", + "src": "3666:52:12" + }, + { + "id": 4321, + "nodeType": "PlaceholderStatement", + "src": "3728:1:12" + } + ] + }, + "documentation": null, + "id": 4323, + "name": "onlyPanicButton", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 4297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4296, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4323, + "src": "3497:25:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4295, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3497:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3496:27:12" + }, + "src": "3472:264:12", + "visibility": "internal" + }, + { + "body": { + "id": 4335, + "nodeType": "Block", + "src": "3797:142:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4329, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4325, + "src": "3850:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4328, + "name": "isNewOperatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4602, + "src": "3828:21:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 4330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3828:40:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f742061206e6577206f70657261746f7220636f6e7472616374", + "id": 4331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3882:29:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8c4324476717aecd1e569d3ba832c005a24f88be8c2ba65d585df6b95edd8a35", + "typeString": "literal_string \"Not a new operator contract\"" + }, + "value": "Not a new operator contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c4324476717aecd1e569d3ba832c005a24f88be8c2ba65d585df6b95edd8a35", + "typeString": "literal_string \"Not a new operator contract\"" + } + ], + "id": 4327, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "3807:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3807:114:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4333, + "nodeType": "ExpressionStatement", + "src": "3807:114:12" + }, + { + "id": 4334, + "nodeType": "PlaceholderStatement", + "src": "3931:1:12" + } + ] + }, + "documentation": null, + "id": 4336, + "name": "onlyForNewContract", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 4326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4325, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4336, + "src": "3770:25:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3770:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3769:27:12" + }, + "src": "3742:197:12", + "visibility": "internal" + }, + { + "body": { + "id": 4348, + "nodeType": "Block", + "src": "4005:153:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4342, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4338, + "src": "4063:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4341, + "name": "isApprovedOperatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4617, + "src": "4036:26:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 4343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4036:45:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420616e20617070726f766564206f70657261746f7220636f6e7472616374", + "id": 4344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4095:35:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b6f9ff674e366ea74583b3402886a452ea021bd3f0dac1662124ff59e8062f7f", + "typeString": "literal_string \"Not an approved operator contract\"" + }, + "value": "Not an approved operator contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b6f9ff674e366ea74583b3402886a452ea021bd3f0dac1662124ff59e8062f7f", + "typeString": "literal_string \"Not an approved operator contract\"" + } + ], + "id": 4340, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "4015:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4015:125:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4346, + "nodeType": "ExpressionStatement", + "src": "4015:125:12" + }, + { + "id": 4347, + "nodeType": "PlaceholderStatement", + "src": "4150:1:12" + } + ] + }, + "documentation": null, + "id": 4349, + "name": "onlyForApprovedContract", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 4339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4338, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4349, + "src": "3978:25:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4337, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3978:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3977:27:12" + }, + "src": "3945:213:12", + "visibility": "internal" + }, + { + "body": { + "id": 4367, + "nodeType": "Block", + "src": "4185:118:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4352, + "name": "governance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4208, + "src": "4195:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4353, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "4208:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4208:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4195:23:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4356, + "nodeType": "ExpressionStatement", + "src": "4195:23:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 4360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4357, + "name": "registryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4210, + "src": "4228:14:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4358, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "4245:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4245:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4228:27:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4361, + "nodeType": "ExpressionStatement", + "src": "4228:27:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 4365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4362, + "name": "defaultPanicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4216, + "src": "4265:18:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4363, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28146, + "src": "4286:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4286:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4265:31:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4366, + "nodeType": "ExpressionStatement", + "src": "4265:31:12" + } + ] + }, + "documentation": null, + "id": 4368, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4350, + "nodeType": "ParameterList", + "parameters": [], + "src": "4175:2:12" + }, + "returnParameters": { + "id": 4351, + "nodeType": "ParameterList", + "parameters": [], + "src": "4185:0:12" + }, + "scope": 4642, + "src": "4164:139:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4383, + "nodeType": "Block", + "src": "4375:85:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4375, + "name": "governance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4208, + "src": "4385:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4376, + "name": "_governance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4370, + "src": "4398:11:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4385:24:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4378, + "nodeType": "ExpressionStatement", + "src": "4385:24:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4380, + "name": "governance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4208, + "src": "4442:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4379, + "name": "GovernanceUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4240, + "src": "4424:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4424:29:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4382, + "nodeType": "EmitStatement", + "src": "4419:34:12" + } + ] + }, + "documentation": null, + "id": 4384, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4373, + "modifierName": { + "argumentTypes": null, + "id": 4372, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4282, + "src": "4360:14:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4360:14:12" + } + ], + "name": "setGovernance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4370, + "name": "_governance", + "nodeType": "VariableDeclaration", + "scope": 4384, + "src": "4332:19:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4332:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4331:21:12" + }, + "returnParameters": { + "id": 4374, + "nodeType": "ParameterList", + "parameters": [], + "src": "4375:0:12" + }, + "scope": 4642, + "src": "4309:151:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4399, + "nodeType": "Block", + "src": "4540:101:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4391, + "name": "registryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4210, + "src": "4550:14:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4392, + "name": "_registryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4386, + "src": "4567:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4550:32:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4394, + "nodeType": "ExpressionStatement", + "src": "4550:32:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4396, + "name": "registryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4210, + "src": "4619:14:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4395, + "name": "RegistryKeeperUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4244, + "src": "4597:21:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4597:37:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4398, + "nodeType": "EmitStatement", + "src": "4592:42:12" + } + ] + }, + "documentation": null, + "id": 4400, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4389, + "modifierName": { + "argumentTypes": null, + "id": 4388, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4282, + "src": "4525:14:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4525:14:12" + } + ], + "name": "setRegistryKeeper", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4387, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4386, + "name": "_registryKeeper", + "nodeType": "VariableDeclaration", + "scope": 4400, + "src": "4493:23:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4385, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4493:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4492:25:12" + }, + "returnParameters": { + "id": 4390, + "nodeType": "ParameterList", + "parameters": [], + "src": "4540:0:12" + }, + "scope": 4642, + "src": "4466:175:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4415, + "nodeType": "Block", + "src": "4722:110:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4407, + "name": "defaultPanicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4216, + "src": "4732:18:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4408, + "name": "_panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4402, + "src": "4753:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4732:33:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4410, + "nodeType": "ExpressionStatement", + "src": "4732:33:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4412, + "name": "defaultPanicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4216, + "src": "4806:18:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4411, + "name": "DefaultPanicButtonUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4248, + "src": "4780:25:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4780:45:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4414, + "nodeType": "EmitStatement", + "src": "4775:50:12" + } + ] + }, + "documentation": null, + "id": 4416, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4405, + "modifierName": { + "argumentTypes": null, + "id": 4404, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4282, + "src": "4707:14:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4707:14:12" + } + ], + "name": "setDefaultPanicButton", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4403, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4402, + "name": "_panicButton", + "nodeType": "VariableDeclaration", + "scope": 4416, + "src": "4678:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4401, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4678:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4677:22:12" + }, + "returnParameters": { + "id": 4406, + "nodeType": "ParameterList", + "parameters": [], + "src": "4722:0:12" + }, + "scope": 4642, + "src": "4647:185:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4459, + "nodeType": "Block", + "src": "5014:442:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4429, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4214, + "src": "5045:12:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 4431, + "indexExpression": { + "argumentTypes": null, + "id": 4430, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4418, + "src": "5058:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5045:31:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5088:1:12", + "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": 4432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5080:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4434, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5080:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5045:45:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44697361626c65642070616e696320627574746f6e2063616e6e6f742062652075706461746564", + "id": 4436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5104:41:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8d1b9aaf1a91db2554cb251884681dc026fd3d7a153bea70c79e510a6a54dd87", + "typeString": "literal_string \"Disabled panic button cannot be updated\"" + }, + "value": "Disabled panic button cannot be updated" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8d1b9aaf1a91db2554cb251884681dc026fd3d7a153bea70c79e510a6a54dd87", + "typeString": "literal_string \"Disabled panic button cannot be updated\"" + } + ], + "id": 4428, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "5024:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5024:131:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4438, + "nodeType": "ExpressionStatement", + "src": "5024:131:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4440, + "name": "_panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4420, + "src": "5186:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5210:1:12", + "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": 4441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5202:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5202:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5186:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "50616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373", + "id": 4445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5226:39:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e5a7b2a0d032ae56f5d1e30bd631d28945ee32864ebe6c7d1d2b0c4e8cc78eb5", + "typeString": "literal_string \"Panic button must be non-zero address\"" + }, + "value": "Panic button must be non-zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e5a7b2a0d032ae56f5d1e30bd631d28945ee32864ebe6c7d1d2b0c4e8cc78eb5", + "typeString": "literal_string \"Panic button must be non-zero address\"" + } + ], + "id": 4439, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "5165:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5165:110:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4447, + "nodeType": "ExpressionStatement", + "src": "5165:110:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 4452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4448, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4214, + "src": "5286:12:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 4450, + "indexExpression": { + "argumentTypes": null, + "id": 4449, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4418, + "src": "5299:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5286:31:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4451, + "name": "_panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4420, + "src": "5320:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5286:46:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4453, + "nodeType": "ExpressionStatement", + "src": "5286:46:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4455, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4418, + "src": "5396:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4456, + "name": "_panicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4420, + "src": "5427:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4454, + "name": "OperatorContractPanicButtonUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4258, + "src": "5348:34:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 4457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5348:101:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4458, + "nodeType": "EmitStatement", + "src": "5343:106:12" + } + ] + }, + "documentation": null, + "id": 4460, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 4423, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4418, + "src": "4980:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 4424, + "modifierName": { + "argumentTypes": null, + "id": 4422, + "name": "onlyForApprovedContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4349, + "src": "4956:23:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4956:42:12" + }, + { + "arguments": null, + "id": 4426, + "modifierName": { + "argumentTypes": null, + "id": 4425, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4282, + "src": "4999:14:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4999:14:12" + } + ], + "name": "setOperatorContractPanicButton", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4418, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4460, + "src": "4887:25:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4417, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4887:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4420, + "name": "_panicButton", + "nodeType": "VariableDeclaration", + "scope": 4460, + "src": "4922:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4419, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4922:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4877:71:12" + }, + "returnParameters": { + "id": 4427, + "nodeType": "ParameterList", + "parameters": [], + "src": "5014:0:12" + }, + "scope": 4642, + "src": "4838:618:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4493, + "nodeType": "Block", + "src": "5626:263:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4471, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4214, + "src": "5657:12:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 4473, + "indexExpression": { + "argumentTypes": null, + "id": 4472, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4462, + "src": "5670:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5657:31:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4475, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5700:1:12", + "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": 4474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5692:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5692:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5657:45:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "50616e696320627574746f6e20616c72656164792064697361626c6564", + "id": 4478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5716:31:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bb534723a179d6568d886b637fa707371e8c13170fa009941c10391cd4682512", + "typeString": "literal_string \"Panic button already disabled\"" + }, + "value": "Panic button already disabled" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bb534723a179d6568d886b637fa707371e8c13170fa009941c10391cd4682512", + "typeString": "literal_string \"Panic button already disabled\"" + } + ], + "id": 4470, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "src": "5636:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5636:121:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4480, + "nodeType": "ExpressionStatement", + "src": "5636:121:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 4487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4481, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4214, + "src": "5768:12:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 4483, + "indexExpression": { + "argumentTypes": null, + "id": 4482, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4462, + "src": "5781:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5768:31:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5810:1:12", + "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": 4484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5802:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5802:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5768:44:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4488, + "nodeType": "ExpressionStatement", + "src": "5768:44:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4490, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4462, + "src": "5864:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4489, + "name": "OperatorContractPanicButtonDisabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4252, + "src": "5828:35:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5828:54:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4492, + "nodeType": "EmitStatement", + "src": "5823:59:12" + } + ] + }, + "documentation": null, + "id": 4494, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 4465, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4462, + "src": "5580:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 4466, + "modifierName": { + "argumentTypes": null, + "id": 4464, + "name": "onlyForApprovedContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4349, + "src": "5556:23:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5556:42:12" + }, + { + "arguments": null, + "id": 4468, + "modifierName": { + "argumentTypes": null, + "id": 4467, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4282, + "src": "5607:14:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5607:14:12" + } + ], + "name": "disableOperatorContractPanicButton", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4463, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4462, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4494, + "src": "5506:25:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5506:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5505:27:12" + }, + "returnParameters": { + "id": 4469, + "nodeType": "ParameterList", + "parameters": [], + "src": "5626:0:12" + }, + "scope": 4642, + "src": "5462:427:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4514, + "nodeType": "Block", + "src": "6037:213:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4503, + "name": "operatorContractUpgraders", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4220, + "src": "6047:25:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 4505, + "indexExpression": { + "argumentTypes": null, + "id": 4504, + "name": "_serviceContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4496, + "src": "6073:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6047:43:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4506, + "name": "_operatorContractUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4498, + "src": "6093:25:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6047:71:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4508, + "nodeType": "ExpressionStatement", + "src": "6047:71:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4510, + "name": "_serviceContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4496, + "src": "6178:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4511, + "name": "_operatorContractUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4498, + "src": "6208:25:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4509, + "name": "OperatorContractUpgraderUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4264, + "src": "6133:31:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 4512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6133:110:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4513, + "nodeType": "EmitStatement", + "src": "6128:115:12" + } + ] + }, + "documentation": null, + "id": 4515, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4501, + "modifierName": { + "argumentTypes": null, + "id": 4500, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4282, + "src": "6022:14:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6022:14:12" + } + ], + "name": "setOperatorContractUpgrader", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4499, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4496, + "name": "_serviceContract", + "nodeType": "VariableDeclaration", + "scope": 4515, + "src": "5941:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5941:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4498, + "name": "_operatorContractUpgrader", + "nodeType": "VariableDeclaration", + "scope": 4515, + "src": "5975:33:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5975:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5931:83:12" + }, + "returnParameters": { + "id": 4502, + "nodeType": "ParameterList", + "parameters": [], + "src": "6037:0:12" + }, + "scope": 4642, + "src": "5895:355:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4535, + "nodeType": "Block", + "src": "6397:211:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4524, + "name": "serviceContractUpgraders", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4224, + "src": "6407:24:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 4526, + "indexExpression": { + "argumentTypes": null, + "id": 4525, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4517, + "src": "6432:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6407:43:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4527, + "name": "_serviceContractUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4519, + "src": "6453:24:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6407:70:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4529, + "nodeType": "ExpressionStatement", + "src": "6407:70:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4531, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4517, + "src": "6536:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4532, + "name": "_serviceContractUpgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4519, + "src": "6567:24:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4530, + "name": "ServiceContractUpgraderUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4270, + "src": "6492:30:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 4533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6492:109:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4534, + "nodeType": "EmitStatement", + "src": "6487:114:12" + } + ] + }, + "documentation": null, + "id": 4536, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 4522, + "modifierName": { + "argumentTypes": null, + "id": 4521, + "name": "onlyGovernance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4282, + "src": "6382:14:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6382:14:12" + } + ], + "name": "setServiceContractUpgrader", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4520, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4517, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4536, + "src": "6301:25:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4516, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6301:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4519, + "name": "_serviceContractUpgrader", + "nodeType": "VariableDeclaration", + "scope": 4536, + "src": "6336:32:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4518, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6336:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6291:83:12" + }, + "returnParameters": { + "id": 4523, + "nodeType": "ParameterList", + "parameters": [], + "src": "6397:0:12" + }, + "scope": 4642, + "src": "6256:352:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4563, + "nodeType": "Block", + "src": "6764:196:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4546, + "name": "operatorContracts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4228, + "src": "6774:17:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$4206_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + } + }, + "id": 4548, + "indexExpression": { + "argumentTypes": null, + "id": 4547, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "6792:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6774:35:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4549, + "name": "ContractStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4206, + "src": "6812:14:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ContractStatus_$4206_$", + "typeString": "type(enum KeepRegistry.ContractStatus)" + } + }, + "id": 4550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Approved", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6812:23:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "src": "6774:61:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "id": 4552, + "nodeType": "ExpressionStatement", + "src": "6774:61:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 4557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4553, + "name": "panicButtons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4214, + "src": "6845:12:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 4555, + "indexExpression": { + "argumentTypes": null, + "id": 4554, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "6858:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6845:30:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4556, + "name": "defaultPanicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4216, + "src": "6878:18:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6845:51:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4558, + "nodeType": "ExpressionStatement", + "src": "6845:51:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4560, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "6936:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4559, + "name": "OperatorContractApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4232, + "src": "6911:24:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6911:42:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4562, + "nodeType": "EmitStatement", + "src": "6906:47:12" + } + ] + }, + "documentation": null, + "id": 4564, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 4541, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4538, + "src": "6715:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 4542, + "modifierName": { + "argumentTypes": null, + "id": 4540, + "name": "onlyForNewContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4336, + "src": "6696:18:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "6696:36:12" + }, + { + "arguments": null, + "id": 4544, + "modifierName": { + "argumentTypes": null, + "id": 4543, + "name": "onlyRegistryKeeper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4294, + "src": "6741:18:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6741:18:12" + } + ], + "name": "approveOperatorContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4539, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4538, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4564, + "src": "6647:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4537, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6647:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6646:26:12" + }, + "returnParameters": { + "id": 4545, + "nodeType": "ParameterList", + "parameters": [], + "src": "6764:0:12" + }, + "scope": 4642, + "src": "6614:346:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4586, + "nodeType": "Block", + "src": "7136:135:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4575, + "name": "operatorContracts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4228, + "src": "7146:17:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$4206_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + } + }, + "id": 4577, + "indexExpression": { + "argumentTypes": null, + "id": 4576, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "7164:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7146:35:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4578, + "name": "ContractStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4206, + "src": "7184:14:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ContractStatus_$4206_$", + "typeString": "type(enum KeepRegistry.ContractStatus)" + } + }, + "id": 4579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Disabled", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7184:23:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "src": "7146:61:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "id": 4581, + "nodeType": "ExpressionStatement", + "src": "7146:61:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4583, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "7247:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4582, + "name": "OperatorContractDisabled", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4236, + "src": "7222:24:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 4584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7222:42:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4585, + "nodeType": "EmitStatement", + "src": "7217:47:12" + } + ] + }, + "documentation": null, + "id": 4587, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 4569, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "7072:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 4570, + "modifierName": { + "argumentTypes": null, + "id": 4568, + "name": "onlyForApprovedContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4349, + "src": "7048:23:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "7048:41:12" + }, + { + "arguments": [ + { + "argumentTypes": null, + "id": 4572, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "7114:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 4573, + "modifierName": { + "argumentTypes": null, + "id": 4571, + "name": "onlyPanicButton", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4323, + "src": "7098:15:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$", + "typeString": "modifier (address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "7098:33:12" + } + ], + "name": "disableOperatorContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4566, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4587, + "src": "6999:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4565, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6999:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6998:26:12" + }, + "returnParameters": { + "id": 4574, + "nodeType": "ParameterList", + "parameters": [], + "src": "7136:0:12" + }, + "scope": 4642, + "src": "6966:305:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4601, + "nodeType": "Block", + "src": "7389:81:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + }, + "id": 4599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4594, + "name": "operatorContracts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4228, + "src": "7406:17:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$4206_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + } + }, + "id": 4596, + "indexExpression": { + "argumentTypes": null, + "id": 4595, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4589, + "src": "7424:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7406:35:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4597, + "name": "ContractStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4206, + "src": "7445:14:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ContractStatus_$4206_$", + "typeString": "type(enum KeepRegistry.ContractStatus)" + } + }, + "id": 4598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "New", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7445:18:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "src": "7406:57:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4593, + "id": 4600, + "nodeType": "Return", + "src": "7399:64:12" + } + ] + }, + "documentation": null, + "id": 4602, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isNewOperatorContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4590, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4589, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4602, + "src": "7308:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4588, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7308:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7307:26:12" + }, + "returnParameters": { + "id": 4593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4592, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4602, + "src": "7379:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4591, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7379:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7378:6:12" + }, + "scope": 4642, + "src": "7277:193:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4616, + "nodeType": "Block", + "src": "7593:86:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + }, + "id": 4614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4609, + "name": "operatorContracts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4228, + "src": "7610:17:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$4206_$", + "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" + } + }, + "id": 4611, + "indexExpression": { + "argumentTypes": null, + "id": 4610, + "name": "operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4604, + "src": "7628:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7610:35:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4612, + "name": "ContractStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4206, + "src": "7649:14:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ContractStatus_$4206_$", + "typeString": "type(enum KeepRegistry.ContractStatus)" + } + }, + "id": 4613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Approved", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7649:23:12", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + } + }, + "src": "7610:62:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4608, + "id": 4615, + "nodeType": "Return", + "src": "7603:69:12" + } + ] + }, + "documentation": null, + "id": 4617, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedOperatorContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4604, + "name": "operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4617, + "src": "7512:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4603, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7512:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7511:26:12" + }, + "returnParameters": { + "id": 4608, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4607, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4617, + "src": "7583:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4606, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7583:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7582:6:12" + }, + "scope": 4642, + "src": "7476:203:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4628, + "nodeType": "Block", + "src": "7806:67:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4624, + "name": "operatorContractUpgraders", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4220, + "src": "7823:25:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 4626, + "indexExpression": { + "argumentTypes": null, + "id": 4625, + "name": "_serviceContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4619, + "src": "7849:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7823:43:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4623, + "id": 4627, + "nodeType": "Return", + "src": "7816:50:12" + } + ] + }, + "documentation": null, + "id": 4629, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "operatorContractUpgraderFor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4619, + "name": "_serviceContract", + "nodeType": "VariableDeclaration", + "scope": 4629, + "src": "7722:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7722:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7721:26:12" + }, + "returnParameters": { + "id": 4623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4622, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4629, + "src": "7793:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4621, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7793:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7792:9:12" + }, + "scope": 4642, + "src": "7685:188:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 4640, + "nodeType": "Block", + "src": "8000:67:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4636, + "name": "serviceContractUpgraders", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4224, + "src": "8017:24:12", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 4638, + "indexExpression": { + "argumentTypes": null, + "id": 4637, + "name": "_operatorContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4631, + "src": "8042:17:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8017:43:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 4635, + "id": 4639, + "nodeType": "Return", + "src": "8010:50:12" + } + ] + }, + "documentation": null, + "id": 4641, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "serviceContractUpgraderFor", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4632, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4631, + "name": "_operatorContract", + "nodeType": "VariableDeclaration", + "scope": 4641, + "src": "7915:25:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4630, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7915:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7914:27:12" + }, + "returnParameters": { + "id": 4635, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4634, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 4641, + "src": "7987:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4633, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7987:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7986:9:12" + }, + "scope": 4642, + "src": "7879:188:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4643, + "src": "120:7949:12" + } + ], + "src": "0:8070:12" + }, + "legacyAST": { + "attributes": { + "absolutePath": "/home/runner/work/keep-core/keep-core/solidity-v1/contracts/KeepRegistry.sol", + "exportedSymbols": { + "KeepRegistry": [4642] + } + }, + "children": [ + { + "attributes": { + "literals": ["solidity", "0.5", ".17"] + }, + "id": 4202, + "name": "PragmaDirective", + "src": "0:23:12" + }, + { + "attributes": { + "baseContracts": [null], + "contractDependencies": [null], + "contractKind": "contract", + "documentation": "@title KeepRegistry\n @notice Governance owned registry of approved contracts and roles.", + "fullyImplemented": true, + "linearizedBaseContracts": [4642], + "name": "KeepRegistry", + "scope": 4643 + }, + "children": [ + { + "attributes": { + "canonicalName": "KeepRegistry.ContractStatus", + "name": "ContractStatus" + }, + "children": [ + { + "attributes": { + "name": "New" + }, + "id": 4203, + "name": "EnumValue", + "src": "169:3:12" + }, + { + "attributes": { + "name": "Approved" + }, + "id": 4204, + "name": "EnumValue", + "src": "174:8:12" + }, + { + "attributes": { + "name": "Disabled" + }, + "id": 4205, + "name": "EnumValue", + "src": "184:8:12" + } + ], + "id": 4206, + "name": "EnumDefinition", + "src": "148:45:12" + }, + { + "attributes": { + "constant": false, + "name": "governance", + "scope": 4642, + "stateVariable": true, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4207, + "name": "ElementaryTypeName", + "src": "369:7:12" + } + ], + "id": 4208, + "name": "VariableDeclaration", + "src": "369:25:12" + }, + { + "attributes": { + "constant": false, + "name": "registryKeeper", + "scope": 4642, + "stateVariable": true, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4209, + "name": "ElementaryTypeName", + "src": "588:7:12" + } + ], + "id": 4210, + "name": "VariableDeclaration", + "src": "588:29:12" + }, + { + "attributes": { + "constant": false, + "name": "panicButtons", + "scope": 4642, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => address)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 4211, + "name": "ElementaryTypeName", + "src": "1274:7:12" + }, + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4212, + "name": "ElementaryTypeName", + "src": "1285:7:12" + } + ], + "id": 4213, + "name": "Mapping", + "src": "1266:27:12" + } + ], + "id": 4214, + "name": "VariableDeclaration", + "src": "1266:47:12" + }, + { + "attributes": { + "constant": false, + "name": "defaultPanicButton", + "scope": 4642, + "stateVariable": true, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4215, + "name": "ElementaryTypeName", + "src": "1449:7:12" + } + ], + "id": 4216, + "name": "VariableDeclaration", + "src": "1449:33:12" + }, + { + "attributes": { + "constant": false, + "name": "operatorContractUpgraders", + "scope": 4642, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => address)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 4217, + "name": "ElementaryTypeName", + "src": "1800:7:12" + }, + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4218, + "name": "ElementaryTypeName", + "src": "1811:7:12" + } + ], + "id": 4219, + "name": "Mapping", + "src": "1792:27:12" + } + ], + "id": 4220, + "name": "VariableDeclaration", + "src": "1792:60:12" + }, + { + "attributes": { + "constant": false, + "name": "serviceContractUpgraders", + "scope": 4642, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => address)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => address)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 4221, + "name": "ElementaryTypeName", + "src": "2377:7:12" + }, + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4222, + "name": "ElementaryTypeName", + "src": "2388:7:12" + } + ], + "id": 4223, + "name": "Mapping", + "src": "2369:27:12" + } + ], + "id": 4224, + "name": "VariableDeclaration", + "src": "2369:59:12" + }, + { + "attributes": { + "constant": false, + "name": "operatorContracts", + "scope": 4642, + "stateVariable": true, + "storageLocation": "default", + "type": "mapping(address => enum KeepRegistry.ContractStatus)", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "type": "mapping(address => enum KeepRegistry.ContractStatus)" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 4225, + "name": "ElementaryTypeName", + "src": "2485:7:12" + }, + { + "attributes": { + "contractScope": null, + "name": "ContractStatus", + "referencedDeclaration": 4206, + "type": "enum KeepRegistry.ContractStatus" + }, + "id": 4226, + "name": "UserDefinedTypeName", + "src": "2496:14:12" + } + ], + "id": 4227, + "name": "Mapping", + "src": "2477:34:12" + } + ], + "id": 4228, + "name": "VariableDeclaration", + "src": "2477:59:12" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "OperatorContractApproved" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "operatorContract", + "scope": 4232, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4229, + "name": "ElementaryTypeName", + "src": "2574:7:12" + } + ], + "id": 4230, + "name": "VariableDeclaration", + "src": "2574:24:12" + } + ], + "id": 4231, + "name": "ParameterList", + "src": "2573:26:12" + } + ], + "id": 4232, + "name": "EventDefinition", + "src": "2543:57:12" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "OperatorContractDisabled" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "operatorContract", + "scope": 4236, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4233, + "name": "ElementaryTypeName", + "src": "2636:7:12" + } + ], + "id": 4234, + "name": "VariableDeclaration", + "src": "2636:24:12" + } + ], + "id": 4235, + "name": "ParameterList", + "src": "2635:26:12" + } + ], + "id": 4236, + "name": "EventDefinition", + "src": "2605:57:12" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "GovernanceUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "governance", + "scope": 4240, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4237, + "name": "ElementaryTypeName", + "src": "2692:7:12" + } + ], + "id": 4238, + "name": "VariableDeclaration", + "src": "2692:18:12" + } + ], + "id": 4239, + "name": "ParameterList", + "src": "2691:20:12" + } + ], + "id": 4240, + "name": "EventDefinition", + "src": "2668:44:12" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "RegistryKeeperUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "registryKeeper", + "scope": 4244, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4241, + "name": "ElementaryTypeName", + "src": "2745:7:12" + } + ], + "id": 4242, + "name": "VariableDeclaration", + "src": "2745:22:12" + } + ], + "id": 4243, + "name": "ParameterList", + "src": "2744:24:12" + } + ], + "id": 4244, + "name": "EventDefinition", + "src": "2717:52:12" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "DefaultPanicButtonUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "defaultPanicButton", + "scope": 4248, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4245, + "name": "ElementaryTypeName", + "src": "2806:7:12" + } + ], + "id": 4246, + "name": "VariableDeclaration", + "src": "2806:26:12" + } + ], + "id": 4247, + "name": "ParameterList", + "src": "2805:28:12" + } + ], + "id": 4248, + "name": "EventDefinition", + "src": "2774:60:12" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "OperatorContractPanicButtonDisabled" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "operatorContract", + "scope": 4252, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4249, + "name": "ElementaryTypeName", + "src": "2881:7:12" + } + ], + "id": 4250, + "name": "VariableDeclaration", + "src": "2881:24:12" + } + ], + "id": 4251, + "name": "ParameterList", + "src": "2880:26:12" + } + ], + "id": 4252, + "name": "EventDefinition", + "src": "2839:68:12" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "OperatorContractPanicButtonUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "operatorContract", + "scope": 4258, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4253, + "name": "ElementaryTypeName", + "src": "2962:7:12" + } + ], + "id": 4254, + "name": "VariableDeclaration", + "src": "2962:24:12" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "panicButton", + "scope": 4258, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4255, + "name": "ElementaryTypeName", + "src": "2996:7:12" + } + ], + "id": 4256, + "name": "VariableDeclaration", + "src": "2996:19:12" + } + ], + "id": 4257, + "name": "ParameterList", + "src": "2952:69:12" + } + ], + "id": 4258, + "name": "EventDefinition", + "src": "2912:110:12" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "OperatorContractUpgraderUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "serviceContract", + "scope": 4264, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4259, + "name": "ElementaryTypeName", + "src": "3074:7:12" + } + ], + "id": 4260, + "name": "VariableDeclaration", + "src": "3074:23:12" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "upgrader", + "scope": 4264, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4261, + "name": "ElementaryTypeName", + "src": "3107:7:12" + } + ], + "id": 4262, + "name": "VariableDeclaration", + "src": "3107:16:12" + } + ], + "id": 4263, + "name": "ParameterList", + "src": "3064:65:12" + } + ], + "id": 4264, + "name": "EventDefinition", + "src": "3027:103:12" + }, + { + "attributes": { + "anonymous": false, + "documentation": null, + "name": "ServiceContractUpgraderUpdated" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "indexed": false, + "name": "operatorContract", + "scope": 4270, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4265, + "name": "ElementaryTypeName", + "src": "3181:7:12" + } + ], + "id": 4266, + "name": "VariableDeclaration", + "src": "3181:24:12" + }, + { + "attributes": { + "constant": false, + "indexed": false, + "name": "keeper", + "scope": 4270, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4267, + "name": "ElementaryTypeName", + "src": "3215:7:12" + } + ], + "id": 4268, + "name": "VariableDeclaration", + "src": "3215:14:12" + } + ], + "id": 4269, + "name": "ParameterList", + "src": "3171:64:12" + } + ], + "id": 4270, + "name": "EventDefinition", + "src": "3135:101:12" + }, + { + "attributes": { + "documentation": null, + "name": "onlyGovernance", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4271, + "name": "ParameterList", + "src": "3265:2:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 4272, + "name": "Identifier", + "src": "3278:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4208, + "type": "address", + "value": "governance" + }, + "id": 4273, + "name": "Identifier", + "src": "3286:10:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 4274, + "name": "Identifier", + "src": "3300:3:12" + } + ], + "id": 4275, + "name": "MemberAccess", + "src": "3300:10:12" + } + ], + "id": 4276, + "name": "BinaryOperation", + "src": "3286:24:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 4277, + "name": "Literal", + "src": "3312:16:12" + } + ], + "id": 4278, + "name": "FunctionCall", + "src": "3278:51:12" + } + ], + "id": 4279, + "name": "ExpressionStatement", + "src": "3278:51:12" + }, + { + "id": 4280, + "name": "PlaceholderStatement", + "src": "3339:1:12" + } + ], + "id": 4281, + "name": "Block", + "src": "3268:79:12" + } + ], + "id": 4282, + "name": "ModifierDefinition", + "src": "3242:105:12" + }, + { + "attributes": { + "documentation": null, + "name": "onlyRegistryKeeper", + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4283, + "name": "ParameterList", + "src": "3380:2:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 4284, + "name": "Identifier", + "src": "3393:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4210, + "type": "address", + "value": "registryKeeper" + }, + "id": 4285, + "name": "Identifier", + "src": "3401:14:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 4286, + "name": "Identifier", + "src": "3419:3:12" + } + ], + "id": 4287, + "name": "MemberAccess", + "src": "3419:10:12" + } + ], + "id": 4288, + "name": "BinaryOperation", + "src": "3401:28:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 4289, + "name": "Literal", + "src": "3431:16:12" + } + ], + "id": 4290, + "name": "FunctionCall", + "src": "3393:55:12" + } + ], + "id": 4291, + "name": "ExpressionStatement", + "src": "3393:55:12" + }, + { + "id": 4292, + "name": "PlaceholderStatement", + "src": "3458:1:12" + } + ], + "id": 4293, + "name": "Block", + "src": "3383:83:12" + } + ], + "id": 4294, + "name": "ModifierDefinition", + "src": "3353:113:12" + }, + { + "attributes": { + "documentation": null, + "name": "onlyPanicButton", + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 4323, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4295, + "name": "ElementaryTypeName", + "src": "3497:7:12" + } + ], + "id": 4296, + "name": "VariableDeclaration", + "src": "3497:25:12" + } + ], + "id": 4297, + "name": "ParameterList", + "src": "3496:27:12" + }, + { + "children": [ + { + "attributes": { + "assignments": [4299] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "panicButton", + "scope": 4322, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4298, + "name": "ElementaryTypeName", + "src": "3534:7:12" + } + ], + "id": 4299, + "name": "VariableDeclaration", + "src": "3534:19:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4214, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 4300, + "name": "Identifier", + "src": "3556:12:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4296, + "type": "address", + "value": "_operatorContract" + }, + "id": 4301, + "name": "Identifier", + "src": "3569:17:12" + } + ], + "id": 4302, + "name": "IndexAccess", + "src": "3556:31:12" + } + ], + "id": 4303, + "name": "VariableDeclarationStatement", + "src": "3534:53:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ade7d52768b2962ebe381899f913000013150b093135ace53d3db606894f67e1", + "typeString": "literal_string \"Panic button disabled\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 4304, + "name": "Identifier", + "src": "3597:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4299, + "type": "address", + "value": "panicButton" + }, + "id": 4305, + "name": "Identifier", + "src": "3605:11:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 4306, + "name": "ElementaryTypeNameExpression", + "src": "3620:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 4307, + "name": "Literal", + "src": "3628:1:12" + } + ], + "id": 4308, + "name": "FunctionCall", + "src": "3620:10:12" + } + ], + "id": 4309, + "name": "BinaryOperation", + "src": "3605:25:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "50616e696320627574746f6e2064697361626c6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Panic button disabled\"", + "value": "Panic button disabled" + }, + "id": 4310, + "name": "Literal", + "src": "3632:23:12" + } + ], + "id": 4311, + "name": "FunctionCall", + "src": "3597:59:12" + } + ], + "id": 4312, + "name": "ExpressionStatement", + "src": "3597:59:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", + "typeString": "literal_string \"Not authorized\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 4313, + "name": "Identifier", + "src": "3666:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4299, + "type": "address", + "value": "panicButton" + }, + "id": 4314, + "name": "Identifier", + "src": "3674:11:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 4315, + "name": "Identifier", + "src": "3689:3:12" + } + ], + "id": 4316, + "name": "MemberAccess", + "src": "3689:10:12" + } + ], + "id": 4317, + "name": "BinaryOperation", + "src": "3674:25:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420617574686f72697a6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not authorized\"", + "value": "Not authorized" + }, + "id": 4318, + "name": "Literal", + "src": "3701:16:12" + } + ], + "id": 4319, + "name": "FunctionCall", + "src": "3666:52:12" + } + ], + "id": 4320, + "name": "ExpressionStatement", + "src": "3666:52:12" + }, + { + "id": 4321, + "name": "PlaceholderStatement", + "src": "3728:1:12" + } + ], + "id": 4322, + "name": "Block", + "src": "3524:212:12" + } + ], + "id": 4323, + "name": "ModifierDefinition", + "src": "3472:264:12" + }, + { + "attributes": { + "documentation": null, + "name": "onlyForNewContract", + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 4336, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4324, + "name": "ElementaryTypeName", + "src": "3770:7:12" + } + ], + "id": 4325, + "name": "VariableDeclaration", + "src": "3770:25:12" + } + ], + "id": 4326, + "name": "ParameterList", + "src": "3769:27:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c4324476717aecd1e569d3ba832c005a24f88be8c2ba65d585df6b95edd8a35", + "typeString": "literal_string \"Not a new operator contract\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 4327, + "name": "Identifier", + "src": "3807:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 4602, + "type": "function (address) view returns (bool)", + "value": "isNewOperatorContract" + }, + "id": 4328, + "name": "Identifier", + "src": "3828:21:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4325, + "type": "address", + "value": "_operatorContract" + }, + "id": 4329, + "name": "Identifier", + "src": "3850:17:12" + } + ], + "id": 4330, + "name": "FunctionCall", + "src": "3828:40:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f742061206e6577206f70657261746f7220636f6e7472616374", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not a new operator contract\"", + "value": "Not a new operator contract" + }, + "id": 4331, + "name": "Literal", + "src": "3882:29:12" + } + ], + "id": 4332, + "name": "FunctionCall", + "src": "3807:114:12" + } + ], + "id": 4333, + "name": "ExpressionStatement", + "src": "3807:114:12" + }, + { + "id": 4334, + "name": "PlaceholderStatement", + "src": "3931:1:12" + } + ], + "id": 4335, + "name": "Block", + "src": "3797:142:12" + } + ], + "id": 4336, + "name": "ModifierDefinition", + "src": "3742:197:12" + }, + { + "attributes": { + "documentation": null, + "name": "onlyForApprovedContract", + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 4349, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4337, + "name": "ElementaryTypeName", + "src": "3978:7:12" + } + ], + "id": 4338, + "name": "VariableDeclaration", + "src": "3978:25:12" + } + ], + "id": 4339, + "name": "ParameterList", + "src": "3977:27:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b6f9ff674e366ea74583b3402886a452ea021bd3f0dac1662124ff59e8062f7f", + "typeString": "literal_string \"Not an approved operator contract\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 4340, + "name": "Identifier", + "src": "4015:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "bool", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 4617, + "type": "function (address) view returns (bool)", + "value": "isApprovedOperatorContract" + }, + "id": 4341, + "name": "Identifier", + "src": "4036:26:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4338, + "type": "address", + "value": "_operatorContract" + }, + "id": 4342, + "name": "Identifier", + "src": "4063:17:12" + } + ], + "id": 4343, + "name": "FunctionCall", + "src": "4036:45:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "4e6f7420616e20617070726f766564206f70657261746f7220636f6e7472616374", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Not an approved operator contract\"", + "value": "Not an approved operator contract" + }, + "id": 4344, + "name": "Literal", + "src": "4095:35:12" + } + ], + "id": 4345, + "name": "FunctionCall", + "src": "4015:125:12" + } + ], + "id": 4346, + "name": "ExpressionStatement", + "src": "4015:125:12" + }, + { + "id": 4347, + "name": "PlaceholderStatement", + "src": "4150:1:12" + } + ], + "id": 4348, + "name": "Block", + "src": "4005:153:12" + } + ], + "id": 4349, + "name": "ModifierDefinition", + "src": "3945:213:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": true, + "kind": "constructor", + "modifiers": [null], + "name": "", + "scope": 4642, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4350, + "name": "ParameterList", + "src": "4175:2:12" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4351, + "name": "ParameterList", + "src": "4185:0:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4208, + "type": "address", + "value": "governance" + }, + "id": 4352, + "name": "Identifier", + "src": "4195:10:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 4353, + "name": "Identifier", + "src": "4208:3:12" + } + ], + "id": 4354, + "name": "MemberAccess", + "src": "4208:10:12" + } + ], + "id": 4355, + "name": "Assignment", + "src": "4195:23:12" + } + ], + "id": 4356, + "name": "ExpressionStatement", + "src": "4195:23:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4210, + "type": "address", + "value": "registryKeeper" + }, + "id": 4357, + "name": "Identifier", + "src": "4228:14:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 4358, + "name": "Identifier", + "src": "4245:3:12" + } + ], + "id": 4359, + "name": "MemberAccess", + "src": "4245:10:12" + } + ], + "id": 4360, + "name": "Assignment", + "src": "4228:27:12" + } + ], + "id": 4361, + "name": "ExpressionStatement", + "src": "4228:27:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4216, + "type": "address", + "value": "defaultPanicButton" + }, + "id": 4362, + "name": "Identifier", + "src": "4265:18:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "member_name": "sender", + "referencedDeclaration": null, + "type": "address payable" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 28146, + "type": "msg", + "value": "msg" + }, + "id": 4363, + "name": "Identifier", + "src": "4286:3:12" + } + ], + "id": 4364, + "name": "MemberAccess", + "src": "4286:10:12" + } + ], + "id": 4365, + "name": "Assignment", + "src": "4265:31:12" + } + ], + "id": 4366, + "name": "ExpressionStatement", + "src": "4265:31:12" + } + ], + "id": 4367, + "name": "Block", + "src": "4185:118:12" + } + ], + "id": 4368, + "name": "FunctionDefinition", + "src": "4164:139:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setGovernance", + "scope": 4642, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_governance", + "scope": 4384, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4369, + "name": "ElementaryTypeName", + "src": "4332:7:12" + } + ], + "id": 4370, + "name": "VariableDeclaration", + "src": "4332:19:12" + } + ], + "id": 4371, + "name": "ParameterList", + "src": "4331:21:12" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4374, + "name": "ParameterList", + "src": "4375:0:12" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4282, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 4372, + "name": "Identifier", + "src": "4360:14:12" + } + ], + "id": 4373, + "name": "ModifierInvocation", + "src": "4360:14:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4208, + "type": "address", + "value": "governance" + }, + "id": 4375, + "name": "Identifier", + "src": "4385:10:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4370, + "type": "address", + "value": "_governance" + }, + "id": 4376, + "name": "Identifier", + "src": "4398:11:12" + } + ], + "id": 4377, + "name": "Assignment", + "src": "4385:24:12" + } + ], + "id": 4378, + "name": "ExpressionStatement", + "src": "4385:24:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 4240, + "type": "function (address)", + "value": "GovernanceUpdated" + }, + "id": 4379, + "name": "Identifier", + "src": "4424:17:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4208, + "type": "address", + "value": "governance" + }, + "id": 4380, + "name": "Identifier", + "src": "4442:10:12" + } + ], + "id": 4381, + "name": "FunctionCall", + "src": "4424:29:12" + } + ], + "id": 4382, + "name": "EmitStatement", + "src": "4419:34:12" + } + ], + "id": 4383, + "name": "Block", + "src": "4375:85:12" + } + ], + "id": 4384, + "name": "FunctionDefinition", + "src": "4309:151:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setRegistryKeeper", + "scope": 4642, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_registryKeeper", + "scope": 4400, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4385, + "name": "ElementaryTypeName", + "src": "4493:7:12" + } + ], + "id": 4386, + "name": "VariableDeclaration", + "src": "4493:23:12" + } + ], + "id": 4387, + "name": "ParameterList", + "src": "4492:25:12" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4390, + "name": "ParameterList", + "src": "4540:0:12" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4282, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 4388, + "name": "Identifier", + "src": "4525:14:12" + } + ], + "id": 4389, + "name": "ModifierInvocation", + "src": "4525:14:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4210, + "type": "address", + "value": "registryKeeper" + }, + "id": 4391, + "name": "Identifier", + "src": "4550:14:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4386, + "type": "address", + "value": "_registryKeeper" + }, + "id": 4392, + "name": "Identifier", + "src": "4567:15:12" + } + ], + "id": 4393, + "name": "Assignment", + "src": "4550:32:12" + } + ], + "id": 4394, + "name": "ExpressionStatement", + "src": "4550:32:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 4244, + "type": "function (address)", + "value": "RegistryKeeperUpdated" + }, + "id": 4395, + "name": "Identifier", + "src": "4597:21:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4210, + "type": "address", + "value": "registryKeeper" + }, + "id": 4396, + "name": "Identifier", + "src": "4619:14:12" + } + ], + "id": 4397, + "name": "FunctionCall", + "src": "4597:37:12" + } + ], + "id": 4398, + "name": "EmitStatement", + "src": "4592:42:12" + } + ], + "id": 4399, + "name": "Block", + "src": "4540:101:12" + } + ], + "id": 4400, + "name": "FunctionDefinition", + "src": "4466:175:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setDefaultPanicButton", + "scope": 4642, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_panicButton", + "scope": 4416, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4401, + "name": "ElementaryTypeName", + "src": "4678:7:12" + } + ], + "id": 4402, + "name": "VariableDeclaration", + "src": "4678:20:12" + } + ], + "id": 4403, + "name": "ParameterList", + "src": "4677:22:12" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4406, + "name": "ParameterList", + "src": "4722:0:12" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4282, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 4404, + "name": "Identifier", + "src": "4707:14:12" + } + ], + "id": 4405, + "name": "ModifierInvocation", + "src": "4707:14:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4216, + "type": "address", + "value": "defaultPanicButton" + }, + "id": 4407, + "name": "Identifier", + "src": "4732:18:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4402, + "type": "address", + "value": "_panicButton" + }, + "id": 4408, + "name": "Identifier", + "src": "4753:12:12" + } + ], + "id": 4409, + "name": "Assignment", + "src": "4732:33:12" + } + ], + "id": 4410, + "name": "ExpressionStatement", + "src": "4732:33:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 4248, + "type": "function (address)", + "value": "DefaultPanicButtonUpdated" + }, + "id": 4411, + "name": "Identifier", + "src": "4780:25:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4216, + "type": "address", + "value": "defaultPanicButton" + }, + "id": 4412, + "name": "Identifier", + "src": "4806:18:12" + } + ], + "id": 4413, + "name": "FunctionCall", + "src": "4780:45:12" + } + ], + "id": 4414, + "name": "EmitStatement", + "src": "4775:50:12" + } + ], + "id": 4415, + "name": "Block", + "src": "4722:110:12" + } + ], + "id": 4416, + "name": "FunctionDefinition", + "src": "4647:185:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setOperatorContractPanicButton", + "scope": 4642, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 4460, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4417, + "name": "ElementaryTypeName", + "src": "4887:7:12" + } + ], + "id": 4418, + "name": "VariableDeclaration", + "src": "4887:25:12" + }, + { + "attributes": { + "constant": false, + "name": "_panicButton", + "scope": 4460, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4419, + "name": "ElementaryTypeName", + "src": "4922:7:12" + } + ], + "id": 4420, + "name": "VariableDeclaration", + "src": "4922:20:12" + } + ], + "id": 4421, + "name": "ParameterList", + "src": "4877:71:12" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4427, + "name": "ParameterList", + "src": "5014:0:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4349, + "type": "modifier (address)", + "value": "onlyForApprovedContract" + }, + "id": 4422, + "name": "Identifier", + "src": "4956:23:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4418, + "type": "address", + "value": "_operatorContract" + }, + "id": 4423, + "name": "Identifier", + "src": "4980:17:12" + } + ], + "id": 4424, + "name": "ModifierInvocation", + "src": "4956:42:12" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4282, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 4425, + "name": "Identifier", + "src": "4999:14:12" + } + ], + "id": 4426, + "name": "ModifierInvocation", + "src": "4999:14:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8d1b9aaf1a91db2554cb251884681dc026fd3d7a153bea70c79e510a6a54dd87", + "typeString": "literal_string \"Disabled panic button cannot be updated\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 4428, + "name": "Identifier", + "src": "5024:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4214, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 4429, + "name": "Identifier", + "src": "5045:12:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4418, + "type": "address", + "value": "_operatorContract" + }, + "id": 4430, + "name": "Identifier", + "src": "5058:17:12" + } + ], + "id": 4431, + "name": "IndexAccess", + "src": "5045:31:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 4432, + "name": "ElementaryTypeNameExpression", + "src": "5080:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 4433, + "name": "Literal", + "src": "5088:1:12" + } + ], + "id": 4434, + "name": "FunctionCall", + "src": "5080:10:12" + } + ], + "id": 4435, + "name": "BinaryOperation", + "src": "5045:45:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "44697361626c65642070616e696320627574746f6e2063616e6e6f742062652075706461746564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Disabled panic button cannot be updated\"", + "value": "Disabled panic button cannot be updated" + }, + "id": 4436, + "name": "Literal", + "src": "5104:41:12" + } + ], + "id": 4437, + "name": "FunctionCall", + "src": "5024:131:12" + } + ], + "id": 4438, + "name": "ExpressionStatement", + "src": "5024:131:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e5a7b2a0d032ae56f5d1e30bd631d28945ee32864ebe6c7d1d2b0c4e8cc78eb5", + "typeString": "literal_string \"Panic button must be non-zero address\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 4439, + "name": "Identifier", + "src": "5165:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4420, + "type": "address", + "value": "_panicButton" + }, + "id": 4440, + "name": "Identifier", + "src": "5186:12:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 4441, + "name": "ElementaryTypeNameExpression", + "src": "5202:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 4442, + "name": "Literal", + "src": "5210:1:12" + } + ], + "id": 4443, + "name": "FunctionCall", + "src": "5202:10:12" + } + ], + "id": 4444, + "name": "BinaryOperation", + "src": "5186:26:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "50616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Panic button must be non-zero address\"", + "value": "Panic button must be non-zero address" + }, + "id": 4445, + "name": "Literal", + "src": "5226:39:12" + } + ], + "id": 4446, + "name": "FunctionCall", + "src": "5165:110:12" + } + ], + "id": 4447, + "name": "ExpressionStatement", + "src": "5165:110:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4214, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 4448, + "name": "Identifier", + "src": "5286:12:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4418, + "type": "address", + "value": "_operatorContract" + }, + "id": 4449, + "name": "Identifier", + "src": "5299:17:12" + } + ], + "id": 4450, + "name": "IndexAccess", + "src": "5286:31:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4420, + "type": "address", + "value": "_panicButton" + }, + "id": 4451, + "name": "Identifier", + "src": "5320:12:12" + } + ], + "id": 4452, + "name": "Assignment", + "src": "5286:46:12" + } + ], + "id": 4453, + "name": "ExpressionStatement", + "src": "5286:46:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 4258, + "type": "function (address,address)", + "value": "OperatorContractPanicButtonUpdated" + }, + "id": 4454, + "name": "Identifier", + "src": "5348:34:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4418, + "type": "address", + "value": "_operatorContract" + }, + "id": 4455, + "name": "Identifier", + "src": "5396:17:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4420, + "type": "address", + "value": "_panicButton" + }, + "id": 4456, + "name": "Identifier", + "src": "5427:12:12" + } + ], + "id": 4457, + "name": "FunctionCall", + "src": "5348:101:12" + } + ], + "id": 4458, + "name": "EmitStatement", + "src": "5343:106:12" + } + ], + "id": 4459, + "name": "Block", + "src": "5014:442:12" + } + ], + "id": 4460, + "name": "FunctionDefinition", + "src": "4838:618:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "disableOperatorContractPanicButton", + "scope": 4642, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 4494, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4461, + "name": "ElementaryTypeName", + "src": "5506:7:12" + } + ], + "id": 4462, + "name": "VariableDeclaration", + "src": "5506:25:12" + } + ], + "id": 4463, + "name": "ParameterList", + "src": "5505:27:12" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4469, + "name": "ParameterList", + "src": "5626:0:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4349, + "type": "modifier (address)", + "value": "onlyForApprovedContract" + }, + "id": 4464, + "name": "Identifier", + "src": "5556:23:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4462, + "type": "address", + "value": "_operatorContract" + }, + "id": 4465, + "name": "Identifier", + "src": "5580:17:12" + } + ], + "id": 4466, + "name": "ModifierInvocation", + "src": "5556:42:12" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4282, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 4467, + "name": "Identifier", + "src": "5607:14:12" + } + ], + "id": 4468, + "name": "ModifierInvocation", + "src": "5607:14:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bb534723a179d6568d886b637fa707371e8c13170fa009941c10391cd4682512", + "typeString": "literal_string \"Panic button already disabled\"" + } + ], + "overloadedDeclarations": [28149, 28150], + "referencedDeclaration": 28150, + "type": "function (bool,string memory) pure", + "value": "require" + }, + "id": 4470, + "name": "Identifier", + "src": "5636:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "!=", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4214, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 4471, + "name": "Identifier", + "src": "5657:12:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4462, + "type": "address", + "value": "_operatorContract" + }, + "id": 4472, + "name": "Identifier", + "src": "5670:17:12" + } + ], + "id": 4473, + "name": "IndexAccess", + "src": "5657:31:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 4474, + "name": "ElementaryTypeNameExpression", + "src": "5692:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 4475, + "name": "Literal", + "src": "5700:1:12" + } + ], + "id": 4476, + "name": "FunctionCall", + "src": "5692:10:12" + } + ], + "id": 4477, + "name": "BinaryOperation", + "src": "5657:45:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "50616e696320627574746f6e20616c72656164792064697361626c6564", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "string", + "type": "literal_string \"Panic button already disabled\"", + "value": "Panic button already disabled" + }, + "id": 4478, + "name": "Literal", + "src": "5716:31:12" + } + ], + "id": 4479, + "name": "FunctionCall", + "src": "5636:121:12" + } + ], + "id": 4480, + "name": "ExpressionStatement", + "src": "5636:121:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4214, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 4481, + "name": "Identifier", + "src": "5768:12:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4462, + "type": "address", + "value": "_operatorContract" + }, + "id": 4482, + "name": "Identifier", + "src": "5781:17:12" + } + ], + "id": 4483, + "name": "IndexAccess", + "src": "5768:31:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "address payable", + "type_conversion": true + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "type": "type(address)", + "value": "address" + }, + "id": 4484, + "name": "ElementaryTypeNameExpression", + "src": "5802:7:12" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "30", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 0", + "value": "0" + }, + "id": 4485, + "name": "Literal", + "src": "5810:1:12" + } + ], + "id": 4486, + "name": "FunctionCall", + "src": "5802:10:12" + } + ], + "id": 4487, + "name": "Assignment", + "src": "5768:44:12" + } + ], + "id": 4488, + "name": "ExpressionStatement", + "src": "5768:44:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 4252, + "type": "function (address)", + "value": "OperatorContractPanicButtonDisabled" + }, + "id": 4489, + "name": "Identifier", + "src": "5828:35:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4462, + "type": "address", + "value": "_operatorContract" + }, + "id": 4490, + "name": "Identifier", + "src": "5864:17:12" + } + ], + "id": 4491, + "name": "FunctionCall", + "src": "5828:54:12" + } + ], + "id": 4492, + "name": "EmitStatement", + "src": "5823:59:12" + } + ], + "id": 4493, + "name": "Block", + "src": "5626:263:12" + } + ], + "id": 4494, + "name": "FunctionDefinition", + "src": "5462:427:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setOperatorContractUpgrader", + "scope": 4642, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_serviceContract", + "scope": 4515, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4495, + "name": "ElementaryTypeName", + "src": "5941:7:12" + } + ], + "id": 4496, + "name": "VariableDeclaration", + "src": "5941:24:12" + }, + { + "attributes": { + "constant": false, + "name": "_operatorContractUpgrader", + "scope": 4515, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4497, + "name": "ElementaryTypeName", + "src": "5975:7:12" + } + ], + "id": 4498, + "name": "VariableDeclaration", + "src": "5975:33:12" + } + ], + "id": 4499, + "name": "ParameterList", + "src": "5931:83:12" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4502, + "name": "ParameterList", + "src": "6037:0:12" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4282, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 4500, + "name": "Identifier", + "src": "6022:14:12" + } + ], + "id": 4501, + "name": "ModifierInvocation", + "src": "6022:14:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4220, + "type": "mapping(address => address)", + "value": "operatorContractUpgraders" + }, + "id": 4503, + "name": "Identifier", + "src": "6047:25:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4496, + "type": "address", + "value": "_serviceContract" + }, + "id": 4504, + "name": "Identifier", + "src": "6073:16:12" + } + ], + "id": 4505, + "name": "IndexAccess", + "src": "6047:43:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4498, + "type": "address", + "value": "_operatorContractUpgrader" + }, + "id": 4506, + "name": "Identifier", + "src": "6093:25:12" + } + ], + "id": 4507, + "name": "Assignment", + "src": "6047:71:12" + } + ], + "id": 4508, + "name": "ExpressionStatement", + "src": "6047:71:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 4264, + "type": "function (address,address)", + "value": "OperatorContractUpgraderUpdated" + }, + "id": 4509, + "name": "Identifier", + "src": "6133:31:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4496, + "type": "address", + "value": "_serviceContract" + }, + "id": 4510, + "name": "Identifier", + "src": "6178:16:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4498, + "type": "address", + "value": "_operatorContractUpgrader" + }, + "id": 4511, + "name": "Identifier", + "src": "6208:25:12" + } + ], + "id": 4512, + "name": "FunctionCall", + "src": "6133:110:12" + } + ], + "id": 4513, + "name": "EmitStatement", + "src": "6128:115:12" + } + ], + "id": 4514, + "name": "Block", + "src": "6037:213:12" + } + ], + "id": 4515, + "name": "FunctionDefinition", + "src": "5895:355:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "setServiceContractUpgrader", + "scope": 4642, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 4536, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4516, + "name": "ElementaryTypeName", + "src": "6301:7:12" + } + ], + "id": 4517, + "name": "VariableDeclaration", + "src": "6301:25:12" + }, + { + "attributes": { + "constant": false, + "name": "_serviceContractUpgrader", + "scope": 4536, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4518, + "name": "ElementaryTypeName", + "src": "6336:7:12" + } + ], + "id": 4519, + "name": "VariableDeclaration", + "src": "6336:32:12" + } + ], + "id": 4520, + "name": "ParameterList", + "src": "6291:83:12" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4523, + "name": "ParameterList", + "src": "6397:0:12" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4282, + "type": "modifier ()", + "value": "onlyGovernance" + }, + "id": 4521, + "name": "Identifier", + "src": "6382:14:12" + } + ], + "id": 4522, + "name": "ModifierInvocation", + "src": "6382:14:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4224, + "type": "mapping(address => address)", + "value": "serviceContractUpgraders" + }, + "id": 4524, + "name": "Identifier", + "src": "6407:24:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4517, + "type": "address", + "value": "_operatorContract" + }, + "id": 4525, + "name": "Identifier", + "src": "6432:17:12" + } + ], + "id": 4526, + "name": "IndexAccess", + "src": "6407:43:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4519, + "type": "address", + "value": "_serviceContractUpgrader" + }, + "id": 4527, + "name": "Identifier", + "src": "6453:24:12" + } + ], + "id": 4528, + "name": "Assignment", + "src": "6407:70:12" + } + ], + "id": 4529, + "name": "ExpressionStatement", + "src": "6407:70:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 4270, + "type": "function (address,address)", + "value": "ServiceContractUpgraderUpdated" + }, + "id": 4530, + "name": "Identifier", + "src": "6492:30:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4517, + "type": "address", + "value": "_operatorContract" + }, + "id": 4531, + "name": "Identifier", + "src": "6536:17:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4519, + "type": "address", + "value": "_serviceContractUpgrader" + }, + "id": 4532, + "name": "Identifier", + "src": "6567:24:12" + } + ], + "id": 4533, + "name": "FunctionCall", + "src": "6492:109:12" + } + ], + "id": 4534, + "name": "EmitStatement", + "src": "6487:114:12" + } + ], + "id": 4535, + "name": "Block", + "src": "6397:211:12" + } + ], + "id": 4536, + "name": "FunctionDefinition", + "src": "6256:352:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "approveOperatorContract", + "scope": 4642, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorContract", + "scope": 4564, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4537, + "name": "ElementaryTypeName", + "src": "6647:7:12" + } + ], + "id": 4538, + "name": "VariableDeclaration", + "src": "6647:24:12" + } + ], + "id": 4539, + "name": "ParameterList", + "src": "6646:26:12" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4545, + "name": "ParameterList", + "src": "6764:0:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4336, + "type": "modifier (address)", + "value": "onlyForNewContract" + }, + "id": 4540, + "name": "Identifier", + "src": "6696:18:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4538, + "type": "address", + "value": "operatorContract" + }, + "id": 4541, + "name": "Identifier", + "src": "6715:16:12" + } + ], + "id": 4542, + "name": "ModifierInvocation", + "src": "6696:36:12" + }, + { + "attributes": { + "arguments": null + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4294, + "type": "modifier ()", + "value": "onlyRegistryKeeper" + }, + "id": 4543, + "name": "Identifier", + "src": "6741:18:12" + } + ], + "id": 4544, + "name": "ModifierInvocation", + "src": "6741:18:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4228, + "type": "mapping(address => enum KeepRegistry.ContractStatus)", + "value": "operatorContracts" + }, + "id": 4546, + "name": "Identifier", + "src": "6774:17:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4538, + "type": "address", + "value": "operatorContract" + }, + "id": 4547, + "name": "Identifier", + "src": "6792:16:12" + } + ], + "id": 4548, + "name": "IndexAccess", + "src": "6774:35:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "Approved", + "referencedDeclaration": null, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4206, + "type": "type(enum KeepRegistry.ContractStatus)", + "value": "ContractStatus" + }, + "id": 4549, + "name": "Identifier", + "src": "6812:14:12" + } + ], + "id": 4550, + "name": "MemberAccess", + "src": "6812:23:12" + } + ], + "id": 4551, + "name": "Assignment", + "src": "6774:61:12" + } + ], + "id": 4552, + "name": "ExpressionStatement", + "src": "6774:61:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4214, + "type": "mapping(address => address)", + "value": "panicButtons" + }, + "id": 4553, + "name": "Identifier", + "src": "6845:12:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4538, + "type": "address", + "value": "operatorContract" + }, + "id": 4554, + "name": "Identifier", + "src": "6858:16:12" + } + ], + "id": 4555, + "name": "IndexAccess", + "src": "6845:30:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4216, + "type": "address", + "value": "defaultPanicButton" + }, + "id": 4556, + "name": "Identifier", + "src": "6878:18:12" + } + ], + "id": 4557, + "name": "Assignment", + "src": "6845:51:12" + } + ], + "id": 4558, + "name": "ExpressionStatement", + "src": "6845:51:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 4232, + "type": "function (address)", + "value": "OperatorContractApproved" + }, + "id": 4559, + "name": "Identifier", + "src": "6911:24:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4538, + "type": "address", + "value": "operatorContract" + }, + "id": 4560, + "name": "Identifier", + "src": "6936:16:12" + } + ], + "id": 4561, + "name": "FunctionCall", + "src": "6911:42:12" + } + ], + "id": 4562, + "name": "EmitStatement", + "src": "6906:47:12" + } + ], + "id": 4563, + "name": "Block", + "src": "6764:196:12" + } + ], + "id": 4564, + "name": "FunctionDefinition", + "src": "6614:346:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "name": "disableOperatorContract", + "scope": 4642, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorContract", + "scope": 4587, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4565, + "name": "ElementaryTypeName", + "src": "6999:7:12" + } + ], + "id": 4566, + "name": "VariableDeclaration", + "src": "6999:24:12" + } + ], + "id": 4567, + "name": "ParameterList", + "src": "6998:26:12" + }, + { + "attributes": { + "parameters": [null] + }, + "children": [], + "id": 4574, + "name": "ParameterList", + "src": "7136:0:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4349, + "type": "modifier (address)", + "value": "onlyForApprovedContract" + }, + "id": 4568, + "name": "Identifier", + "src": "7048:23:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4566, + "type": "address", + "value": "operatorContract" + }, + "id": 4569, + "name": "Identifier", + "src": "7072:16:12" + } + ], + "id": 4570, + "name": "ModifierInvocation", + "src": "7048:41:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4323, + "type": "modifier (address)", + "value": "onlyPanicButton" + }, + "id": 4571, + "name": "Identifier", + "src": "7098:15:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4566, + "type": "address", + "value": "operatorContract" + }, + "id": 4572, + "name": "Identifier", + "src": "7114:16:12" + } + ], + "id": 4573, + "name": "ModifierInvocation", + "src": "7098:33:12" + }, + { + "children": [ + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4228, + "type": "mapping(address => enum KeepRegistry.ContractStatus)", + "value": "operatorContracts" + }, + "id": 4575, + "name": "Identifier", + "src": "7146:17:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4566, + "type": "address", + "value": "operatorContract" + }, + "id": 4576, + "name": "Identifier", + "src": "7164:16:12" + } + ], + "id": 4577, + "name": "IndexAccess", + "src": "7146:35:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "Disabled", + "referencedDeclaration": null, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4206, + "type": "type(enum KeepRegistry.ContractStatus)", + "value": "ContractStatus" + }, + "id": 4578, + "name": "Identifier", + "src": "7184:14:12" + } + ], + "id": 4579, + "name": "MemberAccess", + "src": "7184:23:12" + } + ], + "id": 4580, + "name": "Assignment", + "src": "7146:61:12" + } + ], + "id": 4581, + "name": "ExpressionStatement", + "src": "7146:61:12" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [null], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [null], + "referencedDeclaration": 4236, + "type": "function (address)", + "value": "OperatorContractDisabled" + }, + "id": 4582, + "name": "Identifier", + "src": "7222:24:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4566, + "type": "address", + "value": "operatorContract" + }, + "id": 4583, + "name": "Identifier", + "src": "7247:16:12" + } + ], + "id": 4584, + "name": "FunctionCall", + "src": "7222:42:12" + } + ], + "id": 4585, + "name": "EmitStatement", + "src": "7217:47:12" + } + ], + "id": 4586, + "name": "Block", + "src": "7136:135:12" + } + ], + "id": 4587, + "name": "FunctionDefinition", + "src": "6966:305:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "isNewOperatorContract", + "scope": 4642, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorContract", + "scope": 4602, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4588, + "name": "ElementaryTypeName", + "src": "7308:7:12" + } + ], + "id": 4589, + "name": "VariableDeclaration", + "src": "7308:24:12" + } + ], + "id": 4590, + "name": "ParameterList", + "src": "7307:26:12" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 4602, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 4591, + "name": "ElementaryTypeName", + "src": "7379:4:12" + } + ], + "id": 4592, + "name": "VariableDeclaration", + "src": "7379:4:12" + } + ], + "id": 4593, + "name": "ParameterList", + "src": "7378:6:12" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 4593 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4228, + "type": "mapping(address => enum KeepRegistry.ContractStatus)", + "value": "operatorContracts" + }, + "id": 4594, + "name": "Identifier", + "src": "7406:17:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4589, + "type": "address", + "value": "operatorContract" + }, + "id": 4595, + "name": "Identifier", + "src": "7424:16:12" + } + ], + "id": 4596, + "name": "IndexAccess", + "src": "7406:35:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "New", + "referencedDeclaration": null, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4206, + "type": "type(enum KeepRegistry.ContractStatus)", + "value": "ContractStatus" + }, + "id": 4597, + "name": "Identifier", + "src": "7445:14:12" + } + ], + "id": 4598, + "name": "MemberAccess", + "src": "7445:18:12" + } + ], + "id": 4599, + "name": "BinaryOperation", + "src": "7406:57:12" + } + ], + "id": 4600, + "name": "Return", + "src": "7399:64:12" + } + ], + "id": 4601, + "name": "Block", + "src": "7389:81:12" + } + ], + "id": 4602, + "name": "FunctionDefinition", + "src": "7277:193:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "isApprovedOperatorContract", + "scope": 4642, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "operatorContract", + "scope": 4617, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4603, + "name": "ElementaryTypeName", + "src": "7512:7:12" + } + ], + "id": 4604, + "name": "VariableDeclaration", + "src": "7512:24:12" + } + ], + "id": 4605, + "name": "ParameterList", + "src": "7511:26:12" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 4617, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 4606, + "name": "ElementaryTypeName", + "src": "7583:4:12" + } + ], + "id": 4607, + "name": "VariableDeclaration", + "src": "7583:4:12" + } + ], + "id": 4608, + "name": "ParameterList", + "src": "7582:6:12" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 4608 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_ContractStatus_$4206", + "typeString": "enum KeepRegistry.ContractStatus" + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "==", + "type": "bool" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4228, + "type": "mapping(address => enum KeepRegistry.ContractStatus)", + "value": "operatorContracts" + }, + "id": 4609, + "name": "Identifier", + "src": "7610:17:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4604, + "type": "address", + "value": "operatorContract" + }, + "id": 4610, + "name": "Identifier", + "src": "7628:16:12" + } + ], + "id": 4611, + "name": "IndexAccess", + "src": "7610:35:12" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "member_name": "Approved", + "referencedDeclaration": null, + "type": "enum KeepRegistry.ContractStatus" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4206, + "type": "type(enum KeepRegistry.ContractStatus)", + "value": "ContractStatus" + }, + "id": 4612, + "name": "Identifier", + "src": "7649:14:12" + } + ], + "id": 4613, + "name": "MemberAccess", + "src": "7649:23:12" + } + ], + "id": 4614, + "name": "BinaryOperation", + "src": "7610:62:12" + } + ], + "id": 4615, + "name": "Return", + "src": "7603:69:12" + } + ], + "id": 4616, + "name": "Block", + "src": "7593:86:12" + } + ], + "id": 4617, + "name": "FunctionDefinition", + "src": "7476:203:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "operatorContractUpgraderFor", + "scope": 4642, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_serviceContract", + "scope": 4629, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4618, + "name": "ElementaryTypeName", + "src": "7722:7:12" + } + ], + "id": 4619, + "name": "VariableDeclaration", + "src": "7722:24:12" + } + ], + "id": 4620, + "name": "ParameterList", + "src": "7721:26:12" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 4629, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4621, + "name": "ElementaryTypeName", + "src": "7793:7:12" + } + ], + "id": 4622, + "name": "VariableDeclaration", + "src": "7793:7:12" + } + ], + "id": 4623, + "name": "ParameterList", + "src": "7792:9:12" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 4623 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4220, + "type": "mapping(address => address)", + "value": "operatorContractUpgraders" + }, + "id": 4624, + "name": "Identifier", + "src": "7823:25:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4619, + "type": "address", + "value": "_serviceContract" + }, + "id": 4625, + "name": "Identifier", + "src": "7849:16:12" + } + ], + "id": 4626, + "name": "IndexAccess", + "src": "7823:43:12" + } + ], + "id": 4627, + "name": "Return", + "src": "7816:50:12" + } + ], + "id": 4628, + "name": "Block", + "src": "7806:67:12" + } + ], + "id": 4629, + "name": "FunctionDefinition", + "src": "7685:188:12" + }, + { + "attributes": { + "documentation": null, + "implemented": true, + "isConstructor": false, + "kind": "function", + "modifiers": [null], + "name": "serviceContractUpgraderFor", + "scope": 4642, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_operatorContract", + "scope": 4641, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4630, + "name": "ElementaryTypeName", + "src": "7915:7:12" + } + ], + "id": 4631, + "name": "VariableDeclaration", + "src": "7915:25:12" + } + ], + "id": 4632, + "name": "ParameterList", + "src": "7914:27:12" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "", + "scope": 4641, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "stateMutability": "nonpayable", + "type": "address" + }, + "id": 4633, + "name": "ElementaryTypeName", + "src": "7987:7:12" + } + ], + "id": 4634, + "name": "VariableDeclaration", + "src": "7987:7:12" + } + ], + "id": 4635, + "name": "ParameterList", + "src": "7986:9:12" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 4635 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "type": "address" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4224, + "type": "mapping(address => address)", + "value": "serviceContractUpgraders" + }, + "id": 4636, + "name": "Identifier", + "src": "8017:24:12" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [null], + "referencedDeclaration": 4631, + "type": "address", + "value": "_operatorContract" + }, + "id": 4637, + "name": "Identifier", + "src": "8042:17:12" + } + ], + "id": 4638, + "name": "IndexAccess", + "src": "8017:43:12" + } + ], + "id": 4639, + "name": "Return", + "src": "8010:50:12" + } + ], + "id": 4640, + "name": "Block", + "src": "8000:67:12" + } + ], + "id": 4641, + "name": "FunctionDefinition", + "src": "7879:188:12" + } + ], + "id": 4642, + "name": "ContractDefinition", + "src": "120:7949:12" + } + ], + "id": 4643, + "name": "SourceUnit", + "src": "0:8070:12" + }, + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.3.4", + "updatedAt": "2022-04-22T14:06:35.563Z", + "devdoc": { + "methods": {}, + "title": "KeepRegistry" + }, + "userdoc": { + "methods": {}, + "notice": "Governance owned registry of approved contracts and roles." + } +} diff --git a/external/goerli/KeepToken.json b/external/goerli/KeepToken.json new file mode 100644 index 00000000..b8d7aeb3 --- /dev/null +++ b/external/goerli/KeepToken.json @@ -0,0 +1,430 @@ +{ + "address": "0x22647FfAe391540d584599818CA22fdF18890753", + "contractName": "KeepToken", + "abi": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "DECIMALS", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "INITIAL_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "SYMBOL", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_extraData", + "type": "bytes" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/external/goerli/KeepTokenStaking.json b/external/goerli/KeepTokenStaking.json new file mode 100644 index 00000000..4ed2cf0b --- /dev/null +++ b/external/goerli/KeepTokenStaking.json @@ -0,0 +1,916 @@ +{ + "address": "0x73A63e2Be2D911dc7eFAc189Bfdf48FbB6532B5b", + "contractName": "TokenStaking", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ERC20Burnable", + "name": "_token", + "type": "address" + }, + { + "internalType": "contract TokenGrant", + "name": "_tokenGrant", + "type": "address" + }, + { + "internalType": "contract TokenStakingEscrow", + "name": "_escrow", + "type": "address" + }, + { + "internalType": "contract KeepRegistry", + "name": "_registry", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_initializationPeriod", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "lockCreator", + "type": "address" + } + ], + "name": "ExpiredLockReleased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "lockCreator", + "type": "address" + } + ], + "name": "LockReleased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "authorizer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "OperatorStaked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "RecoveredStake", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "StakeDelegated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "lockCreator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "until", + "type": "uint256" + } + ], + "name": "StakeLocked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "StakeOwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensSeized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokensSlashed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newAmount", + "type": "uint256" + } + ], + "name": "TopUpCompleted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "topUp", + "type": "uint256" + } + ], + "name": "TopUpInitiated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "undelegatedAt", + "type": "uint256" + } + ], + "name": "Undelegated", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "activeStake", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "authorizeOperatorContract", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "authorizerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "beneficiaryOf", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "cancelStake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "delegatedAuthoritySource", + "type": "address" + } + ], + "name": "claimDelegatedAuthority", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "commitTopUp", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "deployedAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "eligibleStake", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "getAuthoritySource", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "getDelegationInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "undelegatedAt", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "getLocks", + "outputs": [ + { + "internalType": "address[]", + "name": "creators", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "expirations", + "type": "uint256[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "staker", + "type": "address" + }, + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "hasMinimumStake", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "initializationPeriod", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "isApprovedOperatorContract", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "address", + "name": "_operatorContract", + "type": "address" + } + ], + "name": "isAuthorizedForOperator", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isStakeLocked", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "name": "lockStake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "minimumStake", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_extraData", + "type": "bytes" + } + ], + "name": "receiveApproval", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "recoverStake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "operatorContract", + "type": "address" + } + ], + "name": "releaseExpiredLock", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amountToSeize", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardMultiplier", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tattletale", + "type": "address" + }, + { + "internalType": "address[]", + "name": "misbehavedOperators", + "type": "address[]" + } + ], + "name": "seize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amountToSlash", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "misbehavedOperators", + "type": "address[]" + } + ], + "name": "slash", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferStakeOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "undelegate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_undelegationTimestamp", + "type": "uint256" + } + ], + "name": "undelegateAt", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "undelegationPeriod", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "unlockStake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ] +} diff --git a/hardhat.config.ts b/hardhat.config.ts index d98a1b00..e5b5a995 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -94,26 +94,11 @@ const config: HardhatUserConfig = { }, }, external: { - contracts: [ - { - // Due to a limitation of `hardhat-deploy` plugin, we have - // to modify the artifacts imported from NPM. Please see - // `scripts/prepare-dependencies.sh` for details. - artifacts: "external/npm/@keep-network/keep-core/artifacts", - // Example if we want to use deployment scripts from external package: - // deploy: "node_modules/@keep-network/keep-core/deploy", - }, - ], deployments: { // For hardhat environment we can fork the mainnet, so we need to point it // to the contract artifacts. hardhat: process.env.FORKING_URL ? ["./external/mainnet"] : [], - // For development environment we expect the local dependencies to be linked - // with `yarn link` command, uncomment the line below to use the linked - // dependencies. - // development: ["external/npm/@keep-network/keep-core/artifacts"], - ropsten: ["external/npm/@keep-network/keep-core/artifacts"], - goerli: ["external/npm/@keep-network/keep-core/artifacts"], + goerli: ["./external/goerli"], mainnet: ["./external/mainnet"], }, }, diff --git a/package.json b/package.json index dbc63396..0c14630f 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "lint:sol": "solhint 'contracts/**/*.sol'", "test": "hardhat test", "test:system": "NODE_ENV=system-test hardhat test ./test/system/*.test.js", - "postinstall": "./scripts/prepare-dependencies.sh $INIT_CWD", "prepack": "tsc -p tsconfig.export.json && hardhat export-artifacts export/artifacts", "prepublishOnly": "hardhat prepare-artifacts --network $npm_config_network" }, diff --git a/scripts/prepare-dependencies.sh b/scripts/prepare-dependencies.sh deleted file mode 100755 index 168e4b62..00000000 --- a/scripts/prepare-dependencies.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -set -eo pipefail - -# In this repository we define `TokenStaking` contract which overlaps -# with the contract artifact from `@keep-network/keep-core`. We want to -# use both artifacts in the deployment scripts, so we have to rename -# the artifact imported from `@keep-network/keep-core`. -# -# This is a workaround for hardhat-deploy plugin limitation: -# https://github.com/wighawag/hardhat-deploy/issues/241 - -printf "Preparing dependencies artifacts\n" - -# If scripts is invoked in other projects during NPM package dependency installation -# it may be needed to specify path for the module (e.g. when using Yarn). -ROOT_DIR=${1:-$(realpath $(dirname $0)/../)} - -printf "Root directory: $ROOT_DIR\n" - -SOURCE_DIR="$ROOT_DIR/node_modules/@keep-network/keep-core/artifacts" -DESTINATION_DIR="$ROOT_DIR/external/npm/@keep-network/keep-core" - -printf "Source directory: $SOURCE_DIR\n" -printf "Destination directory: $DESTINATION_DIR\n" - -mkdir -p $DESTINATION_DIR -cp -r $SOURCE_DIR $DESTINATION_DIR - -SOURCE_FILE="$DESTINATION_DIR/artifacts/TokenStaking.json" -DESTINATION_FILE="$DESTINATION_DIR/artifacts/KeepTokenStaking.json" - -if [ -f "$SOURCE_FILE" ]; then - mv $SOURCE_FILE $DESTINATION_FILE -else - echo "artifact for @keep-network/keep-core/TokenStaking.json not found" -fi