{
  "contractName": "ENS",
  "abi": [
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_label",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "NewOwner",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_resolver",
          "type": "address"
        }
      ],
      "name": "NewResolver",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_ttl",
          "type": "uint64"
        }
      ],
      "name": "NewTTL",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "resolver",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "ttl",
      "outputs": [
        {
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "setOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "label",
          "type": "bytes32"
        },
        {
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "setSubnodeOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "resolver",
          "type": "address"
        }
      ],
      "name": "setResolver",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "ttl",
          "type": "uint64"
        }
      ],
      "name": "setTTL",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060008080526020527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb58054600160a060020a031916331790556105f1806100596000396000f3006080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630178b8bf811461008757806302571be3146100c857806306ab5923146100e057806314ab90381461011657806316a25cbd1461013b5780631896f70a146101705780635b0fc9c3146101a1575b600080fd5b34801561009357600080fd5b5061009f6004356101d2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100d457600080fd5b5061009f6004356101fd565b3480156100ec57600080fd5b5061011460043560243573ffffffffffffffffffffffffffffffffffffffff60443516610225565b005b34801561012257600080fd5b5061011460043567ffffffffffffffff60243516610311565b34801561014757600080fd5b506101536004356103e7565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561017c57600080fd5b5061011460043573ffffffffffffffffffffffffffffffffffffffff6024351661041e565b3480156101ad57600080fd5b5061011460043573ffffffffffffffffffffffffffffffffffffffff602435166104f3565b60009081526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff1690565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600083815260208190526040812054849073ffffffffffffffffffffffffffffffffffffffff16331461025757600080fd5b6040805186815260208082018790528251918290038301822073ffffffffffffffffffffffffffffffffffffffff871683529251929450869288927fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e8292908290030190a350600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555050565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461034357600080fd5b6040805167ffffffffffffffff84168152905184917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68919081900360200190a250600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60009081526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1690565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461045057600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff84168152905184917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0919081900360200190a25060009182526020829052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461052557600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff84168152905184917fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266919081900360200190a25060009182526020829052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790555600a165627a7a7230582088b57730c969823e07e74280dd3f5cf5bf5635f6716de10d2a1c37e6eb8844e10029",
  "deployedBytecode": "0x6080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630178b8bf811461008757806302571be3146100c857806306ab5923146100e057806314ab90381461011657806316a25cbd1461013b5780631896f70a146101705780635b0fc9c3146101a1575b600080fd5b34801561009357600080fd5b5061009f6004356101d2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100d457600080fd5b5061009f6004356101fd565b3480156100ec57600080fd5b5061011460043560243573ffffffffffffffffffffffffffffffffffffffff60443516610225565b005b34801561012257600080fd5b5061011460043567ffffffffffffffff60243516610311565b34801561014757600080fd5b506101536004356103e7565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561017c57600080fd5b5061011460043573ffffffffffffffffffffffffffffffffffffffff6024351661041e565b3480156101ad57600080fd5b5061011460043573ffffffffffffffffffffffffffffffffffffffff602435166104f3565b60009081526020819052604090206001015473ffffffffffffffffffffffffffffffffffffffff1690565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600083815260208190526040812054849073ffffffffffffffffffffffffffffffffffffffff16331461025757600080fd5b6040805186815260208082018790528251918290038301822073ffffffffffffffffffffffffffffffffffffffff871683529251929450869288927fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e8292908290030190a350600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555050565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461034357600080fd5b6040805167ffffffffffffffff84168152905184917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68919081900360200190a250600091825260208290526040909120600101805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60009081526020819052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1690565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461045057600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff84168152905184917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0919081900360200190a25060009182526020829052604090912060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600082815260208190526040902054829073ffffffffffffffffffffffffffffffffffffffff16331461052557600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff84168152905184917fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266919081900360200190a25060009182526020829052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790555600a165627a7a7230582088b57730c969823e07e74280dd3f5cf5bf5635f6716de10d2a1c37e6eb8844e10029",
  "sourceMap": "169:2590:57:-;;;575:68;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;607:7:57;:10;;;;;;:29;;-1:-1:-1;;;;;;607:29:57;626:10;607:29;;;169:2590;;;;;;",
  "deployedSourceMap": "169:2590:57:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;917:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;917:112:57;;;;;;;;;;;;;;;;;;;;;;;;722:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;722:106:57;;;;;1923:224;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1923:224:57;;;;;;;;;;;;;2624:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2624:133:57;;;;;;;;;1121:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1121:101:57;;;;;;;;;;;;;;;;;;;;;;;;2317:164;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2317:164:57;;;;;;;;;1463:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1463:146:57;;;;;;;;;917:112;974:7;1000:13;;;;;;;;;;:22;;;;;;917:112::o;722:106::-;776:7;802:13;;;;;;;;;;:19;;;;722:106::o;1923:224::-;2026:11;456:13;;;;;;;;;;:19;2003:4;;456:33;:19;479:10;456:33;452:44;;491:5;;;452:44;2040:22;;;;;;;;;;;;;;;;;;;;;;;2072:28;;;;;;;2040:22;;-1:-1:-1;2056:5:57;;2050:4;;2072:28;;;;;;;;;-1:-1:-1;2110:7:57;:16;;;;;;;;;;:30;;;;;;;;;;;;;;;-1:-1:-1;;1923:224:57:o;2624:133::-;456:7;:13;;;;;;;;;;:19;2677:4;;456:33;:19;479:10;456:33;452:44;;491:5;;;452:44;2700:17;;;;;;;;;;2707:4;;2700:17;;;;;;;;;;-1:-1:-1;2727:7:57;:13;;;;;;;;;;;:17;;:23;;;;;;;;;;;;;;;;;;2624:133::o;1121:101::-;1173:6;1198:13;;;;;;;;;;:17;;;;;;;;;1121:101::o;2317:164::-;456:7;:13;;;;;;;;;;:19;2381:4;;456:33;:19;479:10;456:33;452:44;;491:5;;;452:44;2404:27;;;;;;;;;;2416:4;;2404:27;;;;;;;;;;-1:-1:-1;2441:7:57;:13;;;;;;;;;;;:22;;:33;;;;;;;;;;;;;;2317:164::o;1463:146::-;456:7;:13;;;;;;;;;;:19;1521:4;;456:33;:19;479:10;456:33;452:44;;491:5;;;452:44;1544:21;;;;;;;;;;1553:4;;1544:21;;;;;;;;;;-1:-1:-1;1575:7:57;:13;;;;;;;;;;;:27;;;;;;;;;;;;;;1463:146::o",
  "source": "// See https://github.com/ensdomains/ens/blob/7e377df83f/contracts/ENS.sol\n\npragma solidity ^0.4.0;\n\n\nimport \"./AbstractENS.sol\";\n\n/**\n * The ENS registry contract.\n */\ncontract ENS is AbstractENS {\n    struct Record {\n        address owner;\n        address resolver;\n        uint64 ttl;\n    }\n\n    mapping(bytes32=>Record) records;\n\n    // Permits modifications only by the owner of the specified node.\n    modifier only_owner(bytes32 node) {\n        if (records[node].owner != msg.sender) throw;\n        _;\n    }\n\n    /**\n     * Constructs a new ENS registrar.\n     */\n    function ENS() public {\n        records[0].owner = msg.sender;\n    }\n\n    /**\n     * Returns the address that owns the specified node.\n     */\n    function owner(bytes32 node) public constant returns (address) {\n        return records[node].owner;\n    }\n\n    /**\n     * Returns the address of the resolver for the specified node.\n     */\n    function resolver(bytes32 node) public constant returns (address) {\n        return records[node].resolver;\n    }\n\n    /**\n     * Returns the TTL of a node, and any records associated with it.\n     */\n    function ttl(bytes32 node) public constant returns (uint64) {\n        return records[node].ttl;\n    }\n\n    /**\n     * Transfers ownership of a node to a new address. May only be called by the current\n     * owner of the node.\n     * @param node The node to transfer ownership of.\n     * @param owner The address of the new owner.\n     */\n    function setOwner(bytes32 node, address owner) only_owner(node) public {\n        Transfer(node, owner);\n        records[node].owner = owner;\n    }\n\n    /**\n     * Transfers ownership of a subnode keccak256(node, label) to a new address. May only be\n     * called by the owner of the parent node.\n     * @param node The parent node.\n     * @param label The hash of the label specifying the subnode.\n     * @param owner The address of the new owner.\n     */\n    function setSubnodeOwner(bytes32 node, bytes32 label, address owner) only_owner(node) public {\n        var subnode = keccak256(node, label);\n        NewOwner(node, label, owner);\n        records[subnode].owner = owner;\n    }\n\n    /**\n     * Sets the resolver address for the specified node.\n     * @param node The node to update.\n     * @param resolver The address of the resolver.\n     */\n    function setResolver(bytes32 node, address resolver) only_owner(node) public {\n        NewResolver(node, resolver);\n        records[node].resolver = resolver;\n    }\n\n    /**\n     * Sets the TTL for the specified node.\n     * @param node The node to update.\n     * @param ttl The TTL in seconds.\n     */\n    function setTTL(bytes32 node, uint64 ttl) only_owner(node) public {\n        NewTTL(node, ttl);\n        records[node].ttl = ttl;\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/lib/ens/ENS.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/lib/ens/ENS.sol",
    "exportedSymbols": {
      "ENS": [
        13457
      ]
    },
    "id": 13458,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13275,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "76:23:57"
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
        "file": "./AbstractENS.sol",
        "id": 13276,
        "nodeType": "ImportDirective",
        "scope": 13458,
        "sourceUnit": 13274,
        "src": "102:27:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 13277,
              "name": "AbstractENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13273,
              "src": "185:11:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractENS_$13273",
                "typeString": "contract AbstractENS"
              }
            },
            "id": 13278,
            "nodeType": "InheritanceSpecifier",
            "src": "185:11:57"
          }
        ],
        "contractDependencies": [
          13273
        ],
        "contractKind": "contract",
        "documentation": "The ENS registry contract.",
        "fullyImplemented": true,
        "id": 13457,
        "linearizedBaseContracts": [
          13457,
          13273
        ],
        "name": "ENS",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "ENS.Record",
            "id": 13285,
            "members": [
              {
                "constant": false,
                "id": 13280,
                "name": "owner",
                "nodeType": "VariableDeclaration",
                "scope": 13285,
                "src": "227:13:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 13279,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "227:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 13282,
                "name": "resolver",
                "nodeType": "VariableDeclaration",
                "scope": 13285,
                "src": "250:16:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 13281,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "250:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 13284,
                "name": "ttl",
                "nodeType": "VariableDeclaration",
                "scope": 13285,
                "src": "276:10:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 13283,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "276:6:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 13457,
            "src": "203:90:57",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 13289,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 13457,
            "src": "299:32:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
              "typeString": "mapping(bytes32 => struct ENS.Record)"
            },
            "typeName": {
              "id": 13288,
              "keyType": {
                "id": 13286,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "307:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "299:24:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                "typeString": "mapping(bytes32 => struct ENS.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 13287,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 13285,
                "src": "316:6:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$13285_storage_ptr",
                  "typeString": "struct ENS.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13303,
              "nodeType": "Block",
              "src": "442:72:57",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13293,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "456:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13295,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13294,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13291,
                          "src": "464:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "456:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13296,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13280,
                      "src": "456:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13297,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15153,
                        "src": "479:3:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 13298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "479:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "456:33:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13301,
                  "nodeType": "IfStatement",
                  "src": "452:44:57",
                  "trueBody": {
                    "id": 13300,
                    "nodeType": "Throw",
                    "src": "491:5:57"
                  }
                },
                {
                  "id": 13302,
                  "nodeType": "PlaceholderStatement",
                  "src": "506:1:57"
                }
              ]
            },
            "documentation": null,
            "id": 13304,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 13292,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13291,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13304,
                  "src": "428:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13290,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "428:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "427:14:57"
            },
            "src": "408:106:57",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13315,
              "nodeType": "Block",
              "src": "597:46:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13307,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "607:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13309,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "615:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "607:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13310,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13280,
                      "src": "607:16:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13311,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15153,
                        "src": "626:3:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 13312,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "626:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "607:29:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13314,
                  "nodeType": "ExpressionStatement",
                  "src": "607:29:57"
                }
              ]
            },
            "documentation": "Constructs a new ENS registrar.",
            "id": 13316,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ENS",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13305,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "587:2:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13306,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "597:0:57"
            },
            "scope": 13457,
            "src": "575:68:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13328,
              "nodeType": "Block",
              "src": "785:43:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13323,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13289,
                        "src": "802:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 13325,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13324,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13318,
                        "src": "810:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "802:13:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$13285_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 13326,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "owner",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 13280,
                    "src": "802:19:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 13322,
                  "id": 13327,
                  "nodeType": "Return",
                  "src": "795:26:57"
                }
              ]
            },
            "documentation": "Returns the address that owns the specified node.",
            "id": 13329,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "owner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13318,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13329,
                  "src": "737:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13317,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "737:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "736:14:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13321,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13329,
                  "src": "776:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13320,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "775:9:57"
            },
            "scope": 13457,
            "src": "722:106:57",
            "stateMutability": "view",
            "superFunction": 13202,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13341,
              "nodeType": "Block",
              "src": "983:46:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13336,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13289,
                        "src": "1000:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 13338,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13337,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13331,
                        "src": "1008:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1000:13:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$13285_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 13339,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "resolver",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 13282,
                    "src": "1000:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 13335,
                  "id": 13340,
                  "nodeType": "Return",
                  "src": "993:29:57"
                }
              ]
            },
            "documentation": "Returns the address of the resolver for the specified node.",
            "id": 13342,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "resolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13331,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13342,
                  "src": "935:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13330,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "935:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "934:14:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13335,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13334,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13342,
                  "src": "974:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13333,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "974:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "973:9:57"
            },
            "scope": 13457,
            "src": "917:112:57",
            "stateMutability": "view",
            "superFunction": 13209,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13354,
              "nodeType": "Block",
              "src": "1181:41:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13349,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13289,
                        "src": "1198:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 13351,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13350,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13344,
                        "src": "1206:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1198:13:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$13285_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 13352,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ttl",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 13284,
                    "src": "1198:17:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 13348,
                  "id": 13353,
                  "nodeType": "Return",
                  "src": "1191:24:57"
                }
              ]
            },
            "documentation": "Returns the TTL of a node, and any records associated with it.",
            "id": 13355,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ttl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13344,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13355,
                  "src": "1134:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13343,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1134:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1133:14:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13348,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13347,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13355,
                  "src": "1173:6:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 13346,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1173:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1172:8:57"
            },
            "scope": 13457,
            "src": "1121:101:57",
            "stateMutability": "view",
            "superFunction": 13216,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13377,
              "nodeType": "Block",
              "src": "1534:75:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13366,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13357,
                        "src": "1553:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13367,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13359,
                        "src": "1559:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13365,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13260,
                      "src": "1544:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 13368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1544:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13369,
                  "nodeType": "ExpressionStatement",
                  "src": "1544:21:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13370,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "1575:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13372,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13371,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13357,
                          "src": "1583:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1575:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13373,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13280,
                      "src": "1575:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13374,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13359,
                      "src": "1597:5:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1575:27:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13376,
                  "nodeType": "ExpressionStatement",
                  "src": "1575:27:57"
                }
              ]
            },
            "documentation": "Transfers ownership of a node to a new address. May only be called by the current\nowner of the node.\n@param node The node to transfer ownership of.\n@param owner The address of the new owner.",
            "id": 13378,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 13362,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13357,
                    "src": "1521:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 13363,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 13361,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13304,
                  "src": "1510:10:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1510:16:57"
              }
            ],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13357,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13378,
                  "src": "1481:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13356,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1481:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13359,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 13378,
                  "src": "1495:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13358,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1495:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1480:29:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13364,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1534:0:57"
            },
            "scope": 13457,
            "src": "1463:146:57",
            "stateMutability": "nonpayable",
            "superFunction": 13223,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13409,
              "nodeType": "Block",
              "src": "2016:131:57",
              "statements": [
                {
                  "assignments": [
                    13390
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13390,
                      "name": "subnode",
                      "nodeType": "VariableDeclaration",
                      "scope": 13410,
                      "src": "2026:11:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13395,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13392,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13380,
                        "src": "2050:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13393,
                        "name": "label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13382,
                        "src": "2056:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 13391,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15147,
                      "src": "2040:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 13394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2040:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2026:36:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13397,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13380,
                        "src": "2081:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13398,
                        "name": "label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13382,
                        "src": "2087:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13399,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13384,
                        "src": "2094:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13396,
                      "name": "NewOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13254,
                      "src": "2072:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 13400,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2072:28:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13401,
                  "nodeType": "ExpressionStatement",
                  "src": "2072:28:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13402,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "2110:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13404,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13403,
                          "name": "subnode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13390,
                          "src": "2118:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2110:16:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13405,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13280,
                      "src": "2110:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13406,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13384,
                      "src": "2135:5:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2110:30:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13408,
                  "nodeType": "ExpressionStatement",
                  "src": "2110:30:57"
                }
              ]
            },
            "documentation": "Transfers ownership of a subnode keccak256(node, label) to a new address. May only be\ncalled by the owner of the parent node.\n@param node The parent node.\n@param label The hash of the label specifying the subnode.\n@param owner The address of the new owner.",
            "id": 13410,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 13387,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13380,
                    "src": "2003:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 13388,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 13386,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13304,
                  "src": "1992:10:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1992:16:57"
              }
            ],
            "name": "setSubnodeOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13380,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13410,
                  "src": "1948:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13379,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1948:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13382,
                  "name": "label",
                  "nodeType": "VariableDeclaration",
                  "scope": 13410,
                  "src": "1962:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13381,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1962:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13384,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 13410,
                  "src": "1977:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13383,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1977:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1947:44:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13389,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2016:0:57"
            },
            "scope": 13457,
            "src": "1923:224:57",
            "stateMutability": "nonpayable",
            "superFunction": 13232,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13432,
              "nodeType": "Block",
              "src": "2394:87:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13421,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13412,
                        "src": "2416:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13422,
                        "name": "resolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13414,
                        "src": "2422:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13420,
                      "name": "NewResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13266,
                      "src": "2404:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 13423,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2404:27:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13424,
                  "nodeType": "ExpressionStatement",
                  "src": "2404:27:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13425,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "2441:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13427,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13426,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13412,
                          "src": "2449:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2441:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13428,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "resolver",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13282,
                      "src": "2441:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13429,
                      "name": "resolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13414,
                      "src": "2466:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2441:33:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13431,
                  "nodeType": "ExpressionStatement",
                  "src": "2441:33:57"
                }
              ]
            },
            "documentation": "Sets the resolver address for the specified node.\n@param node The node to update.\n@param resolver The address of the resolver.",
            "id": 13433,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 13417,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13412,
                    "src": "2381:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 13418,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 13416,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13304,
                  "src": "2370:10:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2370:16:57"
              }
            ],
            "name": "setResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13415,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13412,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13433,
                  "src": "2338:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13411,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2338:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13414,
                  "name": "resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 13433,
                  "src": "2352:16:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13413,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2352:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2337:32:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13419,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2394:0:57"
            },
            "scope": 13457,
            "src": "2317:164:57",
            "stateMutability": "nonpayable",
            "superFunction": 13239,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13455,
              "nodeType": "Block",
              "src": "2690:67:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13444,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13435,
                        "src": "2707:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13445,
                        "name": "ttl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13437,
                        "src": "2713:3:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 13443,
                      "name": "NewTTL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13272,
                      "src": "2700:6:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                        "typeString": "function (bytes32,uint64)"
                      }
                    },
                    "id": 13446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2700:17:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13447,
                  "nodeType": "ExpressionStatement",
                  "src": "2700:17:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13448,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "2727:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13450,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13449,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13435,
                          "src": "2735:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2727:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13451,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "ttl",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13284,
                      "src": "2727:17:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13452,
                      "name": "ttl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13437,
                      "src": "2747:3:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "2727:23:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 13454,
                  "nodeType": "ExpressionStatement",
                  "src": "2727:23:57"
                }
              ]
            },
            "documentation": "Sets the TTL for the specified node.\n@param node The node to update.\n@param ttl The TTL in seconds.",
            "id": 13456,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 13440,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13435,
                    "src": "2677:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 13441,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 13439,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13304,
                  "src": "2666:10:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2666:16:57"
              }
            ],
            "name": "setTTL",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13435,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13456,
                  "src": "2640:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13434,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2640:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13437,
                  "name": "ttl",
                  "nodeType": "VariableDeclaration",
                  "scope": 13456,
                  "src": "2654:10:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 13436,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2654:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2639:26:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13442,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2690:0:57"
            },
            "scope": 13457,
            "src": "2624:133:57",
            "stateMutability": "nonpayable",
            "superFunction": 13246,
            "visibility": "public"
          }
        ],
        "scope": 13458,
        "src": "169:2590:57"
      }
    ],
    "src": "76:2684:57"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/lib/ens/ENS.sol",
    "exportedSymbols": {
      "ENS": [
        13457
      ]
    },
    "id": 13458,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 13275,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "76:23:57"
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
        "file": "./AbstractENS.sol",
        "id": 13276,
        "nodeType": "ImportDirective",
        "scope": 13458,
        "sourceUnit": 13274,
        "src": "102:27:57",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 13277,
              "name": "AbstractENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 13273,
              "src": "185:11:57",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractENS_$13273",
                "typeString": "contract AbstractENS"
              }
            },
            "id": 13278,
            "nodeType": "InheritanceSpecifier",
            "src": "185:11:57"
          }
        ],
        "contractDependencies": [
          13273
        ],
        "contractKind": "contract",
        "documentation": "The ENS registry contract.",
        "fullyImplemented": true,
        "id": 13457,
        "linearizedBaseContracts": [
          13457,
          13273
        ],
        "name": "ENS",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "ENS.Record",
            "id": 13285,
            "members": [
              {
                "constant": false,
                "id": 13280,
                "name": "owner",
                "nodeType": "VariableDeclaration",
                "scope": 13285,
                "src": "227:13:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 13279,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "227:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 13282,
                "name": "resolver",
                "nodeType": "VariableDeclaration",
                "scope": 13285,
                "src": "250:16:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 13281,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "250:7:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 13284,
                "name": "ttl",
                "nodeType": "VariableDeclaration",
                "scope": 13285,
                "src": "276:10:57",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 13283,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "276:6:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 13457,
            "src": "203:90:57",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 13289,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 13457,
            "src": "299:32:57",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
              "typeString": "mapping(bytes32 => struct ENS.Record)"
            },
            "typeName": {
              "id": 13288,
              "keyType": {
                "id": 13286,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "307:7:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "299:24:57",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                "typeString": "mapping(bytes32 => struct ENS.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 13287,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 13285,
                "src": "316:6:57",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$13285_storage_ptr",
                  "typeString": "struct ENS.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13303,
              "nodeType": "Block",
              "src": "442:72:57",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 13299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13293,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "456:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13295,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13294,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13291,
                          "src": "464:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "456:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13296,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13280,
                      "src": "456:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13297,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15153,
                        "src": "479:3:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 13298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "479:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "456:33:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 13301,
                  "nodeType": "IfStatement",
                  "src": "452:44:57",
                  "trueBody": {
                    "id": 13300,
                    "nodeType": "Throw",
                    "src": "491:5:57"
                  }
                },
                {
                  "id": 13302,
                  "nodeType": "PlaceholderStatement",
                  "src": "506:1:57"
                }
              ]
            },
            "documentation": null,
            "id": 13304,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 13292,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13291,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13304,
                  "src": "428:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13290,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "428:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "427:14:57"
            },
            "src": "408:106:57",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 13315,
              "nodeType": "Block",
              "src": "597:46:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13307,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "607:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13309,
                        "indexExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 13308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "615:1:57",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "607:10:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13310,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13280,
                      "src": "607:16:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 13311,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15153,
                        "src": "626:3:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 13312,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "626:10:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "607:29:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13314,
                  "nodeType": "ExpressionStatement",
                  "src": "607:29:57"
                }
              ]
            },
            "documentation": "Constructs a new ENS registrar.",
            "id": 13316,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "ENS",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13305,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "587:2:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13306,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "597:0:57"
            },
            "scope": 13457,
            "src": "575:68:57",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13328,
              "nodeType": "Block",
              "src": "785:43:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13323,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13289,
                        "src": "802:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 13325,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13324,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13318,
                        "src": "810:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "802:13:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$13285_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 13326,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "owner",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 13280,
                    "src": "802:19:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 13322,
                  "id": 13327,
                  "nodeType": "Return",
                  "src": "795:26:57"
                }
              ]
            },
            "documentation": "Returns the address that owns the specified node.",
            "id": 13329,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "owner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13318,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13329,
                  "src": "737:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13317,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "737:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "736:14:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13321,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13329,
                  "src": "776:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13320,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "775:9:57"
            },
            "scope": 13457,
            "src": "722:106:57",
            "stateMutability": "view",
            "superFunction": 13202,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13341,
              "nodeType": "Block",
              "src": "983:46:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13336,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13289,
                        "src": "1000:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 13338,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13337,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13331,
                        "src": "1008:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1000:13:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$13285_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 13339,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "resolver",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 13282,
                    "src": "1000:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 13335,
                  "id": 13340,
                  "nodeType": "Return",
                  "src": "993:29:57"
                }
              ]
            },
            "documentation": "Returns the address of the resolver for the specified node.",
            "id": 13342,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "resolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13331,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13342,
                  "src": "935:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13330,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "935:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "934:14:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13335,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13334,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13342,
                  "src": "974:7:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13333,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "974:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "973:9:57"
            },
            "scope": 13457,
            "src": "917:112:57",
            "stateMutability": "view",
            "superFunction": 13209,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13354,
              "nodeType": "Block",
              "src": "1181:41:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 13349,
                        "name": "records",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13289,
                        "src": "1198:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                          "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                        }
                      },
                      "id": 13351,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 13350,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13344,
                        "src": "1206:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "1198:13:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$13285_storage",
                        "typeString": "struct ENS.Record storage ref"
                      }
                    },
                    "id": 13352,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "ttl",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 13284,
                    "src": "1198:17:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 13348,
                  "id": 13353,
                  "nodeType": "Return",
                  "src": "1191:24:57"
                }
              ]
            },
            "documentation": "Returns the TTL of a node, and any records associated with it.",
            "id": 13355,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ttl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13344,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13355,
                  "src": "1134:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13343,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1134:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1133:14:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13348,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13347,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 13355,
                  "src": "1173:6:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 13346,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1173:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1172:8:57"
            },
            "scope": 13457,
            "src": "1121:101:57",
            "stateMutability": "view",
            "superFunction": 13216,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13377,
              "nodeType": "Block",
              "src": "1534:75:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13366,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13357,
                        "src": "1553:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13367,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13359,
                        "src": "1559:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13365,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13260,
                      "src": "1544:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 13368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1544:21:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13369,
                  "nodeType": "ExpressionStatement",
                  "src": "1544:21:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13370,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "1575:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13372,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13371,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13357,
                          "src": "1583:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1575:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13373,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13280,
                      "src": "1575:19:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13374,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13359,
                      "src": "1597:5:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1575:27:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13376,
                  "nodeType": "ExpressionStatement",
                  "src": "1575:27:57"
                }
              ]
            },
            "documentation": "Transfers ownership of a node to a new address. May only be called by the current\nowner of the node.\n@param node The node to transfer ownership of.\n@param owner The address of the new owner.",
            "id": 13378,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 13362,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13357,
                    "src": "1521:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 13363,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 13361,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13304,
                  "src": "1510:10:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1510:16:57"
              }
            ],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13357,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13378,
                  "src": "1481:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13356,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1481:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13359,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 13378,
                  "src": "1495:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13358,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1495:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1480:29:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13364,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1534:0:57"
            },
            "scope": 13457,
            "src": "1463:146:57",
            "stateMutability": "nonpayable",
            "superFunction": 13223,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13409,
              "nodeType": "Block",
              "src": "2016:131:57",
              "statements": [
                {
                  "assignments": [
                    13390
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13390,
                      "name": "subnode",
                      "nodeType": "VariableDeclaration",
                      "scope": 13410,
                      "src": "2026:11:57",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 13395,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13392,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13380,
                        "src": "2050:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13393,
                        "name": "label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13382,
                        "src": "2056:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 13391,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15147,
                      "src": "2040:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 13394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2040:22:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2026:36:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13397,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13380,
                        "src": "2081:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13398,
                        "name": "label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13382,
                        "src": "2087:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13399,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13384,
                        "src": "2094:5:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13396,
                      "name": "NewOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13254,
                      "src": "2072:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address)"
                      }
                    },
                    "id": 13400,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2072:28:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13401,
                  "nodeType": "ExpressionStatement",
                  "src": "2072:28:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13402,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "2110:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13404,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13403,
                          "name": "subnode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13390,
                          "src": "2118:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2110:16:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13405,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13280,
                      "src": "2110:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13406,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13384,
                      "src": "2135:5:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2110:30:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13408,
                  "nodeType": "ExpressionStatement",
                  "src": "2110:30:57"
                }
              ]
            },
            "documentation": "Transfers ownership of a subnode keccak256(node, label) to a new address. May only be\ncalled by the owner of the parent node.\n@param node The parent node.\n@param label The hash of the label specifying the subnode.\n@param owner The address of the new owner.",
            "id": 13410,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 13387,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13380,
                    "src": "2003:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 13388,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 13386,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13304,
                  "src": "1992:10:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1992:16:57"
              }
            ],
            "name": "setSubnodeOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13380,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13410,
                  "src": "1948:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13379,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1948:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13382,
                  "name": "label",
                  "nodeType": "VariableDeclaration",
                  "scope": 13410,
                  "src": "1962:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13381,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1962:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13384,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 13410,
                  "src": "1977:13:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13383,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1977:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1947:44:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13389,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2016:0:57"
            },
            "scope": 13457,
            "src": "1923:224:57",
            "stateMutability": "nonpayable",
            "superFunction": 13232,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13432,
              "nodeType": "Block",
              "src": "2394:87:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13421,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13412,
                        "src": "2416:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13422,
                        "name": "resolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13414,
                        "src": "2422:8:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 13420,
                      "name": "NewResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13266,
                      "src": "2404:11:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 13423,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2404:27:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13424,
                  "nodeType": "ExpressionStatement",
                  "src": "2404:27:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13425,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "2441:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13427,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13426,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13412,
                          "src": "2449:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2441:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13428,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "resolver",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13282,
                      "src": "2441:22:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13429,
                      "name": "resolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13414,
                      "src": "2466:8:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2441:33:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 13431,
                  "nodeType": "ExpressionStatement",
                  "src": "2441:33:57"
                }
              ]
            },
            "documentation": "Sets the resolver address for the specified node.\n@param node The node to update.\n@param resolver The address of the resolver.",
            "id": 13433,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 13417,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13412,
                    "src": "2381:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 13418,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 13416,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13304,
                  "src": "2370:10:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2370:16:57"
              }
            ],
            "name": "setResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13415,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13412,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13433,
                  "src": "2338:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13411,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2338:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13414,
                  "name": "resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 13433,
                  "src": "2352:16:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13413,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2352:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2337:32:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13419,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2394:0:57"
            },
            "scope": 13457,
            "src": "2317:164:57",
            "stateMutability": "nonpayable",
            "superFunction": 13239,
            "visibility": "public"
          },
          {
            "body": {
              "id": 13455,
              "nodeType": "Block",
              "src": "2690:67:57",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 13444,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13435,
                        "src": "2707:4:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 13445,
                        "name": "ttl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 13437,
                        "src": "2713:3:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 13443,
                      "name": "NewTTL",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13272,
                      "src": "2700:6:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                        "typeString": "function (bytes32,uint64)"
                      }
                    },
                    "id": 13446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2700:17:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13447,
                  "nodeType": "ExpressionStatement",
                  "src": "2700:17:57"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 13453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 13448,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13289,
                          "src": "2727:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$13285_storage_$",
                            "typeString": "mapping(bytes32 => struct ENS.Record storage ref)"
                          }
                        },
                        "id": 13450,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 13449,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13435,
                          "src": "2735:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2727:13:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$13285_storage",
                          "typeString": "struct ENS.Record storage ref"
                        }
                      },
                      "id": 13451,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "ttl",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13284,
                      "src": "2727:17:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 13452,
                      "name": "ttl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13437,
                      "src": "2747:3:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "2727:23:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 13454,
                  "nodeType": "ExpressionStatement",
                  "src": "2727:23:57"
                }
              ]
            },
            "documentation": "Sets the TTL for the specified node.\n@param node The node to update.\n@param ttl The TTL in seconds.",
            "id": 13456,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 13440,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13435,
                    "src": "2677:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 13441,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 13439,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 13304,
                  "src": "2666:10:57",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2666:16:57"
              }
            ],
            "name": "setTTL",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 13438,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13435,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 13456,
                  "src": "2640:12:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13434,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2640:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 13437,
                  "name": "ttl",
                  "nodeType": "VariableDeclaration",
                  "scope": 13456,
                  "src": "2654:10:57",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 13436,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2654:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2639:26:57"
            },
            "payable": false,
            "returnParameters": {
              "id": 13442,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2690:0:57"
            },
            "scope": 13457,
            "src": "2624:133:57",
            "stateMutability": "nonpayable",
            "superFunction": 13246,
            "visibility": "public"
          }
        ],
        "scope": 13458,
        "src": "169:2590:57"
      }
    ],
    "src": "76:2684:57"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-09-04T11:02:55.789Z"
}