{
  "contractName": "DefaultReverseResolver",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "ens",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "ensAddr",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "_name",
          "type": "string"
        }
      ],
      "name": "setName",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.8+commit.23d335f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"_name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"ensAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"details\":\"Provides a default implementation of a resolver for reverse records, which permits only the owner to update it.\",\"methods\":{\"constructor\":{\"details\":\"Constructor\",\"params\":{\"ensAddr\":\"The address of the ENS registry.\"}},\"setName(bytes32,string)\":{\"details\":\"Sets the name for a node.\",\"params\":{\"_name\":\"The name to set.\",\"node\":\"The node to update.\"}}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/user/Dropbox/projects/resolvers/contracts/DefaultReverseResolver.sol\":\"DefaultReverseResolver\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/user/Dropbox/projects/resolvers/contracts/DefaultReverseResolver.sol\":{\"keccak256\":\"0x3911f972c8f69bea945ffaa356d8b9496446ac00f2543eafbf3aaf8a76d27682\",\"urls\":[\"bzzr://1bfa8ac7b28a7f546bcd7bc49b54ca37a618d6b13f344f7a9603a64277b65fcc\"]},\"@ensdomains/ens/contracts/ENS.sol\":{\"keccak256\":\"0xe688db01c0b974f8ff8565557f7fe81aa1f209c1497ec1e74536241f4cc11f08\",\"urls\":[\"bzzr://04aa083550728a1da54d9acf874f4fca77cc3afef81c57f1ec19be78af05019a\"]},\"@ensdomains/ens/contracts/ReverseRegistrar.sol\":{\"keccak256\":\"0x9f88ee601bc32f69ded7a3931640bcbd379920db4f3e45923f10fcc08642a8e2\",\"urls\":[\"bzzr://4a291280ddecf6766aefb98ee46c92e0daf6122653aca9bdb8ed197854c7455a\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5060405160208061070a8339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be37f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561011857600080fd5b505afa15801561012c573d6000803e3d6000fd5b505050506040513d602081101561014257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610245578073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561020857600080fd5b505af115801561021c573d6000803e3d6000fd5b505050506040513d602081101561023257600080fd5b8101908080519060200190929190505050505b50506104b4806102566000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633f15457f14610046578063691f3431146100905780637737221314610137575b600080fd5b61004e6101fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100bc600480360360208110156100a657600080fd5b8101908080359060200190929190505050610221565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100fc5780820151818401526020810190506100e1565b50505050905090810190601f1680156101295780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fa6004803603604081101561014d57600080fd5b81019080803590602001909291908035906020019064010000000081111561017457600080fd5b82018360208201111561018657600080fd5b803590602001918460018302840111640100000000831117156101a857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506102d1565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102c95780601f1061029e576101008083540402835291602001916102c9565b820191906000526020600020905b8154815290600101906020018083116102ac57829003601f168201915b505050505081565b816000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561034457600080fd5b505afa158015610358573d6000803e3d6000fd5b505050506040513d602081101561036e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b657600080fd5b816001600085815260200190815260200160002090805190602001906103dd9291906103e3565b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061042457805160ff1916838001178555610452565b82800160010185558215610452579182015b82811115610451578251825591602001919060010190610436565b5b50905061045f9190610463565b5090565b61048591905b80821115610481576000816000905550600101610469565b5090565b9056fea165627a7a723058204143b50c1437939fe324edd9b3e8befe3ed30e022828581416e04a08c6bde6790029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633f15457f14610046578063691f3431146100905780637737221314610137575b600080fd5b61004e6101fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100bc600480360360208110156100a657600080fd5b8101908080359060200190929190505050610221565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100fc5780820151818401526020810190506100e1565b50505050905090810190601f1680156101295780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101fa6004803603604081101561014d57600080fd5b81019080803590602001909291908035906020019064010000000081111561017457600080fd5b82018360208201111561018657600080fd5b803590602001918460018302840111640100000000831117156101a857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506102d1565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102c95780601f1061029e576101008083540402835291602001916102c9565b820191906000526020600020905b8154815290600101906020018083116102ac57829003601f168201915b505050505081565b816000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561034457600080fd5b505afa158015610358573d6000803e3d6000fd5b505050506040513d602081101561036e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b657600080fd5b816001600085815260200190815260200160002090805190602001906103dd9291906103e3565b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061042457805160ff1916838001178555610452565b82800160010185558215610452579182015b82811115610451578251825591602001919060010190610436565b5b50905061045f9190610463565b5090565b61048591905b80821115610481576000816000905550600101610469565b5090565b9056fea165627a7a723058204143b50c1437939fe324edd9b3e8befe3ed30e022828581416e04a08c6bde6790029",
  "sourceMap": "260:1138:0:-;;;835:315;8:9:-1;5:2;;;30:1;27;20:12;5:2;835:315:0;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;835:315:0;;;;;;;;;;;;;;;;883:7;877:3;;:13;;;;;;;;;;;;;;;;;;967:26;1013:3;;;;;;;;;;;:9;;;367:66;1023:17;;1013:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1013:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1013:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1013:28:0;;;;;;;;;;;;;;;;967:75;;1086:3;1056:34;;1064:9;1056:34;;;1052:92;;1106:9;:15;;;1122:10;1106:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1106:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1106:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1106:27:0;;;;;;;;;;;;;;;;;1052:92;835:315;;260:1138;;;;;;",
  "deployedSourceMap": "260:1138:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;260:1138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;440:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;460:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;460:39:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;460:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1286:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1286:110:0;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1286:110:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1286:110:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1286:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1286:110:0;;;;;;;;;;;;;;;:::i;:::-;;440:14;;;;;;;;;;;;;:::o;460:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1286:110::-;1355:4;700:3;;;;;;;;;;;:9;;;710:4;700:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;700:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;700:15:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;700:15:0;;;;;;;;;;;;;;;;686:29;;:10;:29;;;678:38;;;;;;1384:5;1371:4;:10;1376:4;1371:10;;;;;;;;;;;:18;;;;;;;;;;;;:::i;:::-;;1286:110;;;:::o;260:1138::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity >=0.4.25;\n\nimport \"@ensdomains/ens/contracts/ENS.sol\";\nimport \"@ensdomains/ens/contracts/ReverseRegistrar.sol\";\n\n/**\n * @dev Provides a default implementation of a resolver for reverse records,\n * which permits only the owner to update it.\n */\ncontract DefaultReverseResolver {\n    // namehash('addr.reverse')\n    bytes32 constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\n\n    ENS public ens;\n    mapping (bytes32 => string) public name;\n\n    /**\n     * @dev Only permits calls by the reverse registrar.\n     * @param node The node permission is required for.\n     */\n    modifier onlyOwner(bytes32 node) {\n        require(msg.sender == ens.owner(node));\n        _;\n    }\n\n    /**\n     * @dev Constructor\n     * @param ensAddr The address of the ENS registry.\n     */\n    constructor(ENS ensAddr) public {\n        ens = ensAddr;\n\n        // Assign ownership of the reverse record to our deployer\n        ReverseRegistrar registrar = ReverseRegistrar(ens.owner(ADDR_REVERSE_NODE));\n        if (address(registrar) != address(0x0)) {\n            registrar.claim(msg.sender);\n        }\n    }\n\n    /**\n     * @dev Sets the name for a node.\n     * @param node The node to update.\n     * @param _name The name to set.\n     */\n    function setName(bytes32 node, string memory _name) public onlyOwner(node) {\n        name[node] = _name;\n    }\n}\n",
  "sourcePath": "/home/user/Dropbox/projects/resolvers/contracts/DefaultReverseResolver.sol",
  "ast": {
    "absolutePath": "/home/user/Dropbox/projects/resolvers/contracts/DefaultReverseResolver.sol",
    "exportedSymbols": {
      "DefaultReverseResolver": [
        81
      ]
    },
    "id": 82,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:0"
      },
      {
        "absolutePath": "@ensdomains/ens/contracts/ENS.sol",
        "file": "@ensdomains/ens/contracts/ENS.sol",
        "id": 2,
        "nodeType": "ImportDirective",
        "scope": 82,
        "sourceUnit": 3783,
        "src": "27:43:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@ensdomains/ens/contracts/ReverseRegistrar.sol",
        "file": "@ensdomains/ens/contracts/ReverseRegistrar.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 82,
        "sourceUnit": 4010,
        "src": "71:56:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@dev Provides a default implementation of a resolver for reverse records,\nwhich permits only the owner to update it.",
        "fullyImplemented": true,
        "id": 81,
        "linearizedBaseContracts": [
          81
        ],
        "name": "DefaultReverseResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 6,
            "name": "ADDR_REVERSE_NODE",
            "nodeType": "VariableDeclaration",
            "scope": 81,
            "src": "330:103:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "330:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307839316431373737373831383834643033613637353761383033393936653338646532613432393637666233376565616361373237323932373130323561396532",
              "id": 5,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "367:66:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_65955458610802586644366824307633271870356699036341805474246458084352783133154_by_1",
                "typeString": "int_const 6595...(69 digits omitted)...3154"
              },
              "value": "0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2"
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 8,
            "name": "ens",
            "nodeType": "VariableDeclaration",
            "scope": 81,
            "src": "440:14:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ENS_$3782",
              "typeString": "contract ENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 7,
              "name": "ENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3782,
              "src": "440:3:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENS_$3782",
                "typeString": "contract ENS"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 81,
            "src": "460:39:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
              "typeString": "mapping(bytes32 => string)"
            },
            "typeName": {
              "id": 11,
              "keyType": {
                "id": 9,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "469:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "460:27:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                "typeString": "mapping(bytes32 => string)"
              },
              "valueType": {
                "id": 10,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "480:6:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27,
              "nodeType": "Block",
              "src": "668:66:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 23,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4133,
                            "src": "686:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 18,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "686:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14,
                              "src": "710:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8,
                              "src": "700:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$3782",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 20,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3767,
                            "src": "700:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 22,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "700:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "686:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4136,
                        4137
                      ],
                      "referencedDeclaration": 4136,
                      "src": "678:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 24,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "678:38:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 25,
                  "nodeType": "ExpressionStatement",
                  "src": "678:38:0"
                },
                {
                  "id": 26,
                  "nodeType": "PlaceholderStatement",
                  "src": "726:1:0"
                }
              ]
            },
            "documentation": "@dev Only permits calls by the reverse registrar.\n@param node The node permission is required for.",
            "id": 28,
            "name": "onlyOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 15,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 28,
                  "src": "654:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "654:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "653:14:0"
            },
            "src": "635:99:0",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 62,
              "nodeType": "Block",
              "src": "867:283:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 35,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 33,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8,
                      "src": "877:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$3782",
                        "typeString": "contract ENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 34,
                      "name": "ensAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30,
                      "src": "883:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$3782",
                        "typeString": "contract ENS"
                      }
                    },
                    "src": "877:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$3782",
                      "typeString": "contract ENS"
                    }
                  },
                  "id": 36,
                  "nodeType": "ExpressionStatement",
                  "src": "877:13:0"
                },
                {
                  "assignments": [
                    38
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 38,
                      "name": "registrar",
                      "nodeType": "VariableDeclaration",
                      "scope": 62,
                      "src": "967:26:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                        "typeString": "contract ReverseRegistrar"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 37,
                        "name": "ReverseRegistrar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4009,
                        "src": "967:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                          "typeString": "contract ReverseRegistrar"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 45,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 42,
                            "name": "ADDR_REVERSE_NODE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6,
                            "src": "1023:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 40,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8,
                            "src": "1013:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$3782",
                              "typeString": "contract ENS"
                            }
                          },
                          "id": 41,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3767,
                          "src": "1013:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 43,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1013:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 39,
                      "name": "ReverseRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4009,
                      "src": "996:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ReverseRegistrar_$4009_$",
                        "typeString": "type(contract ReverseRegistrar)"
                      }
                    },
                    "id": 44,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "996:46:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                      "typeString": "contract ReverseRegistrar"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "967:75:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 52,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 47,
                          "name": "registrar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38,
                          "src": "1064:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                            "typeString": "contract ReverseRegistrar"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                            "typeString": "contract ReverseRegistrar"
                          }
                        ],
                        "id": 46,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1056:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 48,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1056:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307830",
                          "id": 50,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1086:3:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0x0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 49,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1078:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 51,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1078:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1056:34:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 61,
                  "nodeType": "IfStatement",
                  "src": "1052:92:0",
                  "trueBody": {
                    "id": 60,
                    "nodeType": "Block",
                    "src": "1092:52:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 56,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4133,
                                "src": "1122:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 57,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1122:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 53,
                              "name": "registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38,
                              "src": "1106:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                                "typeString": "contract ReverseRegistrar"
                              }
                            },
                            "id": 55,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "claim",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3856,
                            "src": "1106:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (address) external returns (bytes32)"
                            }
                          },
                          "id": 58,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1106:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 59,
                        "nodeType": "ExpressionStatement",
                        "src": "1106:27:0"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor\n@param ensAddr The address of the ENS registry.",
            "id": 63,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 31,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30,
                  "name": "ensAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 63,
                  "src": "847:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$3782",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 29,
                    "name": "ENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3782,
                    "src": "847:3:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$3782",
                      "typeString": "contract ENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "846:13:0"
            },
            "returnParameters": {
              "id": 32,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "867:0:0"
            },
            "scope": 81,
            "src": "835:315:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 79,
              "nodeType": "Block",
              "src": "1361:35:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 77,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 73,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12,
                        "src": "1371:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                          "typeString": "mapping(bytes32 => string storage ref)"
                        }
                      },
                      "id": 75,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 74,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65,
                        "src": "1376:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1371:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 76,
                      "name": "_name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67,
                      "src": "1384:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1371:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 78,
                  "nodeType": "ExpressionStatement",
                  "src": "1371:18:0"
                }
              ]
            },
            "documentation": "@dev Sets the name for a node.\n@param node The node to update.\n@param _name The name to set.",
            "id": 80,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 70,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 65,
                    "src": "1355:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 71,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 69,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 28,
                  "src": "1345:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1345:15:0"
              }
            ],
            "name": "setName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 68,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 80,
                  "src": "1303:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 64,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1303:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 80,
                  "src": "1317:19:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 66,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1317:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1302:35:0"
            },
            "returnParameters": {
              "id": 72,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1361:0:0"
            },
            "scope": 81,
            "src": "1286:110:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 82,
        "src": "260:1138:0"
      }
    ],
    "src": "0:1399:0"
  },
  "legacyAST": {
    "absolutePath": "/home/user/Dropbox/projects/resolvers/contracts/DefaultReverseResolver.sol",
    "exportedSymbols": {
      "DefaultReverseResolver": [
        81
      ]
    },
    "id": 82,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".25"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:0"
      },
      {
        "absolutePath": "@ensdomains/ens/contracts/ENS.sol",
        "file": "@ensdomains/ens/contracts/ENS.sol",
        "id": 2,
        "nodeType": "ImportDirective",
        "scope": 82,
        "sourceUnit": 3783,
        "src": "27:43:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@ensdomains/ens/contracts/ReverseRegistrar.sol",
        "file": "@ensdomains/ens/contracts/ReverseRegistrar.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 82,
        "sourceUnit": 4010,
        "src": "71:56:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "@dev Provides a default implementation of a resolver for reverse records,\nwhich permits only the owner to update it.",
        "fullyImplemented": true,
        "id": 81,
        "linearizedBaseContracts": [
          81
        ],
        "name": "DefaultReverseResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 6,
            "name": "ADDR_REVERSE_NODE",
            "nodeType": "VariableDeclaration",
            "scope": 81,
            "src": "330:103:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 4,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "330:7:0",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "307839316431373737373831383834643033613637353761383033393936653338646532613432393637666233376565616361373237323932373130323561396532",
              "id": 5,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "367:66:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_65955458610802586644366824307633271870356699036341805474246458084352783133154_by_1",
                "typeString": "int_const 6595...(69 digits omitted)...3154"
              },
              "value": "0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2"
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 8,
            "name": "ens",
            "nodeType": "VariableDeclaration",
            "scope": 81,
            "src": "440:14:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ENS_$3782",
              "typeString": "contract ENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 7,
              "name": "ENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3782,
              "src": "440:3:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENS_$3782",
                "typeString": "contract ENS"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 12,
            "name": "name",
            "nodeType": "VariableDeclaration",
            "scope": 81,
            "src": "460:39:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
              "typeString": "mapping(bytes32 => string)"
            },
            "typeName": {
              "id": 11,
              "keyType": {
                "id": 9,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "469:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "460:27:0",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                "typeString": "mapping(bytes32 => string)"
              },
              "valueType": {
                "id": 10,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "480:6:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 27,
              "nodeType": "Block",
              "src": "668:66:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 23,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4133,
                            "src": "686:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 18,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "686:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14,
                              "src": "710:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 19,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8,
                              "src": "700:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$3782",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 20,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3767,
                            "src": "700:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 22,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "700:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "686:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 16,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4136,
                        4137
                      ],
                      "referencedDeclaration": 4136,
                      "src": "678:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 24,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "678:38:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 25,
                  "nodeType": "ExpressionStatement",
                  "src": "678:38:0"
                },
                {
                  "id": 26,
                  "nodeType": "PlaceholderStatement",
                  "src": "726:1:0"
                }
              ]
            },
            "documentation": "@dev Only permits calls by the reverse registrar.\n@param node The node permission is required for.",
            "id": 28,
            "name": "onlyOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 15,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 28,
                  "src": "654:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 13,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "654:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "653:14:0"
            },
            "src": "635:99:0",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 62,
              "nodeType": "Block",
              "src": "867:283:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 35,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 33,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8,
                      "src": "877:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$3782",
                        "typeString": "contract ENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 34,
                      "name": "ensAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 30,
                      "src": "883:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$3782",
                        "typeString": "contract ENS"
                      }
                    },
                    "src": "877:13:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$3782",
                      "typeString": "contract ENS"
                    }
                  },
                  "id": 36,
                  "nodeType": "ExpressionStatement",
                  "src": "877:13:0"
                },
                {
                  "assignments": [
                    38
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 38,
                      "name": "registrar",
                      "nodeType": "VariableDeclaration",
                      "scope": 62,
                      "src": "967:26:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                        "typeString": "contract ReverseRegistrar"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 37,
                        "name": "ReverseRegistrar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4009,
                        "src": "967:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                          "typeString": "contract ReverseRegistrar"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 45,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 42,
                            "name": "ADDR_REVERSE_NODE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6,
                            "src": "1023:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 40,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8,
                            "src": "1013:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$3782",
                              "typeString": "contract ENS"
                            }
                          },
                          "id": 41,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3767,
                          "src": "1013:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 43,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1013:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 39,
                      "name": "ReverseRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4009,
                      "src": "996:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ReverseRegistrar_$4009_$",
                        "typeString": "type(contract ReverseRegistrar)"
                      }
                    },
                    "id": 44,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "996:46:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                      "typeString": "contract ReverseRegistrar"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "967:75:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 52,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 47,
                          "name": "registrar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38,
                          "src": "1064:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                            "typeString": "contract ReverseRegistrar"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                            "typeString": "contract ReverseRegistrar"
                          }
                        ],
                        "id": 46,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1056:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 48,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1056:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "307830",
                          "id": 50,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1086:3:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0x0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 49,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1078:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 51,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1078:12:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1056:34:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 61,
                  "nodeType": "IfStatement",
                  "src": "1052:92:0",
                  "trueBody": {
                    "id": 60,
                    "nodeType": "Block",
                    "src": "1092:52:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 56,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4133,
                                "src": "1122:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 57,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1122:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 53,
                              "name": "registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 38,
                              "src": "1106:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ReverseRegistrar_$4009",
                                "typeString": "contract ReverseRegistrar"
                              }
                            },
                            "id": 55,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "claim",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3856,
                            "src": "1106:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (address) external returns (bytes32)"
                            }
                          },
                          "id": 58,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1106:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 59,
                        "nodeType": "ExpressionStatement",
                        "src": "1106:27:0"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@dev Constructor\n@param ensAddr The address of the ENS registry.",
            "id": 63,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 31,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 30,
                  "name": "ensAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 63,
                  "src": "847:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$3782",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 29,
                    "name": "ENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3782,
                    "src": "847:3:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$3782",
                      "typeString": "contract ENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "846:13:0"
            },
            "returnParameters": {
              "id": 32,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "867:0:0"
            },
            "scope": 81,
            "src": "835:315:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 79,
              "nodeType": "Block",
              "src": "1361:35:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 77,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 73,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 12,
                        "src": "1371:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$",
                          "typeString": "mapping(bytes32 => string storage ref)"
                        }
                      },
                      "id": 75,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 74,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65,
                        "src": "1376:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1371:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 76,
                      "name": "_name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 67,
                      "src": "1384:5:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1371:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 78,
                  "nodeType": "ExpressionStatement",
                  "src": "1371:18:0"
                }
              ]
            },
            "documentation": "@dev Sets the name for a node.\n@param node The node to update.\n@param _name The name to set.",
            "id": 80,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 70,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 65,
                    "src": "1355:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 71,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 69,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 28,
                  "src": "1345:9:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1345:15:0"
              }
            ],
            "name": "setName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 68,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 80,
                  "src": "1303:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 64,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1303:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67,
                  "name": "_name",
                  "nodeType": "VariableDeclaration",
                  "scope": 80,
                  "src": "1317:19:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 66,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1317:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1302:35:0"
            },
            "returnParameters": {
              "id": 72,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1361:0:0"
            },
            "scope": 81,
            "src": "1286:110:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 82,
        "src": "260:1138:0"
      }
    ],
    "src": "0:1399:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.8+commit.23d335f2.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.16",
  "updatedAt": "2020-02-10T18:46:21.020Z",
  "devdoc": {
    "details": "Provides a default implementation of a resolver for reverse records, which permits only the owner to update it.",
    "methods": {
      "constructor": {
        "details": "Constructor",
        "params": {
          "ensAddr": "The address of the ENS registry."
        }
      },
      "setName(bytes32,string)": {
        "details": "Sets the name for a node.",
        "params": {
          "_name": "The name to set.",
          "node": "The node to update."
        }
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}