{
  "contractName": "EVMScriptRunner",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "hasInitialized",
      "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": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "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"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getEVMScriptExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEVMScriptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061043e806100206000396000f3006080604052600436106100775763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac0811461007c5780632914b9bd146100a557806380afdea8146101275780638b3dd7491461014e578063a479e50814610163578063d4aae0c414610178575b600080fd5b34801561008857600080fd5b5061009161018d565b604080519115158252519081900360200190f35b3480156100b157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100fe9436949293602493928401919081908401838280828437509497506101b69650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561013357600080fd5b5061013c6102c2565b60408051918252519081900360200190f35b34801561015a57600080fd5b5061013c6102f2565b34801561016f57600080fd5b506100fe61031d565b34801561018457600080fd5b506100fe6103df565b6000806101986102f2565b905080158015906101b05750806101ad61040a565b10155b91505090565b60006101c061031d565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561024457818101518382015260200161022c565b50505050905090810190601f1680156102715780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561029057600080fd5b505af11580156102a4573d6000803e3d6000fd5b505050506040513d60208110156102ba57600080fd5b505192915050565b60006102ed7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b61040e565b905090565b60006102ed7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e61040e565b6000806103286103df565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561029057600080fd5b60006102ed7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b61040e565b4390565b54905600a165627a7a72305820cc3974bb373b20c68d9d38e5662eb330134cf93b21e3f1b51d1698267b3f39630029",
  "deployedBytecode": "0x6080604052600436106100775763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac0811461007c5780632914b9bd146100a557806380afdea8146101275780638b3dd7491461014e578063a479e50814610163578063d4aae0c414610178575b600080fd5b34801561008857600080fd5b5061009161018d565b604080519115158252519081900360200190f35b3480156100b157600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100fe9436949293602493928401919081908401838280828437509497506101b69650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561013357600080fd5b5061013c6102c2565b60408051918252519081900360200190f35b34801561015a57600080fd5b5061013c6102f2565b34801561016f57600080fd5b506100fe61031d565b34801561018457600080fd5b506100fe6103df565b6000806101986102f2565b905080158015906101b05750806101ad61040a565b10155b91505090565b60006101c061031d565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561024457818101518382015260200161022c565b50505050905090810190601f1680156102715780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561029057600080fd5b505af11580156102a4573d6000803e3d6000fd5b505050506040513d60208110156102ba57600080fd5b505192915050565b60006102ed7fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b61040e565b905090565b60006102ed7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e61040e565b6000806103286103df565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b15801561029057600080fd5b60006102ed7f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b61040e565b4390565b54905600a165627a7a72305820cc3974bb373b20c68d9d38e5662eb330134cf93b21e3f1b51d1698267b3f39630029",
  "sourceMap": "254:4465:42:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;254:4465:42;;;;;;;",
  "deployedSourceMap": "254:4465:42:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:208:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1128:208:32;;;;;;;;;;;;;;;;;;;;;;795:179:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;795:179:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;795:179:42;;-1:-1:-1;795:179:42;;-1:-1:-1;;;;;;;795:179:42;;;;;;;;;;;;;;;;;;;;796:106:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;796:106:22;;;;;;;;;;;;;;;;;;;;881:137:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;881:137:32;;;;980:231:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;980:231:42;;;;674:116:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;674:116:22;;;;1128:208:32;1175:4;1191:27;1221:24;:22;:24::i;:::-;1191:54;-1:-1:-1;1262:24:32;;;;;:67;;;1310:19;1290:16;:14;:16::i;:::-;:39;;1262:67;1255:74;;1128:208;;:::o;795:179:42:-;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:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;917:49:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;917:49:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;917:49:42;;795:179;-1:-1:-1;;795:179:42:o;796:106:22:-;834:7;860:35;601:66;860:33;:35::i;:::-;853:42;;796:106;:::o;881:137:32:-;936:7;962:49;345:66;962:47;:49::i;980:231:42:-;1033:18;1063:20;1086:8;:6;:8::i;:::-;:69;;;;;;1368:66:53;1086:69:42;;;;330:66:44;1086:69:42;;;;;;:15;;;;;;;;:69;;;;;;;;;;;;;;;;:15;:69;;;5:2:-1;;;;30:1;27;20:12;674:116:22;713:7;747:35;485:66;747:33;:35::i;347:94:37:-;422:12;347:94;:::o;379:134:39:-;490:15;;480:27::o",
  "source": "/*\n * SPDX-License-Identitifer:    MIT\n */\n\npragma solidity ^0.4.24;\n\nimport \"./IEVMScriptExecutor.sol\";\nimport \"./IEVMScriptRegistry.sol\";\n\nimport \"../apps/AppStorage.sol\";\nimport \"../kernel/KernelConstants.sol\";\nimport \"../common/Initializable.sol\";\n\n\ncontract EVMScriptRunner is AppStorage, Initializable, EVMScriptRegistryConstants, KernelNamespaceConstants {\n    string private constant ERROR_EXECUTOR_UNAVAILABLE = \"EVMRUN_EXECUTOR_UNAVAILABLE\";\n    string private constant ERROR_PROTECTED_STATE_MODIFIED = \"EVMRUN_PROTECTED_STATE_MODIFIED\";\n\n    /* This is manually crafted in assembly\n    string private constant ERROR_EXECUTOR_INVALID_RETURN = \"EVMRUN_EXECUTOR_INVALID_RETURN\";\n    */\n\n    event ScriptResult(address indexed executor, bytes script, bytes input, bytes returnData);\n\n    function getEVMScriptExecutor(bytes _script) public view returns (IEVMScriptExecutor) {\n        return IEVMScriptExecutor(getEVMScriptRegistry().getScriptExecutor(_script));\n    }\n\n    function getEVMScriptRegistry() public view returns (IEVMScriptRegistry) {\n        address registryAddr = kernel().getApp(KERNEL_APP_ADDR_NAMESPACE, EVMSCRIPT_REGISTRY_APP_ID);\n        return IEVMScriptRegistry(registryAddr);\n    }\n\n    function runScript(bytes _script, bytes _input, address[] _blacklist)\n        internal\n        isInitialized\n        protectState\n        returns (bytes)\n    {\n        IEVMScriptExecutor executor = getEVMScriptExecutor(_script);\n        require(address(executor) != address(0), ERROR_EXECUTOR_UNAVAILABLE);\n\n        bytes4 sig = executor.execScript.selector;\n        bytes memory data = abi.encodeWithSelector(sig, _script, _input, _blacklist);\n\n        bytes memory output;\n        assembly {\n            let success := delegatecall(\n                gas,                // forward all gas\n                executor,           // address\n                add(data, 0x20),    // calldata start\n                mload(data),        // calldata length\n                0,                  // don't write output (we'll handle this ourselves)\n                0                   // don't write output\n            )\n\n            output := mload(0x40) // free mem ptr get\n\n            switch success\n            case 0 {\n                // If the call errored, forward its full error data\n                returndatacopy(output, 0, returndatasize)\n                revert(output, returndatasize)\n            }\n            default {\n                switch gt(returndatasize, 0x3f)\n                case 0 {\n                    // Need at least 0x40 bytes returned for properly ABI-encoded bytes values,\n                    // revert with \"EVMRUN_EXECUTOR_INVALID_RETURN\"\n                    // See remix: doing a `revert(\"EVMRUN_EXECUTOR_INVALID_RETURN\")` always results in\n                    // this memory layout\n                    mstore(output, 0x08c379a000000000000000000000000000000000000000000000000000000000)         // error identifier\n                    mstore(add(output, 0x04), 0x0000000000000000000000000000000000000000000000000000000000000020) // starting offset\n                    mstore(add(output, 0x24), 0x000000000000000000000000000000000000000000000000000000000000001e) // reason length\n                    mstore(add(output, 0x44), 0x45564d52554e5f4558454355544f525f494e56414c49445f52455455524e0000) // reason\n\n                    revert(output, 100) // 100 = 4 + 3 * 32 (error identifier + 3 words for the ABI encoded error)\n                }\n                default {\n                    // Copy result\n                    //\n                    // Needs to perform an ABI decode for the expected `bytes` return type of\n                    // `executor.execScript()` as solidity will automatically ABI encode the returned bytes as:\n                    //    [ position of the first dynamic length return value = 0x20 (32 bytes) ]\n                    //    [ output length (32 bytes) ]\n                    //    [ output content (N bytes) ]\n                    //\n                    // Perform the ABI decode by ignoring the first 32 bytes of the return data\n                    let copysize := sub(returndatasize, 0x20)\n                    returndatacopy(output, 0x20, copysize)\n\n                    mstore(0x40, add(output, copysize)) // free mem ptr set\n                }\n            }\n        }\n\n        emit ScriptResult(address(executor), _script, _input, output);\n\n        return output;\n    }\n\n    modifier protectState {\n        address preKernel = address(kernel());\n        bytes32 preAppId = appId();\n        _; // exec\n        require(address(kernel()) == preKernel, ERROR_PROTECTED_STATE_MODIFIED);\n        require(appId() == preAppId, ERROR_PROTECTED_STATE_MODIFIED);\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/evmscript/EVMScriptRunner.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRunner.sol",
    "exportedSymbols": {
      "EVMScriptRunner": [
        11823
      ]
    },
    "id": 11824,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11659,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:42"
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 11660,
        "nodeType": "ImportDirective",
        "scope": 11824,
        "sourceUnit": 11844,
        "src": "70:34:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 11661,
        "nodeType": "ImportDirective",
        "scope": 11824,
        "sourceUnit": 11871,
        "src": "105:34:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AppStorage.sol",
        "file": "../apps/AppStorage.sol",
        "id": 11662,
        "nodeType": "ImportDirective",
        "scope": 11824,
        "sourceUnit": 10366,
        "src": "141:32:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "../kernel/KernelConstants.sol",
        "id": 11663,
        "nodeType": "ImportDirective",
        "scope": 11824,
        "sourceUnit": 13115,
        "src": "174:39:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Initializable.sol",
        "file": "../common/Initializable.sol",
        "id": 11664,
        "nodeType": "ImportDirective",
        "scope": 11824,
        "sourceUnit": 10811,
        "src": "214:37:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11665,
              "name": "AppStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10365,
              "src": "282:10:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppStorage_$10365",
                "typeString": "contract AppStorage"
              }
            },
            "id": 11666,
            "nodeType": "InheritanceSpecifier",
            "src": "282:10:42"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11667,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10810,
              "src": "294:13:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$10810",
                "typeString": "contract Initializable"
              }
            },
            "id": 11668,
            "nodeType": "InheritanceSpecifier",
            "src": "294:13:42"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11669,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11850,
              "src": "309:26:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$11850",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 11670,
            "nodeType": "InheritanceSpecifier",
            "src": "309:26:42"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11671,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13114,
              "src": "337:24:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$13114",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 11672,
            "nodeType": "InheritanceSpecifier",
            "src": "337:24:42"
          }
        ],
        "contractDependencies": [
          10365,
          10810,
          11200,
          11850,
          13114
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 11823,
        "linearizedBaseContracts": [
          11823,
          13114,
          11850,
          10810,
          11200,
          10365
        ],
        "name": "EVMScriptRunner",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 11675,
            "name": "ERROR_EXECUTOR_UNAVAILABLE",
            "nodeType": "VariableDeclaration",
            "scope": 11823,
            "src": "368:82:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11673,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "368:6:42",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f4558454355544f525f554e415641494c41424c45",
              "id": 11674,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "421:29:42",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8eaa9277b7a571cc4e32be0346d713d2afa465c007646deacfabeba4f629e0be",
                "typeString": "literal_string \"EVMRUN_EXECUTOR_UNAVAILABLE\""
              },
              "value": "EVMRUN_EXECUTOR_UNAVAILABLE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11678,
            "name": "ERROR_PROTECTED_STATE_MODIFIED",
            "nodeType": "VariableDeclaration",
            "scope": 11823,
            "src": "456:90:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11676,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "456:6:42",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f50524f5445435445445f53544154455f4d4f444946494544",
              "id": 11677,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "513:33:42",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_93fe2db835b78d0be70801a075eae0aab8d5496824b1a06caec0dd78db98ba92",
                "typeString": "literal_string \"EVMRUN_PROTECTED_STATE_MODIFIED\""
              },
              "value": "EVMRUN_PROTECTED_STATE_MODIFIED"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 11688,
            "name": "ScriptResult",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 11687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11680,
                  "indexed": true,
                  "name": "executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 11688,
                  "src": "718:24:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11679,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11682,
                  "indexed": false,
                  "name": "script",
                  "nodeType": "VariableDeclaration",
                  "scope": 11688,
                  "src": "744:12:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11681,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11684,
                  "indexed": false,
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 11688,
                  "src": "758:11:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11683,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "758:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11686,
                  "indexed": false,
                  "name": "returnData",
                  "nodeType": "VariableDeclaration",
                  "scope": 11688,
                  "src": "771:16:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11685,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "771:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "717:71:42"
            },
            "src": "699:90:42"
          },
          {
            "body": {
              "id": 11703,
              "nodeType": "Block",
              "src": "881:93:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11699,
                            "name": "_script",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11690,
                            "src": "958:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 11696,
                              "name": "getEVMScriptRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11723,
                              "src": "917:20:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IEVMScriptRegistry_$11870_$",
                                "typeString": "function () view returns (contract IEVMScriptRegistry)"
                              }
                            },
                            "id": 11697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "917:22:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptRegistry_$11870",
                              "typeString": "contract IEVMScriptRegistry"
                            }
                          },
                          "id": 11698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getScriptExecutor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11869,
                          "src": "917:40:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$11843_$",
                            "typeString": "function (bytes memory) view external returns (contract IEVMScriptExecutor)"
                          }
                        },
                        "id": 11700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "917:49:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 11695,
                      "name": "IEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11843,
                      "src": "898:18:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$11843_$",
                        "typeString": "type(contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 11701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "898:69:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 11694,
                  "id": 11702,
                  "nodeType": "Return",
                  "src": "891:76:42"
                }
              ]
            },
            "documentation": null,
            "id": 11704,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11690,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 11704,
                  "src": "825:13:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11689,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "825:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "824:15:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 11694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11693,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11704,
                  "src": "861:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11692,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11843,
                    "src": "861:18:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "860:20:42"
            },
            "scope": 11823,
            "src": "795:179:42",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11722,
              "nodeType": "Block",
              "src": "1053:158:42",
              "statements": [
                {
                  "assignments": [
                    11710
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11710,
                      "name": "registryAddr",
                      "nodeType": "VariableDeclaration",
                      "scope": 11723,
                      "src": "1063:20:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11709,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1063:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11717,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11714,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13113,
                        "src": "1102:25:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11715,
                        "name": "EVMSCRIPT_REGISTRY_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "1129:25:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 11711,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10328,
                          "src": "1086:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$12600_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 11712,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1086:8:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$12600",
                          "typeString": "contract IKernel"
                        }
                      },
                      "id": 11713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getApp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12599,
                      "src": "1086:15:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 11716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1086:69:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1063:92:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11719,
                        "name": "registryAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11710,
                        "src": "1191:12:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11718,
                      "name": "IEVMScriptRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11870,
                      "src": "1172:18:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptRegistry_$11870_$",
                        "typeString": "type(contract IEVMScriptRegistry)"
                      }
                    },
                    "id": 11720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1172:32:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$11870",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "functionReturnParameters": 11708,
                  "id": 11721,
                  "nodeType": "Return",
                  "src": "1165:39:42"
                }
              ]
            },
            "documentation": null,
            "id": 11723,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptRegistry",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11705,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1009:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 11708,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11707,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11723,
                  "src": "1033:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptRegistry_$11870",
                    "typeString": "contract IEVMScriptRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11706,
                    "name": "IEVMScriptRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11870,
                    "src": "1033:18:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$11870",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1032:20:42"
            },
            "scope": 11823,
            "src": "980:231:42",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11787,
              "nodeType": "Block",
              "src": "1375:3054:42",
              "statements": [
                {
                  "assignments": [
                    11740
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11740,
                      "name": "executor",
                      "nodeType": "VariableDeclaration",
                      "scope": 11788,
                      "src": "1385:27:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                        "typeString": "contract IEVMScriptExecutor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11739,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11843,
                        "src": "1385:18:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11744,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11742,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11725,
                        "src": "1436:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11741,
                      "name": "getEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11704,
                      "src": "1415:20:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$11843_$",
                        "typeString": "function (bytes memory) view returns (contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 11743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1415:29:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1385:59:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 11752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11747,
                              "name": "executor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11740,
                              "src": "1470:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            ],
                            "id": 11746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1462:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 11748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1462:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 11750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1491:1:42",
                              "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": 11749,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1483:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 11751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1483:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1462:31:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11753,
                        "name": "ERROR_EXECUTOR_UNAVAILABLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11675,
                        "src": "1495:26:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11745,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "1454:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1454:68:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11755,
                  "nodeType": "ExpressionStatement",
                  "src": "1454:68:42"
                },
                {
                  "assignments": [
                    11757
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11757,
                      "name": "sig",
                      "nodeType": "VariableDeclaration",
                      "scope": 11788,
                      "src": "1533:10:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 11756,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1533:6:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11761,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11758,
                        "name": "executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11740,
                        "src": "1546:8:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "id": 11759,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "execScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11837,
                      "src": "1546:19:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) external returns (bytes memory)"
                      }
                    },
                    "id": 11760,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1546:28:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1533:41:42"
                },
                {
                  "assignments": [
                    11763
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11763,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 11788,
                      "src": "1584:17:42",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11762,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1584:5:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11771,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11766,
                        "name": "sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11757,
                        "src": "1627:3:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11767,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11725,
                        "src": "1632:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11768,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11727,
                        "src": "1641:6:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11769,
                        "name": "_blacklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11730,
                        "src": "1649:10:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11764,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15140,
                        "src": "1604:3:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 11765,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1604:22:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 11770,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1604:56:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1584:76:42"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11773,
                      "name": "output",
                      "nodeType": "VariableDeclaration",
                      "scope": 11788,
                      "src": "1671:19:42",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11772,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1671:5:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11774,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1671:19:42"
                },
                {
                  "externalReferences": [
                    {
                      "data": {
                        "declaration": 11763,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1930:4:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "data": {
                        "declaration": 11763,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1874:4:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2136:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "executor": {
                        "declaration": 11740,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1823:8:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2845:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2980:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3113:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3244:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3365:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "4185:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2326:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2376:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "4247:6:42",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11775,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    let success := delegatecall(gas(), executor, add(data, 0x20), mload(data), 0, 0)\n    output := mload(0x40)\n    switch success\n    case 0 {\n        returndatacopy(output, 0, returndatasize())\n        revert(output, returndatasize())\n    }\n    default {\n        switch gt(returndatasize(), 0x3f)\n        case 0 {\n            mstore(output, 0x08c379a000000000000000000000000000000000000000000000000000000000)\n            mstore(add(output, 0x04), 0x0000000000000000000000000000000000000000000000000000000000000020)\n            mstore(add(output, 0x24), 0x000000000000000000000000000000000000000000000000000000000000001e)\n            mstore(add(output, 0x44), 0x45564d52554e5f4558454355544f525f494e56414c49445f52455455524e0000)\n            revert(output, 100)\n        }\n        default {\n            let copysize := sub(returndatasize(), 0x20)\n            returndatacopy(output, 0x20, copysize)\n            mstore(0x40, add(output, copysize))\n        }\n    }\n}",
                  "src": "1700:2641:42"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11778,
                            "name": "executor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11740,
                            "src": "4363:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          ],
                          "id": 11777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4355:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 11779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4355:17:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11780,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11725,
                        "src": "4374:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11781,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11727,
                        "src": "4383:6:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11782,
                        "name": "output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11773,
                        "src": "4391:6:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11776,
                      "name": "ScriptResult",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11688,
                      "src": "4342:12:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,bytes memory,bytes memory,bytes memory)"
                      }
                    },
                    "id": 11783,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4342:56:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11784,
                  "nodeType": "EmitStatement",
                  "src": "4337:61:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11785,
                    "name": "output",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11773,
                    "src": "4416:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 11738,
                  "id": 11786,
                  "nodeType": "Return",
                  "src": "4409:13:42"
                }
              ]
            },
            "documentation": null,
            "id": 11788,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 11733,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11732,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10752,
                  "src": "1312:13:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1312:13:42"
              },
              {
                "arguments": null,
                "id": 11735,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11734,
                  "name": "protectState",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11822,
                  "src": "1334:12:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1334:12:42"
              }
            ],
            "name": "runScript",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11725,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 11788,
                  "src": "1236:13:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11724,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1236:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11727,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 11788,
                  "src": "1251:12:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11726,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1251:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11730,
                  "name": "_blacklist",
                  "nodeType": "VariableDeclaration",
                  "scope": 11788,
                  "src": "1265:20:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11728,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1265:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11729,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1265:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1235:51:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 11738,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11737,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11788,
                  "src": "1364:5:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11736,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1364:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1363:7:42"
            },
            "scope": 11823,
            "src": "1217:3212:42",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11821,
              "nodeType": "Block",
              "src": "4457:260:42",
              "statements": [
                {
                  "assignments": [
                    11791
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11791,
                      "name": "preKernel",
                      "nodeType": "VariableDeclaration",
                      "scope": 11822,
                      "src": "4467:17:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11790,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4467:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11796,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 11793,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10328,
                          "src": "4495:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$12600_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 11794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4495:8:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$12600",
                          "typeString": "contract IKernel"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IKernel_$12600",
                          "typeString": "contract IKernel"
                        }
                      ],
                      "id": 11792,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4487:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 11795,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4487:17:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4467:37:42"
                },
                {
                  "assignments": [
                    11798
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11798,
                      "name": "preAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 11822,
                      "src": "4514:16:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11797,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4514:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11801,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 11799,
                      "name": "appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10338,
                      "src": "4533:5:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                        "typeString": "function () view returns (bytes32)"
                      }
                    },
                    "id": 11800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4533:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4514:26:42"
                },
                {
                  "id": 11802,
                  "nodeType": "PlaceholderStatement",
                  "src": "4550:1:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 11809,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11805,
                                "name": "kernel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10328,
                                "src": "4585:6:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$12600_$",
                                  "typeString": "function () view returns (contract IKernel)"
                                }
                              },
                              "id": 11806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4585:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IKernel_$12600",
                                "typeString": "contract IKernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IKernel_$12600",
                                "typeString": "contract IKernel"
                              }
                            ],
                            "id": 11804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4577:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 11807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4577:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 11808,
                          "name": "preKernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11791,
                          "src": "4598:9:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4577:30:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11810,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11678,
                        "src": "4609:30:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11803,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "4569:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4569:71:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11812,
                  "nodeType": "ExpressionStatement",
                  "src": "4569:71:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 11817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 11814,
                            "name": "appId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10338,
                            "src": "4658:5:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view returns (bytes32)"
                            }
                          },
                          "id": 11815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4658:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 11816,
                          "name": "preAppId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11798,
                          "src": "4669:8:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "4658:19:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11818,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11678,
                        "src": "4679:30:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11813,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "4650:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4650:60:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11820,
                  "nodeType": "ExpressionStatement",
                  "src": "4650:60:42"
                }
              ]
            },
            "documentation": null,
            "id": 11822,
            "name": "protectState",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 11789,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4457:0:42"
            },
            "src": "4435:282:42",
            "visibility": "internal"
          }
        ],
        "scope": 11824,
        "src": "254:4465:42"
      }
    ],
    "src": "44:4676:42"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/evmscript/EVMScriptRunner.sol",
    "exportedSymbols": {
      "EVMScriptRunner": [
        11823
      ]
    },
    "id": 11824,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11659,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:42"
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptExecutor.sol",
        "file": "./IEVMScriptExecutor.sol",
        "id": 11660,
        "nodeType": "ImportDirective",
        "scope": 11824,
        "sourceUnit": 11844,
        "src": "70:34:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/evmscript/IEVMScriptRegistry.sol",
        "file": "./IEVMScriptRegistry.sol",
        "id": 11661,
        "nodeType": "ImportDirective",
        "scope": 11824,
        "sourceUnit": 11871,
        "src": "105:34:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/apps/AppStorage.sol",
        "file": "../apps/AppStorage.sol",
        "id": 11662,
        "nodeType": "ImportDirective",
        "scope": 11824,
        "sourceUnit": 10366,
        "src": "141:32:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/kernel/KernelConstants.sol",
        "file": "../kernel/KernelConstants.sol",
        "id": 11663,
        "nodeType": "ImportDirective",
        "scope": 11824,
        "sourceUnit": 13115,
        "src": "174:39:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Initializable.sol",
        "file": "../common/Initializable.sol",
        "id": 11664,
        "nodeType": "ImportDirective",
        "scope": 11824,
        "sourceUnit": 10811,
        "src": "214:37:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11665,
              "name": "AppStorage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10365,
              "src": "282:10:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AppStorage_$10365",
                "typeString": "contract AppStorage"
              }
            },
            "id": 11666,
            "nodeType": "InheritanceSpecifier",
            "src": "282:10:42"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11667,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10810,
              "src": "294:13:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$10810",
                "typeString": "contract Initializable"
              }
            },
            "id": 11668,
            "nodeType": "InheritanceSpecifier",
            "src": "294:13:42"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11669,
              "name": "EVMScriptRegistryConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11850,
              "src": "309:26:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EVMScriptRegistryConstants_$11850",
                "typeString": "contract EVMScriptRegistryConstants"
              }
            },
            "id": 11670,
            "nodeType": "InheritanceSpecifier",
            "src": "309:26:42"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11671,
              "name": "KernelNamespaceConstants",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13114,
              "src": "337:24:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_KernelNamespaceConstants_$13114",
                "typeString": "contract KernelNamespaceConstants"
              }
            },
            "id": 11672,
            "nodeType": "InheritanceSpecifier",
            "src": "337:24:42"
          }
        ],
        "contractDependencies": [
          10365,
          10810,
          11200,
          11850,
          13114
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 11823,
        "linearizedBaseContracts": [
          11823,
          13114,
          11850,
          10810,
          11200,
          10365
        ],
        "name": "EVMScriptRunner",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 11675,
            "name": "ERROR_EXECUTOR_UNAVAILABLE",
            "nodeType": "VariableDeclaration",
            "scope": 11823,
            "src": "368:82:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11673,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "368:6:42",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f4558454355544f525f554e415641494c41424c45",
              "id": 11674,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "421:29:42",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_8eaa9277b7a571cc4e32be0346d713d2afa465c007646deacfabeba4f629e0be",
                "typeString": "literal_string \"EVMRUN_EXECUTOR_UNAVAILABLE\""
              },
              "value": "EVMRUN_EXECUTOR_UNAVAILABLE"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11678,
            "name": "ERROR_PROTECTED_STATE_MODIFIED",
            "nodeType": "VariableDeclaration",
            "scope": 11823,
            "src": "456:90:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 11676,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "456:6:42",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "45564d52554e5f50524f5445435445445f53544154455f4d4f444946494544",
              "id": 11677,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "513:33:42",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_93fe2db835b78d0be70801a075eae0aab8d5496824b1a06caec0dd78db98ba92",
                "typeString": "literal_string \"EVMRUN_PROTECTED_STATE_MODIFIED\""
              },
              "value": "EVMRUN_PROTECTED_STATE_MODIFIED"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 11688,
            "name": "ScriptResult",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 11687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11680,
                  "indexed": true,
                  "name": "executor",
                  "nodeType": "VariableDeclaration",
                  "scope": 11688,
                  "src": "718:24:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11679,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11682,
                  "indexed": false,
                  "name": "script",
                  "nodeType": "VariableDeclaration",
                  "scope": 11688,
                  "src": "744:12:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11681,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "744:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11684,
                  "indexed": false,
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 11688,
                  "src": "758:11:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11683,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "758:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11686,
                  "indexed": false,
                  "name": "returnData",
                  "nodeType": "VariableDeclaration",
                  "scope": 11688,
                  "src": "771:16:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11685,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "771:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "717:71:42"
            },
            "src": "699:90:42"
          },
          {
            "body": {
              "id": 11703,
              "nodeType": "Block",
              "src": "881:93:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11699,
                            "name": "_script",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11690,
                            "src": "958:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 11696,
                              "name": "getEVMScriptRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11723,
                              "src": "917:20:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IEVMScriptRegistry_$11870_$",
                                "typeString": "function () view returns (contract IEVMScriptRegistry)"
                              }
                            },
                            "id": 11697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "917:22:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptRegistry_$11870",
                              "typeString": "contract IEVMScriptRegistry"
                            }
                          },
                          "id": 11698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getScriptExecutor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11869,
                          "src": "917:40:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$11843_$",
                            "typeString": "function (bytes memory) view external returns (contract IEVMScriptExecutor)"
                          }
                        },
                        "id": 11700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "917:49:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      ],
                      "id": 11695,
                      "name": "IEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11843,
                      "src": "898:18:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptExecutor_$11843_$",
                        "typeString": "type(contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 11701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "898:69:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "functionReturnParameters": 11694,
                  "id": 11702,
                  "nodeType": "Return",
                  "src": "891:76:42"
                }
              ]
            },
            "documentation": null,
            "id": 11704,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptExecutor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11690,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 11704,
                  "src": "825:13:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11689,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "825:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "824:15:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 11694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11693,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11704,
                  "src": "861:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                    "typeString": "contract IEVMScriptExecutor"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11692,
                    "name": "IEVMScriptExecutor",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11843,
                    "src": "861:18:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "860:20:42"
            },
            "scope": 11823,
            "src": "795:179:42",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11722,
              "nodeType": "Block",
              "src": "1053:158:42",
              "statements": [
                {
                  "assignments": [
                    11710
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11710,
                      "name": "registryAddr",
                      "nodeType": "VariableDeclaration",
                      "scope": 11723,
                      "src": "1063:20:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11709,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1063:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11717,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11714,
                        "name": "KERNEL_APP_ADDR_NAMESPACE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13113,
                        "src": "1102:25:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11715,
                        "name": "EVMSCRIPT_REGISTRY_APP_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "1129:25:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 11711,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10328,
                          "src": "1086:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$12600_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 11712,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1086:8:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$12600",
                          "typeString": "contract IKernel"
                        }
                      },
                      "id": 11713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getApp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12599,
                      "src": "1086:15:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 11716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1086:69:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1063:92:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11719,
                        "name": "registryAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11710,
                        "src": "1191:12:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11718,
                      "name": "IEVMScriptRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11870,
                      "src": "1172:18:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IEVMScriptRegistry_$11870_$",
                        "typeString": "type(contract IEVMScriptRegistry)"
                      }
                    },
                    "id": 11720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1172:32:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$11870",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "functionReturnParameters": 11708,
                  "id": 11721,
                  "nodeType": "Return",
                  "src": "1165:39:42"
                }
              ]
            },
            "documentation": null,
            "id": 11723,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getEVMScriptRegistry",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11705,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1009:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 11708,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11707,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11723,
                  "src": "1033:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IEVMScriptRegistry_$11870",
                    "typeString": "contract IEVMScriptRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 11706,
                    "name": "IEVMScriptRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11870,
                    "src": "1033:18:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptRegistry_$11870",
                      "typeString": "contract IEVMScriptRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1032:20:42"
            },
            "scope": 11823,
            "src": "980:231:42",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11787,
              "nodeType": "Block",
              "src": "1375:3054:42",
              "statements": [
                {
                  "assignments": [
                    11740
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11740,
                      "name": "executor",
                      "nodeType": "VariableDeclaration",
                      "scope": 11788,
                      "src": "1385:27:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                        "typeString": "contract IEVMScriptExecutor"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11739,
                        "name": "IEVMScriptExecutor",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11843,
                        "src": "1385:18:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11744,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11742,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11725,
                        "src": "1436:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11741,
                      "name": "getEVMScriptExecutor",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11704,
                      "src": "1415:20:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_contract$_IEVMScriptExecutor_$11843_$",
                        "typeString": "function (bytes memory) view returns (contract IEVMScriptExecutor)"
                      }
                    },
                    "id": 11743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1415:29:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                      "typeString": "contract IEVMScriptExecutor"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1385:59:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 11752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11747,
                              "name": "executor",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11740,
                              "src": "1470:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                                "typeString": "contract IEVMScriptExecutor"
                              }
                            ],
                            "id": 11746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1462:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 11748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1462:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 11750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1491:1:42",
                              "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": 11749,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1483:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 11751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1483:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1462:31:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11753,
                        "name": "ERROR_EXECUTOR_UNAVAILABLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11675,
                        "src": "1495:26:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11745,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "1454:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1454:68:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11755,
                  "nodeType": "ExpressionStatement",
                  "src": "1454:68:42"
                },
                {
                  "assignments": [
                    11757
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11757,
                      "name": "sig",
                      "nodeType": "VariableDeclaration",
                      "scope": 11788,
                      "src": "1533:10:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "typeName": {
                        "id": 11756,
                        "name": "bytes4",
                        "nodeType": "ElementaryTypeName",
                        "src": "1533:6:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11761,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11758,
                        "name": "executor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11740,
                        "src": "1546:8:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                          "typeString": "contract IEVMScriptExecutor"
                        }
                      },
                      "id": 11759,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "execScript",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11837,
                      "src": "1546:19:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,bytes memory,address[] memory) external returns (bytes memory)"
                      }
                    },
                    "id": 11760,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "selector",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "1546:28:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1533:41:42"
                },
                {
                  "assignments": [
                    11763
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11763,
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "scope": 11788,
                      "src": "1584:17:42",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11762,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1584:5:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11771,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11766,
                        "name": "sig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11757,
                        "src": "1627:3:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11767,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11725,
                        "src": "1632:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11768,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11727,
                        "src": "1641:6:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11769,
                        "name": "_blacklist",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11730,
                        "src": "1649:10:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11764,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15140,
                        "src": "1604:3:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 11765,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1604:22:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 11770,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1604:56:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1584:76:42"
                },
                {
                  "assignments": [],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11773,
                      "name": "output",
                      "nodeType": "VariableDeclaration",
                      "scope": 11788,
                      "src": "1671:19:42",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11772,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1671:5:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11774,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1671:19:42"
                },
                {
                  "externalReferences": [
                    {
                      "data": {
                        "declaration": 11763,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1930:4:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "data": {
                        "declaration": 11763,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1874:4:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2136:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "executor": {
                        "declaration": 11740,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1823:8:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2845:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2980:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3113:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3244:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "3365:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "4185:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2326:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2376:6:42",
                        "valueSize": 1
                      }
                    },
                    {
                      "output": {
                        "declaration": 11773,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "4247:6:42",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 11775,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    let success := delegatecall(gas(), executor, add(data, 0x20), mload(data), 0, 0)\n    output := mload(0x40)\n    switch success\n    case 0 {\n        returndatacopy(output, 0, returndatasize())\n        revert(output, returndatasize())\n    }\n    default {\n        switch gt(returndatasize(), 0x3f)\n        case 0 {\n            mstore(output, 0x08c379a000000000000000000000000000000000000000000000000000000000)\n            mstore(add(output, 0x04), 0x0000000000000000000000000000000000000000000000000000000000000020)\n            mstore(add(output, 0x24), 0x000000000000000000000000000000000000000000000000000000000000001e)\n            mstore(add(output, 0x44), 0x45564d52554e5f4558454355544f525f494e56414c49445f52455455524e0000)\n            revert(output, 100)\n        }\n        default {\n            let copysize := sub(returndatasize(), 0x20)\n            returndatacopy(output, 0x20, copysize)\n            mstore(0x40, add(output, copysize))\n        }\n    }\n}",
                  "src": "1700:2641:42"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11778,
                            "name": "executor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11740,
                            "src": "4363:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_IEVMScriptExecutor_$11843",
                              "typeString": "contract IEVMScriptExecutor"
                            }
                          ],
                          "id": 11777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4355:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 11779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4355:17:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11780,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11725,
                        "src": "4374:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11781,
                        "name": "_input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11727,
                        "src": "4383:6:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11782,
                        "name": "output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11773,
                        "src": "4391:6:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11776,
                      "name": "ScriptResult",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11688,
                      "src": "4342:12:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,bytes memory,bytes memory,bytes memory)"
                      }
                    },
                    "id": 11783,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4342:56:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11784,
                  "nodeType": "EmitStatement",
                  "src": "4337:61:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11785,
                    "name": "output",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11773,
                    "src": "4416:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 11738,
                  "id": 11786,
                  "nodeType": "Return",
                  "src": "4409:13:42"
                }
              ]
            },
            "documentation": null,
            "id": 11788,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 11733,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11732,
                  "name": "isInitialized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10752,
                  "src": "1312:13:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1312:13:42"
              },
              {
                "arguments": null,
                "id": 11735,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11734,
                  "name": "protectState",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11822,
                  "src": "1334:12:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1334:12:42"
              }
            ],
            "name": "runScript",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11725,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 11788,
                  "src": "1236:13:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11724,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1236:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11727,
                  "name": "_input",
                  "nodeType": "VariableDeclaration",
                  "scope": 11788,
                  "src": "1251:12:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11726,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1251:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11730,
                  "name": "_blacklist",
                  "nodeType": "VariableDeclaration",
                  "scope": 11788,
                  "src": "1265:20:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 11728,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1265:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 11729,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1265:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1235:51:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 11738,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11737,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11788,
                  "src": "1364:5:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 11736,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1364:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1363:7:42"
            },
            "scope": 11823,
            "src": "1217:3212:42",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11821,
              "nodeType": "Block",
              "src": "4457:260:42",
              "statements": [
                {
                  "assignments": [
                    11791
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11791,
                      "name": "preKernel",
                      "nodeType": "VariableDeclaration",
                      "scope": 11822,
                      "src": "4467:17:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11790,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4467:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11796,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 11793,
                          "name": "kernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10328,
                          "src": "4495:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$12600_$",
                            "typeString": "function () view returns (contract IKernel)"
                          }
                        },
                        "id": 11794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4495:8:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IKernel_$12600",
                          "typeString": "contract IKernel"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IKernel_$12600",
                          "typeString": "contract IKernel"
                        }
                      ],
                      "id": 11792,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4487:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 11795,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4487:17:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4467:37:42"
                },
                {
                  "assignments": [
                    11798
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11798,
                      "name": "preAppId",
                      "nodeType": "VariableDeclaration",
                      "scope": 11822,
                      "src": "4514:16:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11797,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4514:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11801,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 11799,
                      "name": "appId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10338,
                      "src": "4533:5:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                        "typeString": "function () view returns (bytes32)"
                      }
                    },
                    "id": 11800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4533:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4514:26:42"
                },
                {
                  "id": 11802,
                  "nodeType": "PlaceholderStatement",
                  "src": "4550:1:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 11809,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 11805,
                                "name": "kernel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10328,
                                "src": "4585:6:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IKernel_$12600_$",
                                  "typeString": "function () view returns (contract IKernel)"
                                }
                              },
                              "id": 11806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4585:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IKernel_$12600",
                                "typeString": "contract IKernel"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IKernel_$12600",
                                "typeString": "contract IKernel"
                              }
                            ],
                            "id": 11804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4577:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 11807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4577:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 11808,
                          "name": "preKernel",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11791,
                          "src": "4598:9:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4577:30:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11810,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11678,
                        "src": "4609:30:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11803,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "4569:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4569:71:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11812,
                  "nodeType": "ExpressionStatement",
                  "src": "4569:71:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 11817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 11814,
                            "name": "appId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10338,
                            "src": "4658:5:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view returns (bytes32)"
                            }
                          },
                          "id": 11815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4658:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 11816,
                          "name": "preAppId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11798,
                          "src": "4669:8:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "4658:19:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11818,
                        "name": "ERROR_PROTECTED_STATE_MODIFIED",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11678,
                        "src": "4679:30:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 11813,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        15156,
                        15157
                      ],
                      "referencedDeclaration": 15157,
                      "src": "4650:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11819,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4650:60:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11820,
                  "nodeType": "ExpressionStatement",
                  "src": "4650:60:42"
                }
              ]
            },
            "documentation": null,
            "id": 11822,
            "name": "protectState",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 11789,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4457:0:42"
            },
            "src": "4435:282:42",
            "visibility": "internal"
          }
        ],
        "scope": 11824,
        "src": "254:4465:42"
      }
    ],
    "src": "44:4676:42"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-09-04T11:02:55.767Z"
}