{
  "contractName": "EVMScriptRegistry",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "REGISTRY_ADD_EXECUTOR_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRecoveryVault",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "name": "allowRecoverability",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "transferToVault",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "_params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "REGISTRY_MANAGER_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isPetrified",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "executors",
      "outputs": [
        {
          "name": "executor",
          "type": "address"
        },
        {
          "name": "enabled",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executorId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "executorAddress",
          "type": "address"
        }
      ],
      "name": "EnableExecutor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executorId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "executorAddress",
          "type": "address"
        }
      ],
      "name": "DisableExecutor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "script",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "input",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ScriptResult",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "vault",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "RecoverToVault",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executor",
          "type": "address"
        }
      ],
      "name": "addScriptExecutor",
      "outputs": [
        {
          "name": "id",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executorId",
          "type": "uint256"
        }
      ],
      "name": "disableScriptExecutor",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_executorId",
          "type": "uint256"
        }
      ],
      "name": "enableScriptExecutor",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"_script\",\"type\":\"bytes\"}],\"name\":\"getScriptExecutor\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"hasInitialized\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"REGISTRY_ADD_EXECUTOR_ROLE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_script\",\"type\":\"bytes\"}],\"name\":\"getEVMScriptExecutor\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRecoveryVault\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_executorId\",\"type\":\"uint256\"}],\"name\":\"disableScriptExecutor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"token\",\"type\":\"address\"}],\"name\":\"allowRecoverability\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"appId\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_executor\",\"type\":\"address\"}],\"name\":\"addScriptExecutor\",\"outputs\":[{\"name\":\"id\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getInitializationBlock\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"transferToVault\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_sender\",\"type\":\"address\"},{\"name\":\"_role\",\"type\":\"bytes32\"},{\"name\":\"_params\",\"type\":\"uint256[]\"}],\"name\":\"canPerform\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEVMScriptRegistry\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"REGISTRY_MANAGER_ROLE\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_executorId\",\"type\":\"uint256\"}],\"name\":\"enableScriptExecutor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"kernel\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPetrified\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"executors\",\"outputs\":[{\"name\":\"executor\",\"type\":\"address\"},{\"name\":\"enabled\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"executorId\",\"type\":\"uint256\"},{\"indexed\":true,\"name\":\"executorAddress\",\"type\":\"address\"}],\"name\":\"EnableExecutor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"executorId\",\"type\":\"uint256\"},{\"indexed\":true,\"name\":\"executorAddress\",\"type\":\"address\"}],\"name\":\"DisableExecutor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"script\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"input\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"ScriptResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RecoverToVault\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"addScriptExecutor(address)\":{\"params\":{\"_executor\":\"Address of the IEVMScriptExecutor that will be added to the registry\"},\"return\":\"id Identifier of the executor in the registry\"},\"allowRecoverability(address)\":{\"details\":\"By default deriving from AragonApp makes it recoverable\",\"params\":{\"token\":\"Token address that would be recovered\"},\"return\":\"bool whether the app allows the recovery\"},\"canPerform(address,bytes32,uint256[])\":{\"details\":\"Check whether an action can be performed by a sender for a particular role on this app\",\"params\":{\"_params\":\"Permission params for the role\",\"_role\":\"Role on this app\",\"_sender\":\"Sender of the call\"},\"return\":\"Boolean indicating whether the sender has the permissions to perform the action.        Always returns false if the app hasn't been initialized yet.\"},\"disableScriptExecutor(uint256)\":{\"params\":{\"_executorId\":\"Identifier of the executor in the registry\"}},\"enableScriptExecutor(uint256)\":{\"params\":{\"_executorId\":\"Identifier of the executor in the registry\"}},\"getInitializationBlock()\":{\"return\":\"Block number in which the contract was initialized\"},\"getRecoveryVault()\":{\"details\":\"Get the recovery vault for the app\",\"return\":\"Recovery vault address for the app\"},\"getScriptExecutor(bytes)\":{\"details\":\"Get the script executor that can execute a particular script based on its first 4 bytes\",\"params\":{\"_script\":\"EVMScript being inspected\"}},\"hasInitialized()\":{\"return\":\"Whether the contract has been initialized by the time of the current block\"},\"transferToVault(address)\":{\"params\":{\"_token\":\"Token balance to be sent to recovery vault.\"}}}},\"userdoc\":{\"methods\":{\"addScriptExecutor(address)\":{\"notice\":\"Add a new script executor with address `_executor` to the registry\"},\"disableScriptExecutor(uint256)\":{\"notice\":\"Disable script executor with ID `_executorId`\"},\"enableScriptExecutor(uint256)\":{\"notice\":\"Enable script executor with ID `_executorId`\"},\"initialize()\":{\"notice\":\"Initialize the registry\"},\"transferToVault(address)\":{\"notice\":\"Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them.\"}}}},\"settings\":{\"compilationTarget\":{\"@aragon/os/contracts/evmscript/EVMScriptRegistry.sol\":\"EVMScriptRegistry\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@aragon/os/contracts/acl/ACLSyntaxSugar.sol\":{\"keccak256\":\"0x519915c14576b679b5ed5767d6b21b44a13aa7ae2fe7b33664ca364fafc33e00\",\"urls\":[\"bzzr://8d899afdbf161eaa5e6ce6a68d9ea420c3f98a00a71d70b293e8de8771e6aa62\"]},\"@aragon/os/contracts/acl/IACL.sol\":{\"keccak256\":\"0xe3492bc29d2482e65d2e39c96487b5388f6181f6bcdc6fe6329b8206b84c0cf1\",\"urls\":[\"bzzr://3af0b7e423c7ff4100a3b5868203ec169c866328f2d93d3b6a2111e916cdc411\"]},\"@aragon/os/contracts/apps/AppStorage.sol\":{\"keccak256\":\"0xb1c8eb71d1bdfe1241cc1714b280b46bbfc5bcb1e8499d42c24d3f5f5e8130f1\",\"urls\":[\"bzzr://503beec9e0e19834cb685a1d037eb9caaa412e3709d90bf6e53f51d143d58029\"]},\"@aragon/os/contracts/apps/AragonApp.sol\":{\"keccak256\":\"0xba456000d65bea8d9d82e9f1789086c3777df68fe364f8f397973b6d579f3a2a\",\"urls\":[\"bzzr://85ae9658277830a9454e34e319f8fbcb27d4e015d3bb1219c4d42ec33b9a184e\"]},\"@aragon/os/contracts/common/Autopetrified.sol\":{\"keccak256\":\"0x216e6ecbdcf45d90e8846ab2773072bd82180558a7dcf0c5425ed13b0188c5f3\",\"urls\":[\"bzzr://95b7ec6b2e8d3d8cd8c02f9be8b17d715c48a35445ba194429cca5264bfd0435\"]},\"@aragon/os/contracts/common/ConversionHelpers.sol\":{\"keccak256\":\"0x9872383d458352f5c68fa5afd1fc84ab6b172cbee33359cfa57655b8eda92416\",\"urls\":[\"bzzr://4636d13fecb497561ff5a2c54bb936a0339308bffa4e71a988b8ce00dcc249f3\"]},\"@aragon/os/contracts/common/EtherTokenConstant.sol\":{\"keccak256\":\"0xb18d16ad5127519251d9759349bf0ce1e5cfc861a776c5297b91a625c84d0363\",\"urls\":[\"bzzr://42b57d455cdbf7a8ab1383eb977c55d1826870a488cfc0cbc906a3d0f9ad2328\"]},\"@aragon/os/contracts/common/IVaultRecoverable.sol\":{\"keccak256\":\"0xd7cb66ee5d01be69a6abab04583cc86755bf63c2f1fd03b519a876162f52b323\",\"urls\":[\"bzzr://acb75e2637639bbc83b95032a822a54a588889f203b188e97cd78292cc0ee7f5\"]},\"@aragon/os/contracts/common/Initializable.sol\":{\"keccak256\":\"0xc559fdbee1c0ee18b6f2f866c28ed6eb96859b2c88f75867ca11f25ebd00b090\",\"urls\":[\"bzzr://3d3bca8b35030fc12f94bb52a162be9520868b27ff2cb32f09179d67b6ffdf93\"]},\"@aragon/os/contracts/common/IsContract.sol\":{\"keccak256\":\"0xb76e263e3532883fe32dfe4b1447eb487a570e121c5cce01cee604dd9e44a075\",\"urls\":[\"bzzr://4a7dd7aafff496a2c6403a7e9f4e74562088b5a38e2f6e2670e38dab11b9cd8f\"]},\"@aragon/os/contracts/common/Petrifiable.sol\":{\"keccak256\":\"0xb69f9d6de8ff6f2a084aca2e0228c9008a8776482a70bcab16f46a693ec77be6\",\"urls\":[\"bzzr://ca1d7bb504b8d9d75c162f5edc8588ac86934b69f765f2010d603027dc534375\"]},\"@aragon/os/contracts/common/ReentrancyGuard.sol\":{\"keccak256\":\"0x2b2014de57620aedded6365e742e17b9a23492d754e48dfeefa56f7e5bcf5645\",\"urls\":[\"bzzr://1aa2b79808ccb14b6c2d68f9283bd40300877c749b44edf0f66d78f0c1d17708\"]},\"@aragon/os/contracts/common/SafeERC20.sol\":{\"keccak256\":\"0xd251a1207e1faa4c41500bf927310bb739b1fbc0bf880f236f8e0a9236d6a03a\",\"urls\":[\"bzzr://b2d0f5981950b4e90eaee65c85050ac4f86a79f579f4ef38e6b281c0de980b2b\"]},\"@aragon/os/contracts/common/TimeHelpers.sol\":{\"keccak256\":\"0x95b785dc4319f6ce5255c9adf5e68a469a0f837f7b02e01b6bc974b4921d4024\",\"urls\":[\"bzzr://53f41920d95ed5cb7326de3062063c9296076809377fbadf2cbd26ab0c84ffd1\"]},\"@aragon/os/contracts/common/Uint256Helpers.sol\":{\"keccak256\":\"0x83033025a3f4402be3b7bcc9a23ce96ae4fadc7f251da8f139d73a13a3400b0c\",\"urls\":[\"bzzr://bd0e059eff36a66c3a28298ed5a2e1b058ce93057866ab36063e9f3095cef36f\"]},\"@aragon/os/contracts/common/UnstructuredStorage.sol\":{\"keccak256\":\"0xe0d627fc7a7716409389f34cfe49366ba7871309d3a73262ec9608ef73e47591\",\"urls\":[\"bzzr://9742204494402cdecc66b266f0e420fcfe2677ba710db7651c40f96a63940bef\"]},\"@aragon/os/contracts/common/VaultRecoverable.sol\":{\"keccak256\":\"0x4f4de2c27ea7df731ad7d9babc37965a805282fed16b422f46a35d9d2ef931a1\",\"urls\":[\"bzzr://02d492884e6b1cf7c0869974219c40453d23cf2021cc1deaa6895e0f1b4404b9\"]},\"@aragon/os/contracts/evmscript/EVMScriptRegistry.sol\":{\"keccak256\":\"0x0a8a940995af70625b926c4a70f3d847841f7da2601087436e3bae9b41af76c4\",\"urls\":[\"bzzr://fe95cca41c61cdffdb03e231fbab7c1c7a33e24cb0f48f5d5f5056fc797078cd\"]},\"@aragon/os/contracts/evmscript/EVMScriptRunner.sol\":{\"keccak256\":\"0xcb6b5f7d2610321882cdc86819f1a51341c33b510fff7c60936ac7d7a015d7be\",\"urls\":[\"bzzr://bc430c1487d75909dc059de848123822c257ea9e7c812a7252c10986be253e21\"]},\"@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol\":{\"keccak256\":\"0x9cab64cd2f10148d4e20433ecd11679e69be1fbde112892c48db94f92e48c571\",\"urls\":[\"bzzr://b4bf9f4fc41e6e7791a84d0847410677fc0066ed393872186d90f819f5f22cc0\"]},\"@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol\":{\"keccak256\":\"0x00d98507ec160cb7cc814cc9bdebd01a414353636d6045720fe6d1592277694b\",\"urls\":[\"bzzr://170505211d1846fe24b89cfceea7f5b59a587527f68f89e8f36fed8e08b02db4\"]},\"@aragon/os/contracts/evmscript/ScriptHelpers.sol\":{\"keccak256\":\"0xb602b537d0a349e3b461b40dee544a13214cc2a69b3dd7dcc58a8992c5c7ff91\",\"urls\":[\"bzzr://ab7276544b833100a6f62cb21936c5e2399ad275a87094e3963fc32660541e68\"]},\"@aragon/os/contracts/kernel/IKernel.sol\":{\"keccak256\":\"0xd02b98282ccd271b0caa86f2c249986f1619dcf41811f5dadce520b32610b68e\",\"urls\":[\"bzzr://e77000fc50cf4cfb160518af1cfb612e6cbbc06cb4357b1e03ff492fd17d8d2e\"]},\"@aragon/os/contracts/kernel/KernelConstants.sol\":{\"keccak256\":\"0x95e46be2becfb4c8952880909cd32adf5dcfa8c2e0fdf4ae054bbf83ef7f53cd\",\"urls\":[\"bzzr://68d3ce6cda841600d1e5724c0752314a084e4eeebc1fdcb6bc22c92d77c9a3db\"]},\"@aragon/os/contracts/lib/token/ERC20.sol\":{\"keccak256\":\"0xa2e319fde92f9e70912f09bf6e99bbf8b9b798961d54ffcba59d347d37bde1b7\",\"urls\":[\"bzzr://8c9a4aec8e185884f26ffb125975bd52c2363359b9adff481649c59cfe15660f\"]}},\"version\":1}",
  "bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f60008051602062001c4e833981519152640100000000620015f86200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b506200023060008051602062001c4e833981519152826401000000006200194c6200023782021704565b50565b5490565b9055565b611a03806200024b6000396000f3006080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166304bf2a7f811461010b5780630803fac01461018d57806319f3d10f146101b65780632914b9bd146101dd57806332f0a3b5146102365780635ca4d4bb1461024b5780637e7db6e11461026557806380afdea8146102935780638129fc1c146102a857806387a16f12146102bd5780638b3dd749146102eb5780639d4941d814610300578063a1658fad1461032e578063a479e508146103a2578063bd8fde1c146103b7578063cff606a0146103cc578063d4aae0c4146103e4578063de4796ed146103f9578063f97a05df1461040e575b600080fd5b34801561011757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101649436949293602493928401919081908401838280828437509497506104569650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561019957600080fd5b506101a26105a8565b604080519115158252519081900360200190f35b3480156101c257600080fd5b506101cb6105d1565b60408051918252519081900360200190f35b3480156101e957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101649436949293602493928401919081908401838280828437509497506105f59650505050505050565b34801561024257600080fd5b50610164610701565b34801561025757600080fd5b5061026360043561079f565b005b34801561027157600080fd5b506101a273ffffffffffffffffffffffffffffffffffffffff600435166109b3565b34801561029f57600080fd5b506101cb6109b9565b3480156102b457600080fd5b506102636109e9565b3480156102c957600080fd5b506101cb73ffffffffffffffffffffffffffffffffffffffff60043516610a9d565b3480156102f757600080fd5b506101cb610c61565b34801561030c57600080fd5b5061026373ffffffffffffffffffffffffffffffffffffffff60043516610c8c565b34801561033a57600080fd5b5060408051602060046044358181013583810280860185019096528085526101a295833573ffffffffffffffffffffffffffffffffffffffff16956024803596369695606495939492019291829185019084908082843750949750610fae9650505050505050565b3480156103ae57600080fd5b5061016461113e565b3480156103c357600080fd5b506101cb611200565b3480156103d857600080fd5b50610263600435611224565b3480156103f057600080fd5b506101646114ff565b34801561040557600080fd5b506101a261152a565b34801561041a57600080fd5b5061042660043561155b565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835290151560208301528051918290030190f35b60008060006004845110156040805190810160405280601e81526020017f45564d5245475f5343524950545f4c454e4754485f544f4f5f53484f5254000081525090151561053c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105015781810151838201526020016104e9565b50505050905090810190601f16801561052e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610546846115a0565b63ffffffff1660008181526001602052604090208054919350915074010000000000000000000000000000000000000000900460ff166105875760006105a0565b805473ffffffffffffffffffffffffffffffffffffffff165b949350505050565b6000806105b3610c61565b905080158015906105cb5750806105c86115b3565b10155b91505090565b7fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed281565b60006105ff61113e565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561068357818101518382015260200161066b565b50505050905090810190601f1680156106b05780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156106cf57600080fd5b505af11580156106e3573d6000803e3d6000fd5b505050506040513d60208110156106f957600080fd5b505192915050565b600061070b6114ff565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b5051905090565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa36107cb836115b7565b6107d6338383610fae565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610873576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5060008481526001602090815260409182902080548351808501909452601884527f45564d5245475f4558454355544f525f44495341424c4544000000000000000092840192909252945074010000000000000000000000000000000000000000900460ff161515610941576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5082547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116845560405173ffffffffffffffffffffffffffffffffffffffff9091169085907fc13cd9238f8ab1e5ab1f95cde77e89288fe5c328d04739adffd57b144b408fd190600090a350505050565b50600190565b60006109e47fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6115f8565b905090565b6109f1610c61565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50610a966115fc565b6001600055565b6040805160008082526020820190925281907fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed290610ade9033908390610fae565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50600080546001808201835560408051808201825273ffffffffffffffffffffffffffffffffffffffff808a168083526020808401868152878952959052838720925183549551151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff919093167fffffffffffffffffffffffff00000000000000000000000000000000000000009096169590951794909416179055519194509184917f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb566999190a35092915050565b60006109e47febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6115f8565b6000806000610c9a846109b3565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50610d40610701565b9250610d4b836116df565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5073ffffffffffffffffffffffffffffffffffffffff84161515610e53576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015610e4d573d6000803e3d6000fd5b50610f43565b5082610e7b73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61171916565b9150610ea473ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61185216565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b600080610fb96105a8565b1515610fc85760009150611136565b610fd06114ff565b905073ffffffffffffffffffffffffffffffffffffffff81161515610ff85760009150611136565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef9106863087611020886118ea565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156110b85781810151838201526020016110a0565b50505050905090810190601f1680156110e55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561110757600080fd5b505af115801561111b573d6000803e3d6000fd5b505050506040513d602081101561113157600080fd5b505191505b509392505050565b6000806111496114ff565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b1580156106cf57600080fd5b7ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa381565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3611250836115b7565b61125b338383610fae565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156112f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b508360008111801561130b575060005481105b60408051808201909152601a81527f45564d5245475f494e4558495354454e545f4558454355544f5200000000000060208201529015156113a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5060008581526001602090815260409182902080548351808501909452601784527f45564d5245475f4558454355544f525f454e41424c454400000000000000000092840192909252955074010000000000000000000000000000000000000000900460ff1615611475576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5083547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001780855560405173ffffffffffffffffffffffffffffffffffffffff9091169086907f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb5669990600090a35050505050565b60006109e47f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6115f8565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611555610c61565b14905090565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900460ff1682565b60006115ad8260006118f4565b92915050565b4390565b60408051600180825281830190925260609160208083019080388339019050509050818160008151811015156115e957fe5b60209081029091010152919050565b5490565b611604610c61565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156116a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b506116d96116ac6115b3565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff61194c16565b565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156117085760009150611713565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806117a68684611950565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515611848576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906118e18582611981565b95945050505050565b8051602002815290565b60008061190184846119cf565b7c01000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000090911604949350505050565b9055565b6000806000806040516020818751602089018a5afa9250600083111561197557805191505b50909590945092505050565b6000806040516020818551602087016000895af160008111156119c5573d80156119b257602081146119bb576119c3565b600193506119c3565b600183511493505b505b5090949350505050565b0160200151905600a165627a7a7230582079959e429032044ca887606d4966d2e5941eda9ca04bb87dabd8d3b0b81b70800029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
  "deployedBytecode": "0x6080604052600436106101065763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166304bf2a7f811461010b5780630803fac01461018d57806319f3d10f146101b65780632914b9bd146101dd57806332f0a3b5146102365780635ca4d4bb1461024b5780637e7db6e11461026557806380afdea8146102935780638129fc1c146102a857806387a16f12146102bd5780638b3dd749146102eb5780639d4941d814610300578063a1658fad1461032e578063a479e508146103a2578063bd8fde1c146103b7578063cff606a0146103cc578063d4aae0c4146103e4578063de4796ed146103f9578063f97a05df1461040e575b600080fd5b34801561011757600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101649436949293602493928401919081908401838280828437509497506104569650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561019957600080fd5b506101a26105a8565b604080519115158252519081900360200190f35b3480156101c257600080fd5b506101cb6105d1565b60408051918252519081900360200190f35b3480156101e957600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101649436949293602493928401919081908401838280828437509497506105f59650505050505050565b34801561024257600080fd5b50610164610701565b34801561025757600080fd5b5061026360043561079f565b005b34801561027157600080fd5b506101a273ffffffffffffffffffffffffffffffffffffffff600435166109b3565b34801561029f57600080fd5b506101cb6109b9565b3480156102b457600080fd5b506102636109e9565b3480156102c957600080fd5b506101cb73ffffffffffffffffffffffffffffffffffffffff60043516610a9d565b3480156102f757600080fd5b506101cb610c61565b34801561030c57600080fd5b5061026373ffffffffffffffffffffffffffffffffffffffff60043516610c8c565b34801561033a57600080fd5b5060408051602060046044358181013583810280860185019096528085526101a295833573ffffffffffffffffffffffffffffffffffffffff16956024803596369695606495939492019291829185019084908082843750949750610fae9650505050505050565b3480156103ae57600080fd5b5061016461113e565b3480156103c357600080fd5b506101cb611200565b3480156103d857600080fd5b50610263600435611224565b3480156103f057600080fd5b506101646114ff565b34801561040557600080fd5b506101a261152a565b34801561041a57600080fd5b5061042660043561155b565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835290151560208301528051918290030190f35b60008060006004845110156040805190810160405280601e81526020017f45564d5245475f5343524950545f4c454e4754485f544f4f5f53484f5254000081525090151561053c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105015781810151838201526020016104e9565b50505050905090810190601f16801561052e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610546846115a0565b63ffffffff1660008181526001602052604090208054919350915074010000000000000000000000000000000000000000900460ff166105875760006105a0565b805473ffffffffffffffffffffffffffffffffffffffff165b949350505050565b6000806105b3610c61565b905080158015906105cb5750806105c86115b3565b10155b91505090565b7fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed281565b60006105ff61113e565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561068357818101518382015260200161066b565b50505050905090810190601f1680156106b05780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156106cf57600080fd5b505af11580156106e3573d6000803e3d6000fd5b505050506040513d60208110156106f957600080fd5b505192915050565b600061070b6114ff565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561076e57600080fd5b505af1158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b5051905090565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa36107cb836115b7565b6107d6338383610fae565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610873576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5060008481526001602090815260409182902080548351808501909452601884527f45564d5245475f4558454355544f525f44495341424c4544000000000000000092840192909252945074010000000000000000000000000000000000000000900460ff161515610941576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5082547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116845560405173ffffffffffffffffffffffffffffffffffffffff9091169085907fc13cd9238f8ab1e5ab1f95cde77e89288fe5c328d04739adffd57b144b408fd190600090a350505050565b50600190565b60006109e47fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b6115f8565b905090565b6109f1610c61565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50610a966115fc565b6001600055565b6040805160008082526020820190925281907fc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed290610ade9033908390610fae565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515610b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50600080546001808201835560408051808201825273ffffffffffffffffffffffffffffffffffffffff808a168083526020808401868152878952959052838720925183549551151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff919093167fffffffffffffffffffffffff00000000000000000000000000000000000000009096169590951794909416179055519194509184917f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb566999190a35092915050565b60006109e47febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e6115f8565b6000806000610c9a846109b3565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b50610d40610701565b9250610d4b836116df565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5073ffffffffffffffffffffffffffffffffffffffff84161515610e53576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f19350505050158015610e4d573d6000803e3d6000fd5b50610f43565b5082610e7b73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61171916565b9150610ea473ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61185216565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b600080610fb96105a8565b1515610fc85760009150611136565b610fd06114ff565b905073ffffffffffffffffffffffffffffffffffffffff81161515610ff85760009150611136565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef9106863087611020886118ea565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156110b85781810151838201526020016110a0565b50505050905090810190601f1680156110e55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561110757600080fd5b505af115801561111b573d6000803e3d6000fd5b505050506040513d602081101561113157600080fd5b505191505b509392505050565b6000806111496114ff565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b1580156106cf57600080fd5b7ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa381565b60007ff7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3611250836115b7565b61125b338383610fae565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156112f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b508360008111801561130b575060005481105b60408051808201909152601a81527f45564d5245475f494e4558495354454e545f4558454355544f5200000000000060208201529015156113a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5060008581526001602090815260409182902080548351808501909452601784527f45564d5245475f4558454355544f525f454e41424c454400000000000000000092840192909252955074010000000000000000000000000000000000000000900460ff1615611475576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5083547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001780855560405173ffffffffffffffffffffffffffffffffffffffff9091169086907f7697fa3288629310075a63816e294207c84f3cfc18ccf8e18eb917ec0bb5669990600090a35050505050565b60006109e47f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b6115f8565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611555610c61565b14905090565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900460ff1682565b60006115ad8260006118f4565b92915050565b4390565b60408051600180825281830190925260609160208083019080388339019050509050818160008151811015156115e957fe5b60209081029091010152919050565b5490565b611604610c61565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156116a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b506116d96116ac6115b3565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff61194c16565b565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff831615156117085760009150611713565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806117a68684611950565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f52455645525445440000000060208201529193509150821515611848576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156105015781810151838201526020016104e9565b5095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906118e18582611981565b95945050505050565b8051602002815290565b60008061190184846119cf565b7c01000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000090911604949350505050565b9055565b6000806000806040516020818751602089018a5afa9250600083111561197557805191505b50909590945092505050565b6000806040516020818551602087016000895af160008111156119c5573d80156119b257602081146119bb576119c3565b600193506119c3565b600183511493505b505b5090949350505050565b0160200151905600a165627a7a7230582079959e429032044ca887606d4966d2e5941eda9ca04bb87dabd8d3b0b81b70800029",
  "sourceMap": "236:4278:39:-;;;344:9:22;:7;;;;:9;:::i;:::-;236:4278:39;;590:84:32;615:24:30;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;607:65:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;637:30:32;-1:-1:-1;;637:13:32;;;;:30;:::i;:::-;590:84::o;881:137:30:-;936:7;962:49;-1:-1:-1;;;;;;;;;;;962:47:30;;;;;;:49;:::i;:::-;955:56;;881:137;:::o;1751:141::-;615:24;:22;;;;:24;:::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;-1:-1:-1;1824:61:30;-1:-1:-1;;;;;;;;;;;1872:12:30;1824:47;;;;;;:61;:::i;:::-;1751:141;:::o;519:134:37:-;630:15;;620:27::o;1028:119::-;1117:22;;1115:26::o;236:4278:39:-;;;;;;;",
  "deployedSourceMap": "236:4278:39:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4027:485;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4027:485:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4027:485:39;;-1:-1:-1;4027:485:39;;-1:-1:-1;;;;;;;4027:485:39;;;;;;;;;;;;;;;;;;;;1128:208:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:30;;;;;;;;;;;;;;;;;;;;;;598:119:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;598:119:39;;;;;;;;;;;;;;;;;;;;795:179:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;795:179:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:179:40;;-1:-1:-1;795:179:40;;-1:-1:-1;;;;;;;795:179:40;2253:229:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2253:229:21;;;;2788:515:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2788:515:39;;;;;;;1659:99:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1659:99:38;;;;;;;796:106:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:20;;;;1906:158:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:158:39;;;;2318:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2318:321:39;;;;;;;881:137:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:30;;;;836:623:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;836:623:38;;;;;;;1641:496:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1641:496:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1641:496:21;;-1:-1:-1;1641:496:21;;-1:-1:-1;;;;;;;1641:496:21;980:231:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:231:40;;;;798:114:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;798:114:39;;;;3451:409;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3451:409:39;;;;;674:116:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:20;;;;287:117:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:117:32;;;;1453:51:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1453:51:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4027:485;4090:18;4209:10;4391:27;969:1;4128:7;:14;:39;;4169:29;;;;;;;;;;;;;;;;;;4120:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4120:79:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4222:19;:7;:17;:19::i;:::-;4209:32;;4421:13;;;;:9;:13;;;;;4451;;4209:32;;-1:-1:-1;4421:13:39;-1:-1:-1;4451:13:39;;;;;:54;;4503:1;4451:54;;;4467:14;;;;4451:54;4444:61;4027:485;-1:-1:-1;;;;4027:485:39:o;1128:208:30:-;1175:4;1191:27;1221:24;:22;:24::i;:::-;1191:54;-1:-1:-1;1262:24:30;;;;;:67;;;1310:19;1290:16;:14;:16::i;:::-;:39;;1262:67;1255:74;;1128:208;;:::o;598:119:39:-;651:66;598:119;:::o;795:179:40:-;861:18;917:22;:20;:22::i;:::-;:40;;;958:7;917:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;917:49:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:49:40;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;917:49:40;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:49:40;;795:179;-1:-1:-1;;795:179:40:o;2253:229:21:-;2302:7;2408:8;:6;:8::i;:::-;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2408:27:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2408:27:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2408:27:21;;-1:-1:-1;2253:229:21;:::o;2788:515:39:-;3065:35;846:66;2894:16;2898:11;2894:3;:16::i;:::-;1148:38:21;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1140:66:21;-1:-1:-1;3103:22:39;;;;:9;:22;;;;;;;;;3143:21;;3166:23;;;;;;;;;;;;;;;;;;;3103:22;-1:-1:-1;3143:21:39;;;;;3135:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3135:55:39;-1:-1:-1;3200:29:39;;;;;;;3244:52;;3273:22;;;;;3260:11;;3244:52;;3224:5;;3244:52;2788:515;;;;:::o;1659:99:38:-;-1:-1:-1;1747:4:38;;1659:99::o;796:106:20:-;834:7;860:35;601:66;860:33;:35::i;:::-;853:42;;796:106;:::o;1906:158:39:-;615:24:30;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;;1954:13:39;:11;:13::i;:::-;2056:1;2035:18;:22;1906:158::o;2318:321::-;1020:16:21;;;2426:10:39;1020:16:21;;;;;;;;;2426:10:39;;651:66;;990:47:21;;1001:10;;651:66:39;;990:10:21;:47::i;:::-;1039:17;;;;;;;;;;;;;;;;;;982:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;982:75:21;-1:-1:-1;2469:18:39;:20;;;;;;;;2523:30;;;;;;;;;;;;;;;;;;;;;;2499:21;;;;;;;;;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2568:37;2469:20;;-1:-1:-1;2523:30:39;2469:20;;2568:37;;2469:18;2568:37;-1:-1:-1;2622:10:39;2318:321;-1:-1:-1;;2318:321:39:o;881:137:30:-;936:7;962:49;345:66;962:47;:49::i;836:623:38:-;960:13;1067:15;1224:11;904:27;924:6;904:19;:27::i;:::-;933:16;;;;;;;;;;;;;;;;;;896:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;896:54:38;;976:18;:16;:18::i;:::-;960:34;;1012:17;1023:5;1012:10;:17::i;:::-;1031:24;;;;;;;;;;;;;;;;;;1004:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1004:52:38;-1:-1:-1;1096:13:38;;;;1092:307;;;1170:23;;1143:4;1135:21;;-1:-1:-1;1135:21:38;1170:14;;;:23;;;;;1135:21;;1170:23;;;;1135:21;1170:14;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1170:23:38;1092:307;;;-1:-1:-1;1244:6:38;1275:27;:21;;;1297:4;1275:27;:21;:27;:::i;:::-;1265:37;-1:-1:-1;1324:34:38;:18;;;1343:5;1265:37;1324:34;:18;:34;:::i;:::-;1360:27;;;;;;;;;;;;;;;;;;1316:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1316:72:38;;1092:307;1436:6;1414:38;;1429:5;1414:38;;;1444:7;1414:38;;;;;;;;;;;;;;;;;;836:623;;;;:::o;1641:496:21:-;1733:4;1819:20;1754:16;:14;:16::i;:::-;1753:17;1749:60;;;1793:5;1786:12;;;;1749:60;1842:8;:6;:8::i;:::-;1819:31;-1:-1:-1;1864:35:21;;;;1860:78;;;1922:5;1915:12;;;;1860:78;1955:12;:26;;;1995:7;2024:4;2043:5;2062:58;2112:7;2062:49;:58::i;:::-;1955:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1955:175:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1955:175:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1955:175:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1955:175:21;;-1:-1:-1;1641:496:21;;;;;;;:::o;980:231:40:-;1033:18;1063:20;1086:8;:6;:8::i;:::-;:69;;;;;;1368:66:51;1086:69:40;;;;330:66:42;1086:69:40;;;;;;:15;;;;;;;;:69;;;;;;;;;;;;;;;;:15;:69;;;5:2:-1;;;;30:1;27;20:12;798:114:39;846:66;798:114;:::o;3451:409::-;3624:35;846:66;3556:16;3560:11;3556:3;:16::i;:::-;1148:38:21;1159:10;1171:5;1178:7;1148:10;:38::i;:::-;1188:17;;;;;;;;;;;;;;;;;;1140:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1140:66:21;;3597:11:39;1764:1;1750:11;:15;:51;;;;;1783:18;;1769:11;:32;1750:51;1803:25;;;;;;;;;;;;;;;;;;1742:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1742:87:39;-1:-1:-1;3662:22:39;;;;:9;:22;;;;;;;;;3703:21;;3726:22;;;;;;;;;;;;;;;;;;;3662;-1:-1:-1;3703:21:39;;;;;3702:22;3694:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3694:55:39;-1:-1:-1;3759:28:39;;;;;;;;;3802:51;;3830:22;;;;;3817:11;;3802:51;;3759:21;;3802:51;1216:1:21;3451:409:39;;;;:::o;674:116:20:-;713:7;747:35;485:66;747:33;:35::i;287:117:32:-;331:4;277:2;354:24;:22;:24::i;:::-;:43;347:50;;287:117;:::o;1453:51:39:-;;;;;;;;;;;;;;;;;;;;;;:::o;99:109:43:-;156:6;181:20;190:7;199:1;181:8;:20::i;:::-;174:27;99:109;-1:-1:-1;;99:109:43:o;347:94:35:-;422:12;347:94;:::o;1594:117:12:-;1669:16;;;1683:1;1669:16;;;;;;;;;1642:11;;1669:16;;;;;;105:10:-1;1669:16:12;88:34:-1;136:17;;-1:-1;1669:16:12;1665:20;;1702:2;1695:1;1697;1695:4;;;;;;;;;;;;;;;;;;:9;1594:117;;-1:-1:-1;1594:117:12:o;379:134:37:-;490:15;;480:27::o;1447:123:30:-;615:24;:22;:24::i;:::-;646:25;;;;;;;;;;;;;;;;;;615:29;607:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;607:65:30;;1498;1546:16;:14;:16::i;:::-;345:66;;1498:65;:47;:65;:::i;:::-;1447:123::o;426:244:31:-;486:4;;506:21;;;;502:64;;;550:5;543:12;;;;502:64;629:7;617:20;609:28;;662:1;655:4;:8;648:15;;426:244;;;;;:::o;4578:403:34:-;4708:91;;;4744:16;4708:91;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4708:91:34;;;;;;;;25:18:-1;;61:17;;4708:91:34;182:15:-1;4744:25:34;179:29:-1;160:49;;4656:7:34;;;;4849:39;4744:6;4708:91;4849:12;:39::i;:::-;4915:28;;;;;;;;;;;;;;;;;4810:78;;-1:-1:-1;4810:78:34;-1:-1:-1;4898:46:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;4898:46:34;-1:-1:-1;4962:12:34;4578:403;-1:-1:-1;;;;;4578:403:34:o;3100:304::-;3232:101;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3232:101:34;;;;;;;;25:18:-1;;61:17;;3232:101:34;182:15:-1;3268:17:34;179:29:-1;160:49;;3184:4:34;;3350:47;3372:6;3232:101;3350:21;:47::i;:::-;3343:54;3100:304;-1:-1:-1;;;;;3100:304:34:o;142:539:23:-;559:13;;575:2;559:18;639:26;;559:6;596:79::o;739:355:43:-;812:13;837:12;852:27;862:5;869:9;852;:27::i;:::-;1018:59;937:66;927:77;;;923:155;;899:189;-1:-1:-1;;;;899:189:43:o;1028:119:37:-;1117:22;;1115:26::o;2148:774:34:-;2255:4;2261:7;2284:12;2306:11;2367:4;2361:11;2741:4;2670:3;2619:9;2613:16;2572:4;2561:9;2557:20;2508:5;2451:3;2423:371;2412:382;;2823:1;2814:7;2811:14;2808:2;;;2857:3;2851:10;2844:17;;2808:2;-1:-1:-1;2902:7:34;;2911:3;;-1:-1:-1;2148:774:34;-1:-1:-1;;;2148:774:34:o;800:1342::-;903:4;923:8;981:4;975:11;1403:4;1332:3;1281:9;1275:16;1234:4;1223:9;1219:20;1169:1;1120:5;1063:3;1041:415;1485:1;1476:7;1473:14;1470:2;;;1587:14;1672:55;;;;1806:4;1801:193;;;;1580:512;;1672:55;1708:1;1701:8;;1672:55;;1801:193;1974:1;1968:3;1962:10;1959:17;1952:24;;1580:512;;1470:2;-1:-1:-1;2132:3:34;;800:1342;-1:-1:-1;;;;800:1342:34:o;214:188:43:-;353:32;368:4;353:32;347:39;;323:73::o",
  "source": "pragma solidity 0.4.24;\n\nimport \"../apps/AragonApp.sol\";\nimport \"./ScriptHelpers.sol\";\nimport \"./IEVMScriptExecutor.sol\";\nimport \"./IEVMScriptRegistry.sol\";\n\n\n/* solium-disable function-order */\n// Allow public initialize() to be first\ncontract EVMScriptRegistry is IEVMScriptRegistry, EVMScriptRegistryConstants, AragonApp {\n    using ScriptHelpers for bytes;\n\n    /* Hardcoded constants to save gas\n    bytes32 public constant REGISTRY_ADD_EXECUTOR_ROLE = keccak256(\"REGISTRY_ADD_EXECUTOR_ROLE\");\n    bytes32 public constant REGISTRY_MANAGER_ROLE = keccak256(\"REGISTRY_MANAGER_ROLE\");\n    */\n    bytes32 public constant REGISTRY_ADD_EXECUTOR_ROLE = 0xc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed2;\n    // WARN: Manager can censor all votes and the like happening in an org\n    bytes32 public constant REGISTRY_MANAGER_ROLE = 0xf7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3;\n\n    uint256 internal constant SCRIPT_START_LOCATION = 4;\n\n    string private constant ERROR_INEXISTENT_EXECUTOR = \"EVMREG_INEXISTENT_EXECUTOR\";\n    string private constant ERROR_EXECUTOR_ENABLED = \"EVMREG_EXECUTOR_ENABLED\";\n    string private constant ERROR_EXECUTOR_DISABLED = \"EVMREG_EXECUTOR_DISABLED\";\n    string private constant ERROR_SCRIPT_LENGTH_TOO_SHORT = \"EVMREG_SCRIPT_LENGTH_TOO_SHORT\";\n\n    struct ExecutorEntry {\n        IEVMScriptExecutor executor;\n        bool enabled;\n    }\n\n    uint256 private executorsNextIndex;\n    mapping (uint256 => ExecutorEntry) public executors;\n\n    event EnableExecutor(uint256 indexed executorId, address indexed executorAddress);\n    event DisableExecutor(uint256 indexed executorId, address indexed executorAddress);\n\n    modifier executorExists(uint256 _executorId) {\n        require(_executorId > 0 && _executorId < executorsNextIndex, ERROR_INEXISTENT_EXECUTOR);\n        _;\n    }\n\n    /**\n    * @notice Initialize the registry\n    */\n    function initialize() public onlyInit {\n        initialized();\n        // Create empty record to begin executor IDs at 1\n        executorsNextIndex = 1;\n    }\n\n    /**\n    * @notice Add a new script executor with address `_executor` to the registry\n    * @param _executor Address of the IEVMScriptExecutor that will be added to the registry\n    * @return id Identifier of the executor in the registry\n    */\n    function addScriptExecutor(IEVMScriptExecutor _executor) external auth(REGISTRY_ADD_EXECUTOR_ROLE) returns (uint256 id) {\n        uint256 executorId = executorsNextIndex++;\n        executors[executorId] = ExecutorEntry(_executor, true);\n        emit EnableExecutor(executorId, _executor);\n        return executorId;\n    }\n\n    /**\n    * @notice Disable script executor with ID `_executorId`\n    * @param _executorId Identifier of the executor in the registry\n    */\n    function disableScriptExecutor(uint256 _executorId)\n        external\n        authP(REGISTRY_MANAGER_ROLE, arr(_executorId))\n    {\n        // Note that we don't need to check for an executor's existence in this case, as only\n        // existing executors can be enabled\n        ExecutorEntry storage executorEntry = executors[_executorId];\n        require(executorEntry.enabled, ERROR_EXECUTOR_DISABLED);\n        executorEntry.enabled = false;\n        emit DisableExecutor(_executorId, executorEntry.executor);\n    }\n\n    /**\n    * @notice Enable script executor with ID `_executorId`\n    * @param _executorId Identifier of the executor in the registry\n    */\n    function enableScriptExecutor(uint256 _executorId)\n        external\n        authP(REGISTRY_MANAGER_ROLE, arr(_executorId))\n        executorExists(_executorId)\n    {\n        ExecutorEntry storage executorEntry = executors[_executorId];\n        require(!executorEntry.enabled, ERROR_EXECUTOR_ENABLED);\n        executorEntry.enabled = true;\n        emit EnableExecutor(_executorId, executorEntry.executor);\n    }\n\n    /**\n    * @dev Get the script executor that can execute a particular script based on its first 4 bytes\n    * @param _script EVMScript being inspected\n    */\n    function getScriptExecutor(bytes _script) public view returns (IEVMScriptExecutor) {\n        require(_script.length >= SCRIPT_START_LOCATION, ERROR_SCRIPT_LENGTH_TOO_SHORT);\n        uint256 id = _script.getSpecId();\n\n        // Note that we don't need to check for an executor's existence in this case, as only\n        // existing executors can be enabled\n        ExecutorEntry storage entry = executors[id];\n        return entry.enabled ? entry.executor : IEVMScriptExecutor(0);\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/evmscript/EVMScriptRegistry.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRegistry.sol",
    "exportedSymbols": {
      "EVMScriptRegistry": [
        7288
      ]
    },
    "id": 7289,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7055,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:39"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "../apps/AragonApp.sol",
        "id": 7056,
        "nodeType": "ImportDirective",
        "scope": 7289,
        "sourceUnit": 6121,
        "src": "25:31:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
        "file": "./ScriptHelpers.sol",
        "id": 7057,
        "nodeType": "ImportDirective",
        "scope": 7289,
        "sourceUnit": 7594,
        "src": "57:29:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 7058,
        "nodeType": "ImportDirective",
        "scope": 7289,
        "sourceUnit": 7475,
        "src": "87:34:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 7059,
        "nodeType": "ImportDirective",
        "scope": 7289,
        "sourceUnit": 7502,
        "src": "122:34:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7060,
              "name": "IEVMScriptRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7501,
              "src": "266:18:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEVMScriptRegistry_$7501",
                "typeString": "contract IEVMScriptRegistry"
              }
            },
            "id": 7061,
            "nodeType": "InheritanceSpecifier",
            "src": "266:18:39"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7062,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7481,
              "src": "286:26:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$7481",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 7063,
            "nodeType": "InheritanceSpecifier",
            "src": "286:26:39"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7064,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6120,
              "src": "314:9:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$6120",
                "typeString": "contract AragonApp"
              }
            },
            "id": 7065,
            "nodeType": "InheritanceSpecifier",
            "src": "314:9:39"
          }
        ],
        "contractDependencies": [
          5208,
          5996,
          6120,
          6133,
          6293,
          6343,
          6441,
          6469,
          6502,
          6539,
          6831,
          7053,
          7454,
          7481,
          7501,
          8745
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7288,
        "linearizedBaseContracts": [
          7288,
          6120,
          5208,
          7454,
          8745,
          7481,
          6539,
          7053,
          6469,
          6293,
          6343,
          6133,
          6502,
          6441,
          6831,
          5996,
          7501
        ],
        "name": "EVMScriptRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 7068,
            "libraryName": {
              "contractScope": null,
              "id": 7066,
              "name": "ScriptHelpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7593,
              "src": "336:13:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ScriptHelpers_$7593",
                "typeString": "library ScriptHelpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "330:30:39",
            "typeName": {
              "id": 7067,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "354:5:39",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "constant": true,
            "id": 7071,
            "name": "REGISTRY_ADD_EXECUTOR_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "598:119:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 7069,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "598:7:39",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307863346539306633386565613863343231326130303963613762383934373934336261346434613538643139623638333431376636353239316431636439656432",
              "id": 7070,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "651:66:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_89065098749499542665412112470485833788131522672750921966929243139564941188818_by_1",
                "typeString": "int_const 8906...(69 digits omitted)...8818"
              },
              "value": "0xc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 7074,
            "name": "REGISTRY_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "798:114:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 7072,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "798:7:39",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307866376134353065663333356531383932636234326338636137326537323432333539643737313139323462373564623537313734313064613366363134616133",
              "id": 7073,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "846:66:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_112011595107235085372515956694391736358546673401817295630538651321883735181987_by_1",
                "typeString": "int_const 1120...(70 digits omitted)...1987"
              },
              "value": "0xf7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 7077,
            "name": "SCRIPT_START_LOCATION",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "919:51:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 7075,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "919:7:39",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 7076,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "969:1:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 7080,
            "name": "ERROR_INEXISTENT_EXECUTOR",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "977:80:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7078,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "977:6:39",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f494e4558495354454e545f4558454355544f52",
              "id": 7079,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1029:28:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_567277bf20a481099b140fabf868d5f9372cc8a7f04146c67033656cb8ff60ba",
                "typeString": "literal_string \"EVMREG_INEXISTENT_EXECUTOR\""
              },
              "value": "EVMREG_INEXISTENT_EXECUTOR"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7083,
            "name": "ERROR_EXECUTOR_ENABLED",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "1063:74:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7081,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1063:6:39",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f454e41424c4544",
              "id": 7082,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1112:25:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a50bafa9c8686e97a8dde70e0e0e3137cd6c8f2862e66faf05097c5b71450a54",
                "typeString": "literal_string \"EVMREG_EXECUTOR_ENABLED\""
              },
              "value": "EVMREG_EXECUTOR_ENABLED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7086,
            "name": "ERROR_EXECUTOR_DISABLED",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "1143:76:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7084,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1143:6:39",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f44495341424c4544",
              "id": 7085,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1193:26:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_f208a82b5e06512178289ed18d363585befdf89110b08b7a23b646ead2c75be7",
                "typeString": "literal_string \"EVMREG_EXECUTOR_DISABLED\""
              },
              "value": "EVMREG_EXECUTOR_DISABLED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7089,
            "name": "ERROR_SCRIPT_LENGTH_TOO_SHORT",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "1225:88:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7087,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1225:6:39",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f5343524950545f4c454e4754485f544f4f5f53484f5254",
              "id": 7088,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1281:32:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7b40663809ad8af7e508993e7d916c51c5b34414addec7e1fcd158fbb7fee248",
                "typeString": "literal_string \"EVMREG_SCRIPT_LENGTH_TOO_SHORT\""
              },
              "value": "EVMREG_SCRIPT_LENGTH_TOO_SHORT"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "EVMScriptRegistry.ExecutorEntry",
            "id": 7094,
            "members": [
              {
                "constant": false,
                "id": 7091,
                "name": "executor",
                "nodeType": "VariableDeclaration",
                "scope": 7094,
                "src": "1351:27:39",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                  "typeString": "contract IEVMScriptExecutor"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 7090,
                  "name": "IEVMScriptExecutor",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7474,
                  "src": "1351:18:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                    "typeString": "contract IEVMScriptExecutor"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 7093,
                "name": "enabled",
                "nodeType": "VariableDeclaration",
                "scope": 7094,
                "src": "1388:12:39",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 7092,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1388:4:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ExecutorEntry",
            "nodeType": "StructDefinition",
            "scope": 7288,
            "src": "1320:87:39",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 7096,
            "name": "executorsNextIndex",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "1413:34:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 7095,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1413:7:39",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 7100,
            "name": "executors",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "1453:51:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
              "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
            },
            "typeName": {
              "id": 7099,
              "keyType": {
                "id": 7097,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1462:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1453:34:39",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
                "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
              },
              "valueType": {
                "contractScope": null,
                "id": 7098,
                "name": "ExecutorEntry",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 7094,
                "src": "1473:13:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                  "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7106,
            "name": "EnableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7105,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7102,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7106,
                  "src": "1532:26:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7101,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1532:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7104,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7106,
                  "src": "1560:31:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7103,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1560:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1531:61:39"
            },
            "src": "1511:82:39"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7112,
            "name": "DisableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7108,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7112,
                  "src": "1620:26:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7107,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1620:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7110,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7112,
                  "src": "1648:31:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7109,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1648:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1619:61:39"
            },
            "src": "1598:83:39"
          },
          {
            "body": {
              "id": 7128,
              "nodeType": "Block",
              "src": "1732:115:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7123,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7117,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7114,
                            "src": "1750:11:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1764:1:39",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1750:15:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7120,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7114,
                            "src": "1769:11:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7121,
                            "name": "executorsNextIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7096,
                            "src": "1783:18:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1769:32:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1750:51:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7124,
                        "name": "ERROR_INEXISTENT_EXECUTOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7080,
                        "src": "1803:25:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7116,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "1742:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1742:87:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7126,
                  "nodeType": "ExpressionStatement",
                  "src": "1742:87:39"
                },
                {
                  "id": 7127,
                  "nodeType": "PlaceholderStatement",
                  "src": "1839:1:39"
                }
              ]
            },
            "documentation": null,
            "id": 7129,
            "name": "executorExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 7115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7114,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7129,
                  "src": "1711:19:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7113,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1711:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1710:21:39"
            },
            "src": "1687:160:39",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7141,
              "nodeType": "Block",
              "src": "1944:120:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 7134,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6426,
                      "src": "1954:11:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 7135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1954:13:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7136,
                  "nodeType": "ExpressionStatement",
                  "src": "1954:13:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7137,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7096,
                      "src": "2035:18:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 7138,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2056:1:39",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "2035:22:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 7140,
                  "nodeType": "ExpressionStatement",
                  "src": "2035:22:39"
                }
              ]
            },
            "documentation": "@notice Initialize the registry",
            "id": 7142,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7132,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7131,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6373,
                  "src": "1935:8:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1935:8:39"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7130,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1925:2:39"
            },
            "payable": false,
            "returnParameters": {
              "id": 7133,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1944:0:39"
            },
            "scope": 7288,
            "src": "1906:158:39",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7173,
              "nodeType": "Block",
              "src": "2438:201:39",
              "statements": [
                {
                  "assignments": [
                    7153
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7153,
                      "name": "executorId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7174,
                      "src": "2448:18:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7152,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2448:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7156,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 7155,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2469:20:39",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 7154,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7096,
                      "src": "2469:18:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2448:41:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7157,
                        "name": "executors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7100,
                        "src": "2499:9:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
                          "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                        }
                      },
                      "id": 7159,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7158,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7153,
                        "src": "2509:10:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2499:21:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7161,
                          "name": "_executor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7144,
                          "src": "2537:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                            "typeString": "contract IEVMScriptExecutor"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 7162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2548:4:39",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                            "typeString": "contract IEVMScriptExecutor"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 7160,
                        "name": "ExecutorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7094,
                        "src": "2523:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_ExecutorEntry_$7094_storage_ptr_$",
                          "typeString": "type(struct EVMScriptRegistry.ExecutorEntry storage pointer)"
                        }
                      },
                      "id": 7163,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2523:30:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$7094_memory",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry memory"
                      }
                    },
                    "src": "2499:54:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "id": 7165,
                  "nodeType": "ExpressionStatement",
                  "src": "2499:54:39"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7167,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7153,
                        "src": "2583:10:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7168,
                        "name": "_executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7144,
                        "src": "2595:9:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 7166,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7106,
                      "src": "2568:14:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 7169,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2568:37:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7170,
                  "nodeType": "EmitStatement",
                  "src": "2563:42:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7171,
                    "name": "executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7153,
                    "src": "2622:10:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7151,
                  "id": 7172,
                  "nodeType": "Return",
                  "src": "2615:17:39"
                }
              ]
            },
            "documentation": "@notice Add a new script executor with address `_executor` to the registry\n@param _executor Address of the IEVMScriptExecutor that will be added to the registry\n@return id Identifier of the executor in the registry",
            "id": 7174,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7147,
                    "name": "REGISTRY_ADD_EXECUTOR_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7071,
                    "src": "2389:26:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 7148,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7146,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6040,
                  "src": "2384:4:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2384:32:39"
              }
            ],
            "name": "addScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7145,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7144,
                  "name": "_executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 7174,
                  "src": "2345:28:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7143,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7474,
                    "src": "2345:18:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2344:30:39"
            },
            "payable": false,
            "returnParameters": {
              "id": 7151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7150,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 7174,
                  "src": "2426:10:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7149,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2425:12:39"
            },
            "scope": 7288,
            "src": "2318:321:39",
            "stateMutability": "nonpayable",
            "superFunction": 7488,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7209,
              "nodeType": "Block",
              "src": "2916:387:39",
              "statements": [
                {
                  "assignments": [
                    7186
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7186,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 7210,
                      "src": "3065:35:39",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7185,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7094,
                        "src": "3065:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7190,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 7187,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7100,
                      "src": "3103:9:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 7189,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7188,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7176,
                      "src": "3113:11:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3103:22:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3065:60:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7192,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7186,
                          "src": "3143:13:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 7193,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "enabled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7093,
                        "src": "3143:21:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7194,
                        "name": "ERROR_EXECUTOR_DISABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7086,
                        "src": "3166:23:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7191,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "3135:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3135:55:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7196,
                  "nodeType": "ExpressionStatement",
                  "src": "3135:55:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7201,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7197,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7186,
                        "src": "3200:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 7199,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7093,
                      "src": "3200:21:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 7200,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3224:5:39",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3200:29:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7202,
                  "nodeType": "ExpressionStatement",
                  "src": "3200:29:39"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7204,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7176,
                        "src": "3260:11:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7205,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7186,
                          "src": "3273:13:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 7206,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7091,
                        "src": "3273:22:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 7203,
                      "name": "DisableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7112,
                      "src": "3244:15:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 7207,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3244:52:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7208,
                  "nodeType": "EmitStatement",
                  "src": "3239:57:39"
                }
              ]
            },
            "documentation": "@notice Disable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 7210,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7179,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7074,
                    "src": "2871:21:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7181,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7176,
                        "src": "2898:11:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7180,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 5035,
                      "src": "2894:3:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7182,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2894:16:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7183,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7178,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6059,
                  "src": "2865:5:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2865:46:39"
              }
            ],
            "name": "disableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7177,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7176,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7210,
                  "src": "2819:19:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7175,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2819:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2818:21:39"
            },
            "payable": false,
            "returnParameters": {
              "id": 7184,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2916:0:39"
            },
            "scope": 7288,
            "src": "2788:515:39",
            "stateMutability": "nonpayable",
            "superFunction": 7493,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7249,
              "nodeType": "Block",
              "src": "3614:246:39",
              "statements": [
                {
                  "assignments": [
                    7225
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7225,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 7250,
                      "src": "3624:35:39",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7224,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7094,
                        "src": "3624:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7229,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 7226,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7100,
                      "src": "3662:9:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 7228,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7227,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7212,
                      "src": "3672:11:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3662:22:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3624:60:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3702:22:39",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7231,
                            "name": "executorEntry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7225,
                            "src": "3703:13:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                              "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                            }
                          },
                          "id": 7232,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "enabled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7093,
                          "src": "3703:21:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7234,
                        "name": "ERROR_EXECUTOR_ENABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7083,
                        "src": "3726:22:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7230,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "3694:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3694:55:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7236,
                  "nodeType": "ExpressionStatement",
                  "src": "3694:55:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7241,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7237,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7225,
                        "src": "3759:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 7239,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7093,
                      "src": "3759:21:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 7240,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3783:4:39",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3759:28:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7242,
                  "nodeType": "ExpressionStatement",
                  "src": "3759:28:39"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7244,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7212,
                        "src": "3817:11:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7245,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7225,
                          "src": "3830:13:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 7246,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7091,
                        "src": "3830:22:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 7243,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7106,
                      "src": "3802:14:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 7247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3802:51:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7248,
                  "nodeType": "EmitStatement",
                  "src": "3797:56:39"
                }
              ]
            },
            "documentation": "@notice Enable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 7250,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7215,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7074,
                    "src": "3533:21:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7217,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7212,
                        "src": "3560:11:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7216,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 5035,
                      "src": "3556:3:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7218,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3556:16:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7219,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7214,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6059,
                  "src": "3527:5:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3527:46:39"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7221,
                    "name": "_executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7212,
                    "src": "3597:11:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 7222,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7220,
                  "name": "executorExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 7129,
                  "src": "3582:14:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3582:27:39"
              }
            ],
            "name": "enableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7213,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7212,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7250,
                  "src": "3481:19:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7211,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3481:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3480:21:39"
            },
            "payable": false,
            "returnParameters": {
              "id": 7223,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3614:0:39"
            },
            "scope": 7288,
            "src": "3451:409:39",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7286,
              "nodeType": "Block",
              "src": "4110:402:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7258,
                            "name": "_script",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7252,
                            "src": "4128:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 7259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4128:14:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7260,
                          "name": "SCRIPT_START_LOCATION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7077,
                          "src": "4146:21:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4128:39:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7262,
                        "name": "ERROR_SCRIPT_LENGTH_TOO_SHORT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7089,
                        "src": "4169:29:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7257,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "4120:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4120:79:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7264,
                  "nodeType": "ExpressionStatement",
                  "src": "4120:79:39"
                },
                {
                  "assignments": [
                    7266
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7266,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 7287,
                      "src": "4209:10:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7265,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4209:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7270,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7267,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7252,
                        "src": "4222:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 7268,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSpecId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7516,
                      "src": "4222:17:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (uint32)"
                      }
                    },
                    "id": 7269,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4222:19:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4209:32:39"
                },
                {
                  "assignments": [
                    7272
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7272,
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "scope": 7287,
                      "src": "4391:27:39",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7271,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7094,
                        "src": "4391:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7276,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 7273,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7100,
                      "src": "4421:9:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 7275,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7274,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7266,
                      "src": "4431:2:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4421:13:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4391:43:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7277,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7272,
                        "src": "4451:5:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 7278,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7093,
                      "src": "4451:13:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4503:1:39",
                          "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": 7281,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7474,
                        "src": "4484:18:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$7474_$",
                          "typeString": "type(contract IEVMScriptExecutor)"
                        }
                      },
                      "id": 7283,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4484:21:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "id": 7284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "4451:54:39",
                    "trueExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7279,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7272,
                        "src": "4467:5:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 7280,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7091,
                      "src": "4467:14:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 7256,
                  "id": 7285,
                  "nodeType": "Return",
                  "src": "4444:61:39"
                }
              ]
            },
            "documentation": "@dev Get the script executor that can execute a particular script based on its first 4 bytes\n@param _script EVMScript being inspected",
            "id": 7287,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7252,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 7287,
                  "src": "4054:13:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7251,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4054:5:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4053:15:39"
            },
            "payable": false,
            "returnParameters": {
              "id": 7256,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7255,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7287,
                  "src": "4090:18:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7254,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7474,
                    "src": "4090:18:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4089:20:39"
            },
            "scope": 7288,
            "src": "4027:485:39",
            "stateMutability": "view",
            "superFunction": 7500,
            "visibility": "public"
          }
        ],
        "scope": 7289,
        "src": "236:4278:39"
      }
    ],
    "src": "0:4515:39"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRegistry.sol",
    "exportedSymbols": {
      "EVMScriptRegistry": [
        7288
      ]
    },
    "id": 7289,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7055,
        "literals": [
          "solidity",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:39"
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
        "file": "../apps/AragonApp.sol",
        "id": 7056,
        "nodeType": "ImportDirective",
        "scope": 7289,
        "sourceUnit": 6121,
        "src": "25:31:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
        "file": "./ScriptHelpers.sol",
        "id": 7057,
        "nodeType": "ImportDirective",
        "scope": 7289,
        "sourceUnit": 7594,
        "src": "57:29:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 7058,
        "nodeType": "ImportDirective",
        "scope": 7289,
        "sourceUnit": 7475,
        "src": "87:34:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 7059,
        "nodeType": "ImportDirective",
        "scope": 7289,
        "sourceUnit": 7502,
        "src": "122:34:39",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7060,
              "name": "IEVMScriptRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7501,
              "src": "266:18:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IEVMScriptRegistry_$7501",
                "typeString": "contract IEVMScriptRegistry"
              }
            },
            "id": 7061,
            "nodeType": "InheritanceSpecifier",
            "src": "266:18:39"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7062,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7481,
              "src": "286:26:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$7481",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 7063,
            "nodeType": "InheritanceSpecifier",
            "src": "286:26:39"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 7064,
              "name": "AragonApp",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6120,
              "src": "314:9:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AragonApp_$6120",
                "typeString": "contract AragonApp"
              }
            },
            "id": 7065,
            "nodeType": "InheritanceSpecifier",
            "src": "314:9:39"
          }
        ],
        "contractDependencies": [
          5208,
          5996,
          6120,
          6133,
          6293,
          6343,
          6441,
          6469,
          6502,
          6539,
          6831,
          7053,
          7454,
          7481,
          7501,
          8745
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7288,
        "linearizedBaseContracts": [
          7288,
          6120,
          5208,
          7454,
          8745,
          7481,
          6539,
          7053,
          6469,
          6293,
          6343,
          6133,
          6502,
          6441,
          6831,
          5996,
          7501
        ],
        "name": "EVMScriptRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 7068,
            "libraryName": {
              "contractScope": null,
              "id": 7066,
              "name": "ScriptHelpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7593,
              "src": "336:13:39",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ScriptHelpers_$7593",
                "typeString": "library ScriptHelpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "330:30:39",
            "typeName": {
              "id": 7067,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "354:5:39",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "constant": true,
            "id": 7071,
            "name": "REGISTRY_ADD_EXECUTOR_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "598:119:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 7069,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "598:7:39",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307863346539306633386565613863343231326130303963613762383934373934336261346434613538643139623638333431376636353239316431636439656432",
              "id": 7070,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "651:66:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_89065098749499542665412112470485833788131522672750921966929243139564941188818_by_1",
                "typeString": "int_const 8906...(69 digits omitted)...8818"
              },
              "value": "0xc4e90f38eea8c4212a009ca7b8947943ba4d4a58d19b683417f65291d1cd9ed2"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 7074,
            "name": "REGISTRY_MANAGER_ROLE",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "798:114:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 7072,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "798:7:39",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307866376134353065663333356531383932636234326338636137326537323432333539643737313139323462373564623537313734313064613366363134616133",
              "id": 7073,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "846:66:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_112011595107235085372515956694391736358546673401817295630538651321883735181987_by_1",
                "typeString": "int_const 1120...(70 digits omitted)...1987"
              },
              "value": "0xf7a450ef335e1892cb42c8ca72e7242359d7711924b75db5717410da3f614aa3"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 7077,
            "name": "SCRIPT_START_LOCATION",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "919:51:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 7075,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "919:7:39",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 7076,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "969:1:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 7080,
            "name": "ERROR_INEXISTENT_EXECUTOR",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "977:80:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7078,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "977:6:39",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f494e4558495354454e545f4558454355544f52",
              "id": 7079,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1029:28:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_567277bf20a481099b140fabf868d5f9372cc8a7f04146c67033656cb8ff60ba",
                "typeString": "literal_string \"EVMREG_INEXISTENT_EXECUTOR\""
              },
              "value": "EVMREG_INEXISTENT_EXECUTOR"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7083,
            "name": "ERROR_EXECUTOR_ENABLED",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "1063:74:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7081,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1063:6:39",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f454e41424c4544",
              "id": 7082,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1112:25:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a50bafa9c8686e97a8dde70e0e0e3137cd6c8f2862e66faf05097c5b71450a54",
                "typeString": "literal_string \"EVMREG_EXECUTOR_ENABLED\""
              },
              "value": "EVMREG_EXECUTOR_ENABLED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7086,
            "name": "ERROR_EXECUTOR_DISABLED",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "1143:76:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7084,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1143:6:39",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f4558454355544f525f44495341424c4544",
              "id": 7085,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1193:26:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_f208a82b5e06512178289ed18d363585befdf89110b08b7a23b646ead2c75be7",
                "typeString": "literal_string \"EVMREG_EXECUTOR_DISABLED\""
              },
              "value": "EVMREG_EXECUTOR_DISABLED"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 7089,
            "name": "ERROR_SCRIPT_LENGTH_TOO_SHORT",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "1225:88:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 7087,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1225:6:39",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d5245475f5343524950545f4c454e4754485f544f4f5f53484f5254",
              "id": 7088,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1281:32:39",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7b40663809ad8af7e508993e7d916c51c5b34414addec7e1fcd158fbb7fee248",
                "typeString": "literal_string \"EVMREG_SCRIPT_LENGTH_TOO_SHORT\""
              },
              "value": "EVMREG_SCRIPT_LENGTH_TOO_SHORT"
            },
            "visibility": "private"
          },
          {
            "canonicalName": "EVMScriptRegistry.ExecutorEntry",
            "id": 7094,
            "members": [
              {
                "constant": false,
                "id": 7091,
                "name": "executor",
                "nodeType": "VariableDeclaration",
                "scope": 7094,
                "src": "1351:27:39",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                  "typeString": "contract IEVMScriptExecutor"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 7090,
                  "name": "IEVMScriptExecutor",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7474,
                  "src": "1351:18:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                    "typeString": "contract IEVMScriptExecutor"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 7093,
                "name": "enabled",
                "nodeType": "VariableDeclaration",
                "scope": 7094,
                "src": "1388:12:39",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 7092,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1388:4:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "ExecutorEntry",
            "nodeType": "StructDefinition",
            "scope": 7288,
            "src": "1320:87:39",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 7096,
            "name": "executorsNextIndex",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "1413:34:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 7095,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1413:7:39",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 7100,
            "name": "executors",
            "nodeType": "VariableDeclaration",
            "scope": 7288,
            "src": "1453:51:39",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
              "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
            },
            "typeName": {
              "id": 7099,
              "keyType": {
                "id": 7097,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1462:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1453:34:39",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
                "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry)"
              },
              "valueType": {
                "contractScope": null,
                "id": 7098,
                "name": "ExecutorEntry",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 7094,
                "src": "1473:13:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                  "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7106,
            "name": "EnableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7105,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7102,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7106,
                  "src": "1532:26:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7101,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1532:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7104,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7106,
                  "src": "1560:31:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7103,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1560:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1531:61:39"
            },
            "src": "1511:82:39"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 7112,
            "name": "DisableExecutor",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 7111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7108,
                  "indexed": true,
                  "name": "executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7112,
                  "src": "1620:26:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7107,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1620:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7110,
                  "indexed": true,
                  "name": "executorAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 7112,
                  "src": "1648:31:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7109,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1648:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1619:61:39"
            },
            "src": "1598:83:39"
          },
          {
            "body": {
              "id": 7128,
              "nodeType": "Block",
              "src": "1732:115:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7123,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7117,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7114,
                            "src": "1750:11:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 7118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1764:1:39",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1750:15:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7120,
                            "name": "_executorId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7114,
                            "src": "1769:11:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7121,
                            "name": "executorsNextIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7096,
                            "src": "1783:18:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1769:32:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1750:51:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7124,
                        "name": "ERROR_INEXISTENT_EXECUTOR",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7080,
                        "src": "1803:25:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7116,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "1742:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7125,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1742:87:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7126,
                  "nodeType": "ExpressionStatement",
                  "src": "1742:87:39"
                },
                {
                  "id": 7127,
                  "nodeType": "PlaceholderStatement",
                  "src": "1839:1:39"
                }
              ]
            },
            "documentation": null,
            "id": 7129,
            "name": "executorExists",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 7115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7114,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7129,
                  "src": "1711:19:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7113,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1711:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1710:21:39"
            },
            "src": "1687:160:39",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7141,
              "nodeType": "Block",
              "src": "1944:120:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 7134,
                      "name": "initialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6426,
                      "src": "1954:11:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 7135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1954:13:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7136,
                  "nodeType": "ExpressionStatement",
                  "src": "1954:13:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7137,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7096,
                      "src": "2035:18:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 7138,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2056:1:39",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "2035:22:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 7140,
                  "nodeType": "ExpressionStatement",
                  "src": "2035:22:39"
                }
              ]
            },
            "documentation": "@notice Initialize the registry",
            "id": 7142,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7132,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7131,
                  "name": "onlyInit",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6373,
                  "src": "1935:8:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1935:8:39"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7130,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1925:2:39"
            },
            "payable": false,
            "returnParameters": {
              "id": 7133,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1944:0:39"
            },
            "scope": 7288,
            "src": "1906:158:39",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7173,
              "nodeType": "Block",
              "src": "2438:201:39",
              "statements": [
                {
                  "assignments": [
                    7153
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7153,
                      "name": "executorId",
                      "nodeType": "VariableDeclaration",
                      "scope": 7174,
                      "src": "2448:18:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7152,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2448:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7156,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 7155,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "2469:20:39",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 7154,
                      "name": "executorsNextIndex",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7096,
                      "src": "2469:18:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2448:41:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7157,
                        "name": "executors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7100,
                        "src": "2499:9:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
                          "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                        }
                      },
                      "id": 7159,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7158,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7153,
                        "src": "2509:10:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2499:21:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7161,
                          "name": "_executor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7144,
                          "src": "2537:9:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                            "typeString": "contract IEVMScriptExecutor"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 7162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2548:4:39",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                            "typeString": "contract IEVMScriptExecutor"
                          },
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        ],
                        "id": 7160,
                        "name": "ExecutorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7094,
                        "src": "2523:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_ExecutorEntry_$7094_storage_ptr_$",
                          "typeString": "type(struct EVMScriptRegistry.ExecutorEntry storage pointer)"
                        }
                      },
                      "id": 7163,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2523:30:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$7094_memory",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry memory"
                      }
                    },
                    "src": "2499:54:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "id": 7165,
                  "nodeType": "ExpressionStatement",
                  "src": "2499:54:39"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7167,
                        "name": "executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7153,
                        "src": "2583:10:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7168,
                        "name": "_executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7144,
                        "src": "2595:9:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 7166,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7106,
                      "src": "2568:14:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 7169,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2568:37:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7170,
                  "nodeType": "EmitStatement",
                  "src": "2563:42:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7171,
                    "name": "executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7153,
                    "src": "2622:10:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7151,
                  "id": 7172,
                  "nodeType": "Return",
                  "src": "2615:17:39"
                }
              ]
            },
            "documentation": "@notice Add a new script executor with address `_executor` to the registry\n@param _executor Address of the IEVMScriptExecutor that will be added to the registry\n@return id Identifier of the executor in the registry",
            "id": 7174,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7147,
                    "name": "REGISTRY_ADD_EXECUTOR_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7071,
                    "src": "2389:26:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 7148,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7146,
                  "name": "auth",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6040,
                  "src": "2384:4:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2384:32:39"
              }
            ],
            "name": "addScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7145,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7144,
                  "name": "_executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 7174,
                  "src": "2345:28:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7143,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7474,
                    "src": "2345:18:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2344:30:39"
            },
            "payable": false,
            "returnParameters": {
              "id": 7151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7150,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 7174,
                  "src": "2426:10:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7149,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2425:12:39"
            },
            "scope": 7288,
            "src": "2318:321:39",
            "stateMutability": "nonpayable",
            "superFunction": 7488,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7209,
              "nodeType": "Block",
              "src": "2916:387:39",
              "statements": [
                {
                  "assignments": [
                    7186
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7186,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 7210,
                      "src": "3065:35:39",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7185,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7094,
                        "src": "3065:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7190,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 7187,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7100,
                      "src": "3103:9:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 7189,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7188,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7176,
                      "src": "3113:11:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3103:22:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3065:60:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7192,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7186,
                          "src": "3143:13:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 7193,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "enabled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7093,
                        "src": "3143:21:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7194,
                        "name": "ERROR_EXECUTOR_DISABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7086,
                        "src": "3166:23:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7191,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "3135:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3135:55:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7196,
                  "nodeType": "ExpressionStatement",
                  "src": "3135:55:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7201,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7197,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7186,
                        "src": "3200:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 7199,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7093,
                      "src": "3200:21:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 7200,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3224:5:39",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3200:29:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7202,
                  "nodeType": "ExpressionStatement",
                  "src": "3200:29:39"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7204,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7176,
                        "src": "3260:11:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7205,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7186,
                          "src": "3273:13:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 7206,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7091,
                        "src": "3273:22:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 7203,
                      "name": "DisableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7112,
                      "src": "3244:15:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 7207,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3244:52:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7208,
                  "nodeType": "EmitStatement",
                  "src": "3239:57:39"
                }
              ]
            },
            "documentation": "@notice Disable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 7210,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7179,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7074,
                    "src": "2871:21:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7181,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7176,
                        "src": "2898:11:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7180,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 5035,
                      "src": "2894:3:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7182,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2894:16:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7183,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7178,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6059,
                  "src": "2865:5:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2865:46:39"
              }
            ],
            "name": "disableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7177,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7176,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7210,
                  "src": "2819:19:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7175,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2819:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2818:21:39"
            },
            "payable": false,
            "returnParameters": {
              "id": 7184,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2916:0:39"
            },
            "scope": 7288,
            "src": "2788:515:39",
            "stateMutability": "nonpayable",
            "superFunction": 7493,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7249,
              "nodeType": "Block",
              "src": "3614:246:39",
              "statements": [
                {
                  "assignments": [
                    7225
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7225,
                      "name": "executorEntry",
                      "nodeType": "VariableDeclaration",
                      "scope": 7250,
                      "src": "3624:35:39",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7224,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7094,
                        "src": "3624:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7229,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 7226,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7100,
                      "src": "3662:9:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 7228,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7227,
                      "name": "_executorId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7212,
                      "src": "3672:11:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3662:22:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3624:60:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3702:22:39",
                        "subExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7231,
                            "name": "executorEntry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7225,
                            "src": "3703:13:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                              "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                            }
                          },
                          "id": 7232,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "enabled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7093,
                          "src": "3703:21:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7234,
                        "name": "ERROR_EXECUTOR_ENABLED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7083,
                        "src": "3726:22:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7230,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "3694:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3694:55:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7236,
                  "nodeType": "ExpressionStatement",
                  "src": "3694:55:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7241,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7237,
                        "name": "executorEntry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7225,
                        "src": "3759:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 7239,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7093,
                      "src": "3759:21:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 7240,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3783:4:39",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3759:28:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7242,
                  "nodeType": "ExpressionStatement",
                  "src": "3759:28:39"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7244,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7212,
                        "src": "3817:11:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7245,
                          "name": "executorEntry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7225,
                          "src": "3830:13:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                            "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                          }
                        },
                        "id": 7246,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "executor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7091,
                        "src": "3830:22:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 7243,
                      "name": "EnableExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7106,
                      "src": "3802:14:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 7247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3802:51:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7248,
                  "nodeType": "EmitStatement",
                  "src": "3797:56:39"
                }
              ]
            },
            "documentation": "@notice Enable script executor with ID `_executorId`\n@param _executorId Identifier of the executor in the registry",
            "id": 7250,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7215,
                    "name": "REGISTRY_MANAGER_ROLE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7074,
                    "src": "3533:21:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7217,
                        "name": "_executorId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7212,
                        "src": "3560:11:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7216,
                      "name": "arr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4798,
                        4813,
                        4833,
                        4848,
                        4868,
                        4889,
                        4913,
                        4933,
                        4962,
                        4987,
                        5012,
                        5035,
                        5066,
                        5105,
                        5152,
                        5207
                      ],
                      "referencedDeclaration": 5035,
                      "src": "3556:3:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      }
                    },
                    "id": 7218,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3556:16:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  }
                ],
                "id": 7219,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7214,
                  "name": "authP",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6059,
                  "src": "3527:5:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                    "typeString": "modifier (bytes32,uint256[] memory)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3527:46:39"
              },
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 7221,
                    "name": "_executorId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7212,
                    "src": "3597:11:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 7222,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7220,
                  "name": "executorExists",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 7129,
                  "src": "3582:14:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint256_$",
                    "typeString": "modifier (uint256)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3582:27:39"
              }
            ],
            "name": "enableScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7213,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7212,
                  "name": "_executorId",
                  "nodeType": "VariableDeclaration",
                  "scope": 7250,
                  "src": "3481:19:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7211,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3481:7:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3480:21:39"
            },
            "payable": false,
            "returnParameters": {
              "id": 7223,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3614:0:39"
            },
            "scope": 7288,
            "src": "3451:409:39",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7286,
              "nodeType": "Block",
              "src": "4110:402:39",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7258,
                            "name": "_script",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7252,
                            "src": "4128:7:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 7259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4128:14:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7260,
                          "name": "SCRIPT_START_LOCATION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7077,
                          "src": "4146:21:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4128:39:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7262,
                        "name": "ERROR_SCRIPT_LENGTH_TOO_SHORT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7089,
                        "src": "4169:29:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 7257,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        10407,
                        10408
                      ],
                      "referencedDeclaration": 10408,
                      "src": "4120:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4120:79:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7264,
                  "nodeType": "ExpressionStatement",
                  "src": "4120:79:39"
                },
                {
                  "assignments": [
                    7266
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7266,
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "scope": 7287,
                      "src": "4209:10:39",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7265,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4209:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7270,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7267,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7252,
                        "src": "4222:7:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 7268,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getSpecId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7516,
                      "src": "4222:17:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (uint32)"
                      }
                    },
                    "id": 7269,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4222:19:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4209:32:39"
                },
                {
                  "assignments": [
                    7272
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7272,
                      "name": "entry",
                      "nodeType": "VariableDeclaration",
                      "scope": 7287,
                      "src": "4391:27:39",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                        "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7271,
                        "name": "ExecutorEntry",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7094,
                        "src": "4391:13:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7276,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 7273,
                      "name": "executors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7100,
                      "src": "4421:9:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ExecutorEntry_$7094_storage_$",
                        "typeString": "mapping(uint256 => struct EVMScriptRegistry.ExecutorEntry storage ref)"
                      }
                    },
                    "id": 7275,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7274,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7266,
                      "src": "4431:2:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4421:13:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage",
                      "typeString": "struct EVMScriptRegistry.ExecutorEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4391:43:39"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7277,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7272,
                        "src": "4451:5:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 7278,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "enabled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7093,
                      "src": "4451:13:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4503:1:39",
                          "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": 7281,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7474,
                        "src": "4484:18:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$7474_$",
                          "typeString": "type(contract IEVMScriptExecutor)"
                        }
                      },
                      "id": 7283,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4484:21:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "id": 7284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "4451:54:39",
                    "trueExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7279,
                        "name": "entry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7272,
                        "src": "4467:5:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExecutorEntry_$7094_storage_ptr",
                          "typeString": "struct EVMScriptRegistry.ExecutorEntry storage pointer"
                        }
                      },
                      "id": 7280,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "executor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7091,
                      "src": "4467:14:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                        "typeString": "contract IEVMScriptExecutor"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 7256,
                  "id": 7285,
                  "nodeType": "Return",
                  "src": "4444:61:39"
                }
              ]
            },
            "documentation": "@dev Get the script executor that can execute a particular script based on its first 4 bytes\n@param _script EVMScript being inspected",
            "id": 7287,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7252,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 7287,
                  "src": "4054:13:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7251,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4054:5:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4053:15:39"
            },
            "payable": false,
            "returnParameters": {
              "id": 7256,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7255,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7287,
                  "src": "4090:18:39",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7254,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7474,
                    "src": "4090:18:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$7474",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4089:20:39"
            },
            "scope": 7288,
            "src": "4027:485:39",
            "stateMutability": "view",
            "superFunction": 7500,
            "visibility": "public"
          }
        ],
        "scope": 7289,
        "src": "236:4278:39"
      }
    ],
    "src": "0:4515:39"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.583Z",
  "devdoc": {
    "methods": {
      "addScriptExecutor(address)": {
        "params": {
          "_executor": "Address of the IEVMScriptExecutor that will be added to the registry"
        },
        "return": "id Identifier of the executor in the registry"
      },
      "allowRecoverability(address)": {
        "details": "By default deriving from AragonApp makes it recoverable",
        "params": {
          "token": "Token address that would be recovered"
        },
        "return": "bool whether the app allows the recovery"
      },
      "canPerform(address,bytes32,uint256[])": {
        "details": "Check whether an action can be performed by a sender for a particular role on this app",
        "params": {
          "_params": "Permission params for the role",
          "_role": "Role on this app",
          "_sender": "Sender of the call"
        },
        "return": "Boolean indicating whether the sender has the permissions to perform the action.        Always returns false if the app hasn't been initialized yet."
      },
      "disableScriptExecutor(uint256)": {
        "params": {
          "_executorId": "Identifier of the executor in the registry"
        }
      },
      "enableScriptExecutor(uint256)": {
        "params": {
          "_executorId": "Identifier of the executor in the registry"
        }
      },
      "getInitializationBlock()": {
        "return": "Block number in which the contract was initialized"
      },
      "getRecoveryVault()": {
        "details": "Get the recovery vault for the app",
        "return": "Recovery vault address for the app"
      },
      "getScriptExecutor(bytes)": {
        "details": "Get the script executor that can execute a particular script based on its first 4 bytes",
        "params": {
          "_script": "EVMScript being inspected"
        }
      },
      "hasInitialized()": {
        "return": "Whether the contract has been initialized by the time of the current block"
      },
      "transferToVault(address)": {
        "params": {
          "_token": "Token balance to be sent to recovery vault."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "addScriptExecutor(address)": {
        "notice": "Add a new script executor with address `_executor` to the registry"
      },
      "disableScriptExecutor(uint256)": {
        "notice": "Disable script executor with ID `_executorId`"
      },
      "enableScriptExecutor(uint256)": {
        "notice": "Enable script executor with ID `_executorId`"
      },
      "initialize()": {
        "notice": "Initialize the registry"
      },
      "transferToVault(address)": {
        "notice": "Send funds to recovery Vault. This contract should never receive funds,        but in case it does, this function allows one to recover them."
      }
    }
  }
}