{
  "contractName": "ScriptHelpers",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@aragon/os/contracts/evmscript/ScriptHelpers.sol\":\"ScriptHelpers\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@aragon/os/contracts/evmscript/ScriptHelpers.sol\":{\"keccak256\":\"0xb602b537d0a349e3b461b40dee544a13214cc2a69b3dd7dcc58a8992c5c7ff91\",\"urls\":[\"bzzr://ab7276544b833100a6f62cb21936c5e2399ad275a87094e3963fc32660541e68\"]}},\"version\":1}",
  "bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058206ecd9ca1299724a28a36f794767abdec7400e163f65beb6ac93b5bbbcd8555870029",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fd00a165627a7a723058206ecd9ca1299724a28a36f794767abdec7400e163f65beb6ac93b5bbbcd8555870029",
  "sourceMap": "71:1409:43:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24",
  "deployedSourceMap": "71:1409:43:-;;;;;;;;",
  "source": "/*\n * SPDX-License-Identitifer:    MIT\n */\n\npragma solidity ^0.4.24;\n\n\nlibrary ScriptHelpers {\n    function getSpecId(bytes _script) internal pure returns (uint32) {\n        return uint32At(_script, 0);\n    }\n\n    function uint256At(bytes _data, uint256 _location) internal pure returns (uint256 result) {\n        assembly {\n            result := mload(add(_data, add(0x20, _location)))\n        }\n    }\n\n    function addressAt(bytes _data, uint256 _location) internal pure returns (address result) {\n        uint256 word = uint256At(_data, _location);\n\n        assembly {\n            result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000),\n            0x1000000000000000000000000)\n        }\n    }\n\n    function uint32At(bytes _data, uint256 _location) internal pure returns (uint32 result) {\n        uint256 word = uint256At(_data, _location);\n\n        assembly {\n            result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000),\n            0x100000000000000000000000000000000000000000000000000000000)\n        }\n    }\n\n    function locationOf(bytes _data, uint256 _location) internal pure returns (uint256 result) {\n        assembly {\n            result := add(_data, add(0x20, _location))\n        }\n    }\n\n    function toBytes(bytes4 _sig) internal pure returns (bytes) {\n        bytes memory payload = new bytes(4);\n        assembly { mstore(add(payload, 0x20), _sig) }\n        return payload;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
    "exportedSymbols": {
      "ScriptHelpers": [
        7593
      ]
    },
    "id": 7594,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7503,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:43"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7593,
        "linearizedBaseContracts": [
          7593
        ],
        "name": "ScriptHelpers",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 7515,
              "nodeType": "Block",
              "src": "164:44:43",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7511,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7505,
                        "src": "190:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 7512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "199:1:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 7510,
                      "name": "uint32At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7563,
                      "src": "181:8:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                      }
                    },
                    "id": 7513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "181:20:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 7509,
                  "id": 7514,
                  "nodeType": "Return",
                  "src": "174:27:43"
                }
              ]
            },
            "documentation": null,
            "id": 7516,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getSpecId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7505,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 7516,
                  "src": "118:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7504,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "118:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "117:15:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7509,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7508,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7516,
                  "src": "156:6:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 7507,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "156:6:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "155:8:43"
            },
            "scope": 7593,
            "src": "99:109:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7526,
              "nodeType": "Block",
              "src": "304:98:43",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 7523,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "337:6:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 7518,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "357:5:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 7520,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "374:9:43",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7525,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := mload(add(_data, add(0x20, _location)))\n}",
                  "src": "314:88:43"
                }
              ]
            },
            "documentation": null,
            "id": 7527,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint256At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7518,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 7527,
                  "src": "233:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7517,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "233:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7520,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 7527,
                  "src": "246:17:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7519,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "246:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "232:32:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7524,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7523,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 7527,
                  "src": "288:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7522,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "288:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "287:16:43"
            },
            "scope": 7593,
            "src": "214:188:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7544,
              "nodeType": "Block",
              "src": "498:235:43",
              "statements": [
                {
                  "assignments": [
                    7537
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7537,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 7545,
                      "src": "508:12:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7536,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "508:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7542,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7539,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7529,
                        "src": "533:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7540,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7531,
                        "src": "540:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7538,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7527,
                      "src": "523:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 7541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "523:27:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "508:42:43"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 7534,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "584:6:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 7537,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "602:4:43",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7543,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000), 0x1000000000000000000000000)\n}",
                  "src": "561:172:43"
                }
              ]
            },
            "documentation": null,
            "id": 7545,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addressAt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7529,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 7545,
                  "src": "427:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7528,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "427:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7531,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 7545,
                  "src": "440:17:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7530,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "440:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "426:32:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7534,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 7545,
                  "src": "482:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7533,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "482:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "481:16:43"
            },
            "scope": 7593,
            "src": "408:325:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7562,
              "nodeType": "Block",
              "src": "827:267:43",
              "statements": [
                {
                  "assignments": [
                    7555
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7555,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 7563,
                      "src": "837:12:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7554,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "837:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7560,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7557,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7547,
                        "src": "862:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7558,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7549,
                        "src": "869:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7556,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7527,
                      "src": "852:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 7559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "852:27:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "837:42:43"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 7552,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "913:6:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 7555,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "931:4:43",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7561,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000), 0x100000000000000000000000000000000000000000000000000000000)\n}",
                  "src": "890:204:43"
                }
              ]
            },
            "documentation": null,
            "id": 7563,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint32At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7550,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7547,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 7563,
                  "src": "757:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7546,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "757:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7549,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 7563,
                  "src": "770:17:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7548,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "770:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "756:32:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7552,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 7563,
                  "src": "812:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 7551,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "812:6:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "811:15:43"
            },
            "scope": 7593,
            "src": "739:355:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7573,
              "nodeType": "Block",
              "src": "1191:91:43",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 7570,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1224:6:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 7565,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1238:5:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 7567,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1255:9:43",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7572,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := add(_data, add(0x20, _location))\n}",
                  "src": "1201:81:43"
                }
              ]
            },
            "documentation": null,
            "id": 7574,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "locationOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7565,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 7574,
                  "src": "1120:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7564,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7567,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 7574,
                  "src": "1133:17:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7566,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1133:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1119:32:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7571,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7570,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 7574,
                  "src": "1175:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7569,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1175:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1174:16:43"
            },
            "scope": 7593,
            "src": "1100:182:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7591,
              "nodeType": "Block",
              "src": "1348:130:43",
              "statements": [
                {
                  "assignments": [
                    7582
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7582,
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 7592,
                      "src": "1358:20:43",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7581,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1358:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7587,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 7585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1391:1:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 7584,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1381:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 7583,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1385:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 7586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1381:12:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1358:35:43"
                },
                {
                  "externalReferences": [
                    {
                      "_sig": {
                        "declaration": 7576,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1441:4:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "payload": {
                        "declaration": 7582,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1425:7:43",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7588,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    mstore(add(payload, 0x20), _sig)\n}",
                  "src": "1403:60:43"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7589,
                    "name": "payload",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7582,
                    "src": "1464:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 7580,
                  "id": 7590,
                  "nodeType": "Return",
                  "src": "1457:14:43"
                }
              ]
            },
            "documentation": null,
            "id": 7592,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "toBytes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7577,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7576,
                  "name": "_sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 7592,
                  "src": "1305:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 7575,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:6:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1304:13:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7580,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7579,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7592,
                  "src": "1341:5:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7578,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1341:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1340:7:43"
            },
            "scope": 7593,
            "src": "1288:190:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 7594,
        "src": "71:1409:43"
      }
    ],
    "src": "44:1437:43"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/evmscript/ScriptHelpers.sol",
    "exportedSymbols": {
      "ScriptHelpers": [
        7593
      ]
    },
    "id": 7594,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 7503,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:43"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7593,
        "linearizedBaseContracts": [
          7593
        ],
        "name": "ScriptHelpers",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 7515,
              "nodeType": "Block",
              "src": "164:44:43",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7511,
                        "name": "_script",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7505,
                        "src": "190:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 7512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "199:1:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 7510,
                      "name": "uint32At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7563,
                      "src": "181:8:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint32)"
                      }
                    },
                    "id": 7513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "181:20:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "functionReturnParameters": 7509,
                  "id": 7514,
                  "nodeType": "Return",
                  "src": "174:27:43"
                }
              ]
            },
            "documentation": null,
            "id": 7516,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getSpecId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7505,
                  "name": "_script",
                  "nodeType": "VariableDeclaration",
                  "scope": 7516,
                  "src": "118:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7504,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "118:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "117:15:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7509,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7508,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7516,
                  "src": "156:6:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 7507,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "156:6:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "155:8:43"
            },
            "scope": 7593,
            "src": "99:109:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7526,
              "nodeType": "Block",
              "src": "304:98:43",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 7523,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "337:6:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 7518,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "357:5:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 7520,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "374:9:43",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7525,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := mload(add(_data, add(0x20, _location)))\n}",
                  "src": "314:88:43"
                }
              ]
            },
            "documentation": null,
            "id": 7527,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint256At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7518,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 7527,
                  "src": "233:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7517,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "233:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7520,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 7527,
                  "src": "246:17:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7519,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "246:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "232:32:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7524,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7523,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 7527,
                  "src": "288:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7522,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "288:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "287:16:43"
            },
            "scope": 7593,
            "src": "214:188:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7544,
              "nodeType": "Block",
              "src": "498:235:43",
              "statements": [
                {
                  "assignments": [
                    7537
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7537,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 7545,
                      "src": "508:12:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7536,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "508:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7542,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7539,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7529,
                        "src": "533:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7540,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7531,
                        "src": "540:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7538,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7527,
                      "src": "523:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 7541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "523:27:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "508:42:43"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 7534,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "584:6:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 7537,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "602:4:43",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7543,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000), 0x1000000000000000000000000)\n}",
                  "src": "561:172:43"
                }
              ]
            },
            "documentation": null,
            "id": 7545,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addressAt",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7532,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7529,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 7545,
                  "src": "427:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7528,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "427:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7531,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 7545,
                  "src": "440:17:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7530,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "440:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "426:32:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7534,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 7545,
                  "src": "482:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7533,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "482:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "481:16:43"
            },
            "scope": 7593,
            "src": "408:325:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7562,
              "nodeType": "Block",
              "src": "827:267:43",
              "statements": [
                {
                  "assignments": [
                    7555
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7555,
                      "name": "word",
                      "nodeType": "VariableDeclaration",
                      "scope": 7563,
                      "src": "837:12:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7554,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "837:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7560,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7557,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7547,
                        "src": "862:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7558,
                        "name": "_location",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7549,
                        "src": "869:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7556,
                      "name": "uint256At",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7527,
                      "src": "852:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 7559,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "852:27:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "837:42:43"
                },
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 7552,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "913:6:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "word": {
                        "declaration": 7555,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "931:4:43",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7561,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := div(and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000), 0x100000000000000000000000000000000000000000000000000000000)\n}",
                  "src": "890:204:43"
                }
              ]
            },
            "documentation": null,
            "id": 7563,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "uint32At",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7550,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7547,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 7563,
                  "src": "757:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7546,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "757:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7549,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 7563,
                  "src": "770:17:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7548,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "770:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "756:32:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7552,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 7563,
                  "src": "812:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 7551,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "812:6:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "811:15:43"
            },
            "scope": 7593,
            "src": "739:355:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7573,
              "nodeType": "Block",
              "src": "1191:91:43",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "result": {
                        "declaration": 7570,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1224:6:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "_data": {
                        "declaration": 7565,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1238:5:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "_location": {
                        "declaration": 7567,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1255:9:43",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7572,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    result := add(_data, add(0x20, _location))\n}",
                  "src": "1201:81:43"
                }
              ]
            },
            "documentation": null,
            "id": 7574,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "locationOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7565,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 7574,
                  "src": "1120:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7564,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7567,
                  "name": "_location",
                  "nodeType": "VariableDeclaration",
                  "scope": 7574,
                  "src": "1133:17:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7566,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1133:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1119:32:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7571,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7570,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 7574,
                  "src": "1175:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7569,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1175:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1174:16:43"
            },
            "scope": 7593,
            "src": "1100:182:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7591,
              "nodeType": "Block",
              "src": "1348:130:43",
              "statements": [
                {
                  "assignments": [
                    7582
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7582,
                      "name": "payload",
                      "nodeType": "VariableDeclaration",
                      "scope": 7592,
                      "src": "1358:20:43",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 7581,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1358:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7587,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 7585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1391:1:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        }
                      ],
                      "id": 7584,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1381:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 7583,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1385:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 7586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1381:12:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1358:35:43"
                },
                {
                  "externalReferences": [
                    {
                      "_sig": {
                        "declaration": 7576,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1441:4:43",
                        "valueSize": 1
                      }
                    },
                    {
                      "payload": {
                        "declaration": 7582,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1425:7:43",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 7588,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    mstore(add(payload, 0x20), _sig)\n}",
                  "src": "1403:60:43"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7589,
                    "name": "payload",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7582,
                    "src": "1464:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 7580,
                  "id": 7590,
                  "nodeType": "Return",
                  "src": "1457:14:43"
                }
              ]
            },
            "documentation": null,
            "id": 7592,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "toBytes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7577,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7576,
                  "name": "_sig",
                  "nodeType": "VariableDeclaration",
                  "scope": 7592,
                  "src": "1305:11:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 7575,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1305:6:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1304:13:43"
            },
            "payable": false,
            "returnParameters": {
              "id": 7580,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7579,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7592,
                  "src": "1341:5:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7578,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1341:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1340:7:43"
            },
            "scope": 7593,
            "src": "1288:190:43",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 7594,
        "src": "71:1409:43"
      }
    ],
    "src": "44:1437:43"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.589Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}