trufflesuite/truffle

View on GitHub
packages/deployer/builtContracts/ReverseRegistrar.json

Summary

Maintainability
Test Coverage
{
  "contractName": "ReverseRegistrar",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ENS",
          "name": "ensAddr",
          "type": "address"
        },
        {
          "internalType": "contract NameResolver",
          "name": "resolverAddr",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ADDR_REVERSE_NODE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultResolver",
      "outputs": [
        {
          "internalType": "contract NameResolver",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ens",
      "outputs": [
        {
          "internalType": "contract ENS",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "claim",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "resolver",
          "type": "address"
        }
      ],
      "name": "claimWithResolver",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        }
      ],
      "name": "setName",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "node",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.4+commit.3f05b770\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ENS\",\"name\":\"ensAddr\",\"type\":\"address\"},{\"internalType\":\"contract NameResolver\",\"name\":\"resolverAddr\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ADDR_REVERSE_NODE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"claimWithResolver\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultResolver\",\"outputs\":[{\"internalType\":\"contract NameResolver\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"contract ENS\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"node\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claim(address)\":{\"details\":\"Transfers ownership of the reverse ENS record associated with the      calling account.\",\"params\":{\"owner\":\"The address to set as the owner of the reverse record in ENS.\"},\"returns\":{\"_0\":\"The ENS node hash of the reverse record.\"}},\"claimWithResolver(address,address)\":{\"details\":\"Transfers ownership of the reverse ENS record associated with the      calling account.\",\"params\":{\"owner\":\"The address to set as the owner of the reverse record in ENS.\",\"resolver\":\"The address of the resolver to set; 0 to leave unchanged.\"},\"returns\":{\"_0\":\"The ENS node hash of the reverse record.\"}},\"constructor\":{\"details\":\"Constructor\",\"params\":{\"ensAddr\":\"The address of the ENS registry.\",\"resolverAddr\":\"The address of the default reverse resolver.\"}},\"node(address)\":{\"details\":\"Returns the node hash for a given account's reverse records.\",\"params\":{\"addr\":\"The address to hash\"},\"returns\":{\"_0\":\"The ENS node hash.\"}},\"setName(string)\":{\"details\":\"Sets the `name()` record for the reverse ENS record associated with the calling account. First updates the resolver to the default reverse resolver if necessary.\",\"params\":{\"name\":\"The name to set for this address.\"},\"returns\":{\"_0\":\"The ENS node hash of the reverse record.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/ReverseRegistrar.sol\":\"ReverseRegistrar\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/ENS.sol\":{\"keccak256\":\"0x376a1ab7c43ac7c922a5b7e39c7fcba8bc66409fb335ebcee2f8f45d485b1f31\",\"urls\":[\"bzz-raw://766025ff22caa14c68bb5341b843616f3da8b739924475f7dc4383b0482138fe\",\"dweb:/ipfs/QmWzCxvb6WnF9qHHX4np7f6QePXMqX59SDMuRu8vogYKAV\"]},\"project:/contracts/ReverseRegistrar.sol\":{\"keccak256\":\"0x17e73b58124d7ec0294c9cf73ee0ab8b1f52008e1e3e6f7e1654a8147523f8fb\",\"urls\":[\"bzz-raw://57cf0fba04b811b8d610598264216394fd3208fce6b2f2cc61670ebc2318dd9a\",\"dweb:/ipfs/Qmdif69vVwLmKsNgQTPhoQDeqWEckBPZiPrBjjcjSfPG2X\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50604051610d89380380610d898339818101604052604081101561003357600080fd5b810190808051906020019092919080519060200190929190505050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be37f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561016657600080fd5b505afa15801561017a573d6000803e3d6000fd5b505050506040513d602081101561019057600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461027d578073ffffffffffffffffffffffffffffffffffffffff16631e83409a336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561024057600080fd5b505af1158015610254573d6000803e3d6000fd5b505050506040513d602081101561026a57600080fd5b8101908080519060200190929190505050505b505050610afa8061028f6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637cf8a2eb1161005b5780637cf8a2eb14610186578063828eab0e146101a4578063bffbe61c146101d8578063c47f0027146102305761007d565b80630f5a5466146100825780631e83409a146100fa5780633f15457f14610152575b600080fd5b6100e46004803603604081101561009857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102ff565b6040518082815260200191505060405180910390f35b61013c6004803603602081101561011057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b6040518082815260200191505060405180910390f35b61015a610852565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018e610876565b6040518082815260200191505060405180910390f35b6101ac61089d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61021a600480360360208110156101ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c3565b6040518082815260200191505060405180910390f35b6102e96004803603602081101561024657600080fd5b810190808035906020019064010000000081111561026357600080fd5b82018360208201111561027557600080fd5b8035906020019184600183028401116401000000008311171561029757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610926565b6040518082815260200191505060405180910390f35b60008061030b33610a5a565b905060007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b82604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156103d757600080fd5b505afa1580156103eb573d6000803e3d6000fd5b505050506040513d602081101561040157600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610528575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630178b8bf836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156104bd57600080fd5b505afa1580156104d1573d6000803e3d6000fd5b505050506040513d60208110156104e757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610706573073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461065c5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85306040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561061c57600080fd5b505af1158015610630573d6000803e3d6000fd5b505050506040513d602081101561064657600080fd5b8101908080519060200190929190505050503090505b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631896f70a83876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156106ed57600080fd5b505af1158015610701573d6000803e3d6000fd5b505050505b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108325760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85896040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b505050506040513d602081101561081f57600080fd5b8101908080519060200190929190505050505b81935050505092915050565b600061084b8260006102ff565b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b81565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b6108f283610a5a565b6040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60008061095530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166102ff565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637737221382856040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109ec5780820151818401526020810190506109d1565b50505050905090810190601f168015610a195780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610a3957600080fd5b505af1158015610a4d573d6000803e3d6000fd5b5050505080915050919050565b60007f303132333435363738396162636465660000000000000000000000000000000060285b6000811115610ab65760018103905081600f85161a815360108404935060018103905081600f85161a8153601084049350610a80565b50602860002091505091905056fea264697066735822122001eb0fe3b1620750d92f9c3097f105d2b8c1c9af21f95212691c597ad2021ba364736f6c63430007040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80637cf8a2eb1161005b5780637cf8a2eb14610186578063828eab0e146101a4578063bffbe61c146101d8578063c47f0027146102305761007d565b80630f5a5466146100825780631e83409a146100fa5780633f15457f14610152575b600080fd5b6100e46004803603604081101561009857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102ff565b6040518082815260200191505060405180910390f35b61013c6004803603602081101561011057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b6040518082815260200191505060405180910390f35b61015a610852565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018e610876565b6040518082815260200191505060405180910390f35b6101ac61089d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61021a600480360360208110156101ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c3565b6040518082815260200191505060405180910390f35b6102e96004803603602081101561024657600080fd5b810190808035906020019064010000000081111561026357600080fd5b82018360208201111561027557600080fd5b8035906020019184600183028401116401000000008311171561029757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610926565b6040518082815260200191505060405180910390f35b60008061030b33610a5a565b905060007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b82604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156103d757600080fd5b505afa1580156103eb573d6000803e3d6000fd5b505050506040513d602081101561040157600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610528575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630178b8bf836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156104bd57600080fd5b505afa1580156104d1573d6000803e3d6000fd5b505050506040513d60208110156104e757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610706573073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461065c5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85306040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b15801561061c57600080fd5b505af1158015610630573d6000803e3d6000fd5b505050506040513d602081101561064657600080fd5b8101908080519060200190929190505050503090505b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631896f70a83876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b1580156106ed57600080fd5b505af1158015610701573d6000803e3d6000fd5b505050505b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108325760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306ab59237f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b85896040518463ffffffff1660e01b8152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019350505050602060405180830381600087803b1580156107f557600080fd5b505af1158015610809573d6000803e3d6000fd5b505050506040513d602081101561081f57600080fd5b8101908080519060200190929190505050505b81935050505092915050565b600061084b8260006102ff565b9050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b81565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260001b6108f283610a5a565b6040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60008061095530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166102ff565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637737221382856040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109ec5780820151818401526020810190506109d1565b50505050905090810190601f168015610a195780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610a3957600080fd5b505af1158015610a4d573d6000803e3d6000fd5b5050505080915050919050565b60007f303132333435363738396162636465660000000000000000000000000000000060285b6000811115610ab65760018103905081600f85161a815360108404935060018103905081600f85161a8153601084049350610a80565b50602860002091505091905056fea264697066735822122001eb0fe3b1620750d92f9c3097f105d2b8c1c9af21f95212691c597ad2021ba364736f6c63430007040033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "153:4192:5:-:0;;;563:391;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:7;632:3;;:13;;;;;;;;;;;;;;;;;;673:12;655:15;;:30;;;;;;;;;;;;;;;;;;762:29;811:3;;;;;;;;;;;:9;;;261:66;821:17;;811:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;762:78;;887:3;854:37;;862:12;854:37;;;850:98;;907:12;:18;;;926:10;907:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;850:98;563:391;;;153:4192;;;;;;",
  "deployedSourceMap": "153:4192:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:871;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1221:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;334:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;217:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;354:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3262:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2876:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1686:871;1762:7;1781:13;1797:26;1812:10;1797:14;:26::i;:::-;1781:42;;1833:12;261:66;1875:17;;1894:5;1858:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1848:53;;;;;;1833:68;;1911:20;1934:3;;;;;;;;;;;:9;;;1944:4;1934:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1911:38;;2027:3;2007:24;;:8;:24;;;;:58;;;;;2047:3;;;;;;;;;;:12;;;2060:4;2047:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2035:30;;:8;:30;;;;2007:58;2003:372;;;2174:4;2150:29;;:12;:29;;;2146:174;;2199:3;;;;;;;;;;:19;;;261:66;2219:17;;2238:5;2253:4;2199:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2300:4;2277:28;;2146:174;2333:3;;;;;;;;;;:15;;;2349:4;2355:8;2333:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2003:372;2445:5;2429:21;;:12;:21;;;2425:104;;2466:3;;;;;;;;;;:19;;;261:66;2486:17;;2505:5;2512;2466:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2425:104;2546:4;2539:11;;;;;1686:871;;;;:::o;1221:117::-;1267:7;1293:38;1311:5;1326:3;1293:17;:38::i;:::-;1286:45;;1221:117;;;:::o;334:14::-;;;;;;;;;;;;:::o;217:110::-;261:66;217:110;;;:::o;354:35::-;;;;;;;;;;;;;:::o;3262:150::-;3311:7;261:66;3364:17;;3383:20;3398:4;3383:14;:20::i;:::-;3347:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3337:68;;;;;;3330:75;;3262:150;;;:::o;2876:218::-;2929:7;2948:12;2963:58;2989:4;3004:15;;;;;;;;;;;2963:17;:58::i;:::-;2948:73;;3031:15;;;;;;;;;;;:23;;;3055:4;3061;3031:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3083:4;3076:11;;;2876:218;;;:::o;3717:626::-;3777:11;3906:66;4001:2;3986:304;4012:1;4009;4006:8;3986:304;;;4049:1;4046;4042:9;4037:14;;4100:6;4094:3;4088:4;4084:14;4079:28;4076:1;4068:40;4143:4;4137;4133:15;4125:23;;4177:1;4174;4170:9;4165:14;;4228:6;4222:3;4216:4;4212:14;4207:28;4204:1;4196:40;4271:4;4265;4261:15;4253:23;;3986:304;;;3990:15;4324:2;4321:1;4311:16;4304:23;;3878:459;;;;:::o",
  "source": "pragma solidity ^0.7.0;\n\nimport \"./ENS.sol\";\n\nabstract contract NameResolver {\n    function setName(bytes32 node, string memory name) public virtual;\n}\n\ncontract ReverseRegistrar {\n    // namehash('addr.reverse')\n    bytes32 public constant ADDR_REVERSE_NODE = 0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2;\n\n    ENS public ens;\n    NameResolver public defaultResolver;\n\n    /**\n     * @dev Constructor\n     * @param ensAddr The address of the ENS registry.\n     * @param resolverAddr The address of the default reverse resolver.\n     */\n    constructor(ENS ensAddr, NameResolver resolverAddr) public {\n        ens = ensAddr;\n        defaultResolver = resolverAddr;\n\n        // Assign ownership of the reverse record to our deployer\n        ReverseRegistrar oldRegistrar = ReverseRegistrar(ens.owner(ADDR_REVERSE_NODE));\n        if (address(oldRegistrar) != address(0x0)) {\n            oldRegistrar.claim(msg.sender);\n        }\n    }\n\n    /**\n     * @dev Transfers ownership of the reverse ENS record associated with the\n     *      calling account.\n     * @param owner The address to set as the owner of the reverse record in ENS.\n     * @return The ENS node hash of the reverse record.\n     */\n    function claim(address owner) public returns (bytes32) {\n        return claimWithResolver(owner, address(0x0));\n    }\n\n    /**\n     * @dev Transfers ownership of the reverse ENS record associated with the\n     *      calling account.\n     * @param owner The address to set as the owner of the reverse record in ENS.\n     * @param resolver The address of the resolver to set; 0 to leave unchanged.\n     * @return The ENS node hash of the reverse record.\n     */\n    function claimWithResolver(address owner, address resolver) public returns (bytes32) {\n        bytes32 label = sha3HexAddress(msg.sender);\n        bytes32 node = keccak256(abi.encodePacked(ADDR_REVERSE_NODE, label));\n        address currentOwner = ens.owner(node);\n\n        // Update the resolver if required\n        if (resolver != address(0x0) && resolver != ens.resolver(node)) {\n            // Transfer the name to us first if it's not already\n            if (currentOwner != address(this)) {\n                ens.setSubnodeOwner(ADDR_REVERSE_NODE, label, address(this));\n                currentOwner = address(this);\n            }\n            ens.setResolver(node, resolver);\n        }\n\n        // Update the owner if required\n        if (currentOwner != owner) {\n            ens.setSubnodeOwner(ADDR_REVERSE_NODE, label, owner);\n        }\n\n        return node;\n    }\n\n    /**\n     * @dev Sets the `name()` record for the reverse ENS record associated with\n     * the calling account. First updates the resolver to the default reverse\n     * resolver if necessary.\n     * @param name The name to set for this address.\n     * @return The ENS node hash of the reverse record.\n     */\n    function setName(string memory name) public returns (bytes32) {\n        bytes32 node = claimWithResolver(address(this), address(defaultResolver));\n        defaultResolver.setName(node, name);\n        return node;\n    }\n\n    /**\n     * @dev Returns the node hash for a given account's reverse records.\n     * @param addr The address to hash\n     * @return The ENS node hash.\n     */\n    function node(address addr) public pure returns (bytes32) {\n        return keccak256(abi.encodePacked(ADDR_REVERSE_NODE, sha3HexAddress(addr)));\n    }\n\n    /**\n     * @dev An optimised function to compute the sha3 of the lower-case\n     *      hexadecimal representation of an Ethereum address.\n     * @param addr The address to hash\n     * @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\n     *         input address.\n     */\n    function sha3HexAddress(address addr) private pure returns (bytes32 ret) {\n        addr;\n        ret; // Stop warning us about unused variables\n        assembly {\n            let lookup := 0x3031323334353637383961626364656600000000000000000000000000000000\n\n            for { let i := 40 } gt(i, 0) { } {\n                i := sub(i, 1)\n                mstore8(i, byte(and(addr, 0xf), lookup))\n                addr := div(addr, 0x10)\n                i := sub(i, 1)\n                mstore8(i, byte(and(addr, 0xf), lookup))\n                addr := div(addr, 0x10)\n            }\n\n            ret := keccak256(0, 40)\n        }\n    }\n}\n",
  "sourcePath": "/home/sniffnoy/truffle/ens/contracts/ReverseRegistrar.sol",
  "ast": {
    "absolutePath": "project:/contracts/ReverseRegistrar.sol",
    "exportedSymbols": {
      "ENS": [
        136
      ],
      "NameResolver": [
        843
      ],
      "ReverseRegistrar": [
        1074
      ]
    },
    "id": 1075,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 834,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:5"
      },
      {
        "absolutePath": "project:/contracts/ENS.sol",
        "file": "./ENS.sol",
        "id": 835,
        "nodeType": "ImportDirective",
        "scope": 1075,
        "sourceUnit": 137,
        "src": "25:19:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": false,
        "id": 843,
        "linearizedBaseContracts": [
          843
        ],
        "name": "NameResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "functionSelector": "77372213",
            "id": 842,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 840,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 837,
                  "mutability": "mutable",
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 842,
                  "src": "100:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 836,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "100:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 839,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 842,
                  "src": "114:18:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 838,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "114:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "99:34:5"
            },
            "returnParameters": {
              "id": 841,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "148:0:5"
            },
            "scope": 843,
            "src": "83:66:5",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          }
        ],
        "scope": 1075,
        "src": "46:105:5"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 1074,
        "linearizedBaseContracts": [
          1074
        ],
        "name": "ReverseRegistrar",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "functionSelector": "7cf8a2eb",
            "id": 846,
            "mutability": "constant",
            "name": "ADDR_REVERSE_NODE",
            "nodeType": "VariableDeclaration",
            "scope": 1074,
            "src": "217:110:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 844,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "217:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "hexValue": "307839316431373737373831383834643033613637353761383033393936653338646532613432393637666233376565616361373237323932373130323561396532",
              "id": 845,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "261:66:5",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_65955458610802586644366824307633271870356699036341805474246458084352783133154_by_1",
                "typeString": "int_const 6595...(69 digits omitted)...3154"
              },
              "value": "0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "3f15457f",
            "id": 848,
            "mutability": "mutable",
            "name": "ens",
            "nodeType": "VariableDeclaration",
            "scope": 1074,
            "src": "334:14:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ENS_$136",
              "typeString": "contract ENS"
            },
            "typeName": {
              "id": 847,
              "name": "ENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 136,
              "src": "334:3:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENS_$136",
                "typeString": "contract ENS"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "828eab0e",
            "id": 850,
            "mutability": "mutable",
            "name": "defaultResolver",
            "nodeType": "VariableDeclaration",
            "scope": 1074,
            "src": "354:35:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_NameResolver_$843",
              "typeString": "contract NameResolver"
            },
            "typeName": {
              "id": 849,
              "name": "NameResolver",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 843,
              "src": "354:12:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_NameResolver_$843",
                "typeString": "contract NameResolver"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 893,
              "nodeType": "Block",
              "src": "622:332:5",
              "statements": [
                {
                  "expression": {
                    "id": 860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 858,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 848,
                      "src": "632:3:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$136",
                        "typeString": "contract ENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 859,
                      "name": "ensAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 853,
                      "src": "638:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$136",
                        "typeString": "contract ENS"
                      }
                    },
                    "src": "632:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$136",
                      "typeString": "contract ENS"
                    }
                  },
                  "id": 861,
                  "nodeType": "ExpressionStatement",
                  "src": "632:13:5"
                },
                {
                  "expression": {
                    "id": 864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 862,
                      "name": "defaultResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 850,
                      "src": "655:15:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_NameResolver_$843",
                        "typeString": "contract NameResolver"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 863,
                      "name": "resolverAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 855,
                      "src": "673:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_NameResolver_$843",
                        "typeString": "contract NameResolver"
                      }
                    },
                    "src": "655:30:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NameResolver_$843",
                      "typeString": "contract NameResolver"
                    }
                  },
                  "id": 865,
                  "nodeType": "ExpressionStatement",
                  "src": "655:30:5"
                },
                {
                  "assignments": [
                    867
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 867,
                      "mutability": "mutable",
                      "name": "oldRegistrar",
                      "nodeType": "VariableDeclaration",
                      "scope": 893,
                      "src": "762:29:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                        "typeString": "contract ReverseRegistrar"
                      },
                      "typeName": {
                        "id": 866,
                        "name": "ReverseRegistrar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1074,
                        "src": "762:16:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                          "typeString": "contract ReverseRegistrar"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 874,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 871,
                            "name": "ADDR_REVERSE_NODE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 846,
                            "src": "821:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 869,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 848,
                            "src": "811:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$136",
                              "typeString": "contract ENS"
                            }
                          },
                          "id": 870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 105,
                          "src": "811:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 872,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "811:28:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 868,
                      "name": "ReverseRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1074,
                      "src": "794:16:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ReverseRegistrar_$1074_$",
                        "typeString": "type(contract ReverseRegistrar)"
                      }
                    },
                    "id": 873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "794:46:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                      "typeString": "contract ReverseRegistrar"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "762:78:5"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 877,
                          "name": "oldRegistrar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 867,
                          "src": "862:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                            "typeString": "contract ReverseRegistrar"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                            "typeString": "contract ReverseRegistrar"
                          }
                        ],
                        "id": 876,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "854:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 875,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "854:7:5",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 878,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "854:21:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "307830",
                          "id": 881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "887:3:5",
                          "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": 880,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "879:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 879,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "879:7:5",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "879:12:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "854:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 892,
                  "nodeType": "IfStatement",
                  "src": "850:98:5",
                  "trueBody": {
                    "id": 891,
                    "nodeType": "Block",
                    "src": "893:55:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 887,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "926:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "926:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "id": 884,
                              "name": "oldRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 867,
                              "src": "907:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                "typeString": "contract ReverseRegistrar"
                              }
                            },
                            "id": 886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "claim",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 911,
                            "src": "907:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (address) external returns (bytes32)"
                            }
                          },
                          "id": 889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "907:30:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 890,
                        "nodeType": "ExpressionStatement",
                        "src": "907:30:5"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 851,
              "nodeType": "StructuredDocumentation",
              "src": "396:162:5",
              "text": " @dev Constructor\n @param ensAddr The address of the ENS registry.\n @param resolverAddr The address of the default reverse resolver."
            },
            "id": 894,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 853,
                  "mutability": "mutable",
                  "name": "ensAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 894,
                  "src": "575:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ENS_$136",
                    "typeString": "contract ENS"
                  },
                  "typeName": {
                    "id": 852,
                    "name": "ENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 136,
                    "src": "575:3:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$136",
                      "typeString": "contract ENS"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 855,
                  "mutability": "mutable",
                  "name": "resolverAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 894,
                  "src": "588:25:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_NameResolver_$843",
                    "typeString": "contract NameResolver"
                  },
                  "typeName": {
                    "id": 854,
                    "name": "NameResolver",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 843,
                    "src": "588:12:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_NameResolver_$843",
                      "typeString": "contract NameResolver"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "574:40:5"
            },
            "returnParameters": {
              "id": 857,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "622:0:5"
            },
            "scope": 1074,
            "src": "563:391:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 910,
              "nodeType": "Block",
              "src": "1276:62:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 903,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 897,
                        "src": "1311:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "307830",
                            "id": 906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1326:3:5",
                            "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": 905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1318:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 904,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1318:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1318:12:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 902,
                      "name": "claimWithResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1009,
                      "src": "1293:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (address,address) returns (bytes32)"
                      }
                    },
                    "id": 908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1293:38:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 901,
                  "id": 909,
                  "nodeType": "Return",
                  "src": "1286:45:5"
                }
              ]
            },
            "documentation": {
              "id": 895,
              "nodeType": "StructuredDocumentation",
              "src": "960:256:5",
              "text": " @dev Transfers ownership of the reverse ENS record associated with the\n      calling account.\n @param owner The address to set as the owner of the reverse record in ENS.\n @return The ENS node hash of the reverse record."
            },
            "functionSelector": "1e83409a",
            "id": 911,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "claim",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 898,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 897,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "1236:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 896,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1236:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1235:15:5"
            },
            "returnParameters": {
              "id": 901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 900,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 911,
                  "src": "1267:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 899,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1267:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1266:9:5"
            },
            "scope": 1074,
            "src": "1221:117:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1008,
              "nodeType": "Block",
              "src": "1771:786:5",
              "statements": [
                {
                  "assignments": [
                    922
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 922,
                      "mutability": "mutable",
                      "name": "label",
                      "nodeType": "VariableDeclaration",
                      "scope": 1008,
                      "src": "1781:13:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 921,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1781:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 927,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 924,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1812:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1812:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 923,
                      "name": "sha3HexAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1073,
                      "src": "1797:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (address) pure returns (bytes32)"
                      }
                    },
                    "id": 926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1797:26:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1781:42:5"
                },
                {
                  "assignments": [
                    929
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 929,
                      "mutability": "mutable",
                      "name": "node",
                      "nodeType": "VariableDeclaration",
                      "scope": 1008,
                      "src": "1833:12:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 928,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1833:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 937,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 933,
                            "name": "ADDR_REVERSE_NODE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 846,
                            "src": "1875:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 934,
                            "name": "label",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 922,
                            "src": "1894:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 931,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1858:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 932,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "1858:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1858:42:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 930,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1848:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1848:53:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1833:68:5"
                },
                {
                  "assignments": [
                    939
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 939,
                      "mutability": "mutable",
                      "name": "currentOwner",
                      "nodeType": "VariableDeclaration",
                      "scope": 1008,
                      "src": "1911:20:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 938,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1911:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 944,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 942,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 929,
                        "src": "1944:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 940,
                        "name": "ens",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 848,
                        "src": "1934:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENS_$136",
                          "typeString": "contract ENS"
                        }
                      },
                      "id": 941,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 105,
                      "src": "1934:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 943,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1934:15:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1911:38:5"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 950,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 945,
                        "name": "resolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 916,
                        "src": "2007:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "arguments": [
                          {
                            "hexValue": "307830",
                            "id": 948,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2027:3:5",
                            "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": 947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2019:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 946,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2019:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 949,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2019:12:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "2007:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 956,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 951,
                        "name": "resolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 916,
                        "src": "2035:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "arguments": [
                          {
                            "id": 954,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 929,
                            "src": "2060:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 952,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 848,
                            "src": "2047:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENS_$136",
                              "typeString": "contract ENS"
                            }
                          },
                          "id": 953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "resolver",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 112,
                          "src": "2047:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2047:18:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2035:30:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2007:58:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 992,
                  "nodeType": "IfStatement",
                  "src": "2003:372:5",
                  "trueBody": {
                    "id": 991,
                    "nodeType": "Block",
                    "src": "2067:308:5",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 958,
                            "name": "currentOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 939,
                            "src": "2150:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 961,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "2174:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                  "typeString": "contract ReverseRegistrar"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                  "typeString": "contract ReverseRegistrar"
                                }
                              ],
                              "id": 960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2166:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 959,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2166:7:5",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2166:13:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2150:29:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 983,
                        "nodeType": "IfStatement",
                        "src": "2146:174:5",
                        "trueBody": {
                          "id": 982,
                          "nodeType": "Block",
                          "src": "2181:139:5",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 967,
                                    "name": "ADDR_REVERSE_NODE",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 846,
                                    "src": "2219:17:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 968,
                                    "name": "label",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 922,
                                    "src": "2238:5:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 971,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "2253:4:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                          "typeString": "contract ReverseRegistrar"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                          "typeString": "contract ReverseRegistrar"
                                        }
                                      ],
                                      "id": 970,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2245:7:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 969,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2245:7:5",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 972,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2245:13:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 964,
                                    "name": "ens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 848,
                                    "src": "2199:3:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ENS_$136",
                                      "typeString": "contract ENS"
                                    }
                                  },
                                  "id": 966,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "setSubnodeOwner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 70,
                                  "src": "2199:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
                                  }
                                },
                                "id": 973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2199:60:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 974,
                              "nodeType": "ExpressionStatement",
                              "src": "2199:60:5"
                            },
                            {
                              "expression": {
                                "id": 980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 975,
                                  "name": "currentOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 939,
                                  "src": "2277:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 978,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "2300:4:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                        "typeString": "contract ReverseRegistrar"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                        "typeString": "contract ReverseRegistrar"
                                      }
                                    ],
                                    "id": 977,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2292:7:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 976,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2292:7:5",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2292:13:5",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2277:28:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 981,
                              "nodeType": "ExpressionStatement",
                              "src": "2277:28:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 987,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 929,
                              "src": "2349:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 988,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 916,
                              "src": "2355:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 984,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 848,
                              "src": "2333:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$136",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 986,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setResolver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 77,
                            "src": "2333:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) external"
                            }
                          },
                          "id": 989,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2333:31:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 990,
                        "nodeType": "ExpressionStatement",
                        "src": "2333:31:5"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 993,
                      "name": "currentOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 939,
                      "src": "2429:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 994,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 914,
                      "src": "2445:5:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2429:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1005,
                  "nodeType": "IfStatement",
                  "src": "2425:104:5",
                  "trueBody": {
                    "id": 1004,
                    "nodeType": "Block",
                    "src": "2452:77:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 999,
                              "name": "ADDR_REVERSE_NODE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 846,
                              "src": "2486:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 1000,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 922,
                              "src": "2505:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 1001,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 914,
                              "src": "2512:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 996,
                              "name": "ens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 848,
                              "src": "2466:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$136",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setSubnodeOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 70,
                            "src": "2466:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32,address) external returns (bytes32)"
                            }
                          },
                          "id": 1002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2466:52:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1003,
                        "nodeType": "ExpressionStatement",
                        "src": "2466:52:5"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 1006,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 929,
                    "src": "2546:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 920,
                  "id": 1007,
                  "nodeType": "Return",
                  "src": "2539:11:5"
                }
              ]
            },
            "documentation": {
              "id": 912,
              "nodeType": "StructuredDocumentation",
              "src": "1344:337:5",
              "text": " @dev Transfers ownership of the reverse ENS record associated with the\n      calling account.\n @param owner The address to set as the owner of the reverse record in ENS.\n @param resolver The address of the resolver to set; 0 to leave unchanged.\n @return The ENS node hash of the reverse record."
            },
            "functionSelector": "0f5a5466",
            "id": 1009,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "claimWithResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 917,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 914,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1009,
                  "src": "1713:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 913,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1713:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 916,
                  "mutability": "mutable",
                  "name": "resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 1009,
                  "src": "1728:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 915,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1728:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1712:33:5"
            },
            "returnParameters": {
              "id": 920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 919,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1009,
                  "src": "1762:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 918,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1762:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1761:9:5"
            },
            "scope": 1074,
            "src": "1686:871:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1039,
              "nodeType": "Block",
              "src": "2938:156:5",
              "statements": [
                {
                  "assignments": [
                    1018
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1018,
                      "mutability": "mutable",
                      "name": "node",
                      "nodeType": "VariableDeclaration",
                      "scope": 1039,
                      "src": "2948:12:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1017,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2948:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1029,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1022,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "2989:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                              "typeString": "contract ReverseRegistrar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                              "typeString": "contract ReverseRegistrar"
                            }
                          ],
                          "id": 1021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2981:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1020,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2981:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1023,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2981:13:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 1026,
                            "name": "defaultResolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 850,
                            "src": "3004:15:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_NameResolver_$843",
                              "typeString": "contract NameResolver"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_NameResolver_$843",
                              "typeString": "contract NameResolver"
                            }
                          ],
                          "id": 1025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2996:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 1024,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2996:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 1027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2996:24:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1019,
                      "name": "claimWithResolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1009,
                      "src": "2963:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (address,address) returns (bytes32)"
                      }
                    },
                    "id": 1028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2963:58:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2948:73:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1033,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1018,
                        "src": "3055:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 1034,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1012,
                        "src": "3061:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 1030,
                        "name": "defaultResolver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 850,
                        "src": "3031:15:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_NameResolver_$843",
                          "typeString": "contract NameResolver"
                        }
                      },
                      "id": 1032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setName",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 842,
                      "src": "3031:23:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,string memory) external"
                      }
                    },
                    "id": 1035,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3031:35:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1036,
                  "nodeType": "ExpressionStatement",
                  "src": "3031:35:5"
                },
                {
                  "expression": {
                    "id": 1037,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1018,
                    "src": "3083:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1016,
                  "id": 1038,
                  "nodeType": "Return",
                  "src": "3076:11:5"
                }
              ]
            },
            "documentation": {
              "id": 1010,
              "nodeType": "StructuredDocumentation",
              "src": "2563:308:5",
              "text": " @dev Sets the `name()` record for the reverse ENS record associated with\n the calling account. First updates the resolver to the default reverse\n resolver if necessary.\n @param name The name to set for this address.\n @return The ENS node hash of the reverse record."
            },
            "functionSelector": "c47f0027",
            "id": 1040,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1012,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 1040,
                  "src": "2893:18:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1011,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2893:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2892:20:5"
            },
            "returnParameters": {
              "id": 1016,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1015,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1040,
                  "src": "2929:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1014,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2929:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2928:9:5"
            },
            "scope": 1074,
            "src": "2876:218:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1058,
              "nodeType": "Block",
              "src": "3320:92:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1051,
                            "name": "ADDR_REVERSE_NODE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 846,
                            "src": "3364:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 1053,
                                "name": "addr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1043,
                                "src": "3398:4:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1052,
                              "name": "sha3HexAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1073,
                              "src": "3383:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$",
                                "typeString": "function (address) pure returns (bytes32)"
                              }
                            },
                            "id": 1054,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3383:20:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 1049,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3347:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "3347:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3347:57:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1048,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "3337:9:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3337:68:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1047,
                  "id": 1057,
                  "nodeType": "Return",
                  "src": "3330:75:5"
                }
              ]
            },
            "documentation": {
              "id": 1041,
              "nodeType": "StructuredDocumentation",
              "src": "3100:157:5",
              "text": " @dev Returns the node hash for a given account's reverse records.\n @param addr The address to hash\n @return The ENS node hash."
            },
            "functionSelector": "bffbe61c",
            "id": 1059,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "node",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1044,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1043,
                  "mutability": "mutable",
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1059,
                  "src": "3276:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1042,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3276:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3275:14:5"
            },
            "returnParameters": {
              "id": 1047,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1046,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1059,
                  "src": "3311:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1045,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3311:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3310:9:5"
            },
            "scope": 1074,
            "src": "3262:150:5",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1072,
              "nodeType": "Block",
              "src": "3790:553:5",
              "statements": [
                {
                  "expression": {
                    "id": 1067,
                    "name": "addr",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1062,
                    "src": "3800:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1068,
                  "nodeType": "ExpressionStatement",
                  "src": "3800:4:5"
                },
                {
                  "expression": {
                    "id": 1069,
                    "name": "ret",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1065,
                    "src": "3814:3:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1070,
                  "nodeType": "ExpressionStatement",
                  "src": "3814:3:5"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "3878:459:5",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "3892:80:5",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "3906:66:5",
                          "type": "",
                          "value": "0x3031323334353637383961626364656600000000000000000000000000000000"
                        },
                        "variables": [
                          {
                            "name": "lookup",
                            "nodeType": "YulTypedName",
                            "src": "3896:6:5",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4019:271:5",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4037:14:5",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4046:1:5"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4049:1:5",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "4042:3:5"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4042:9:5"
                              },
                              "variableNames": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "4037:1:5"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4076:1:5"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "addr",
                                            "nodeType": "YulIdentifier",
                                            "src": "4088:4:5"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4094:3:5",
                                            "type": "",
                                            "value": "0xf"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4084:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4084:14:5"
                                      },
                                      {
                                        "name": "lookup",
                                        "nodeType": "YulIdentifier",
                                        "src": "4100:6:5"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "byte",
                                      "nodeType": "YulIdentifier",
                                      "src": "4079:4:5"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4079:28:5"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore8",
                                  "nodeType": "YulIdentifier",
                                  "src": "4068:7:5"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4068:40:5"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4068:40:5"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4125:23:5",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4137:4:5"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4143:4:5",
                                    "type": "",
                                    "value": "0x10"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "4133:3:5"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4133:15:5"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "4125:4:5"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4165:14:5",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4174:1:5"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4177:1:5",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "4170:3:5"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4170:9:5"
                              },
                              "variableNames": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "4165:1:5"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4204:1:5"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "addr",
                                            "nodeType": "YulIdentifier",
                                            "src": "4216:4:5"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4222:3:5",
                                            "type": "",
                                            "value": "0xf"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4212:3:5"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4212:14:5"
                                      },
                                      {
                                        "name": "lookup",
                                        "nodeType": "YulIdentifier",
                                        "src": "4228:6:5"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "byte",
                                      "nodeType": "YulIdentifier",
                                      "src": "4207:4:5"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4207:28:5"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore8",
                                  "nodeType": "YulIdentifier",
                                  "src": "4196:7:5"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4196:40:5"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4196:40:5"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4253:23:5",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4265:4:5"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4271:4:5",
                                    "type": "",
                                    "value": "0x10"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "4261:3:5"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4261:15:5"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "4253:4:5"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "4009:1:5"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4012:1:5",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "gt",
                            "nodeType": "YulIdentifier",
                            "src": "4006:2:5"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4006:8:5"
                        },
                        "nodeType": "YulForLoop",
                        "post": {
                          "nodeType": "YulBlock",
                          "src": "4015:3:5",
                          "statements": []
                        },
                        "pre": {
                          "nodeType": "YulBlock",
                          "src": "3990:15:5",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3992:11:5",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4001:2:5",
                                "type": "",
                                "value": "40"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "3996:1:5",
                                  "type": ""
                                }
                              ]
                            }
                          ]
                        },
                        "src": "3986:304:5"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "4304:23:5",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4321:1:5",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4324:2:5",
                              "type": "",
                              "value": "40"
                            }
                          ],
                          "functionName": {
                            "name": "keccak256",
                            "nodeType": "YulIdentifier",
                            "src": "4311:9:5"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4311:16:5"
                        },
                        "variableNames": [
                          {
                            "name": "ret",
                            "nodeType": "YulIdentifier",
                            "src": "4304:3:5"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1062,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4088:4:5",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1062,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4125:4:5",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1062,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4137:4:5",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1062,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4216:4:5",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1062,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4253:4:5",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1062,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4265:4:5",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1065,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4304:3:5",
                      "valueSize": 1
                    }
                  ],
                  "id": 1071,
                  "nodeType": "InlineAssembly",
                  "src": "3869:468:5"
                }
              ]
            },
            "documentation": {
              "id": 1060,
              "nodeType": "StructuredDocumentation",
              "src": "3418:294:5",
              "text": " @dev An optimised function to compute the sha3 of the lower-case\n      hexadecimal representation of an Ethereum address.\n @param addr The address to hash\n @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\n         input address."
            },
            "id": 1073,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sha3HexAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1063,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1062,
                  "mutability": "mutable",
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "3741:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1061,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3741:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3740:14:5"
            },
            "returnParameters": {
              "id": 1066,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1065,
                  "mutability": "mutable",
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 1073,
                  "src": "3777:11:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1064,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3777:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3776:13:5"
            },
            "scope": 1074,
            "src": "3717:626:5",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 1075,
        "src": "153:4192:5"
      }
    ],
    "src": "0:4346:5"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "project:/contracts/ReverseRegistrar.sol",
      "exportedSymbols": {
        "ENS": [
          136
        ],
        "NameResolver": [
          843
        ],
        "ReverseRegistrar": [
          1074
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.7",
            ".0"
          ]
        },
        "id": 834,
        "name": "PragmaDirective",
        "src": "0:23:5"
      },
      {
        "attributes": {
          "SourceUnit": 137,
          "absolutePath": "project:/contracts/ENS.sol",
          "file": "./ENS.sol",
          "scope": 1075,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 835,
        "name": "ImportDirective",
        "src": "25:19:5"
      },
      {
        "attributes": {
          "abstract": true,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "fullyImplemented": false,
          "linearizedBaseContracts": [
            843
          ],
          "name": "NameResolver",
          "scope": 1075
        },
        "children": [
          {
            "attributes": {
              "functionSelector": "77372213",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setName",
              "scope": 843,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "node",
                      "scope": 842,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 836,
                        "name": "ElementaryTypeName",
                        "src": "100:7:5"
                      }
                    ],
                    "id": 837,
                    "name": "VariableDeclaration",
                    "src": "100:12:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "name",
                      "scope": 842,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 838,
                        "name": "ElementaryTypeName",
                        "src": "114:6:5"
                      }
                    ],
                    "id": 839,
                    "name": "VariableDeclaration",
                    "src": "114:18:5"
                  }
                ],
                "id": 840,
                "name": "ParameterList",
                "src": "99:34:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 841,
                "name": "ParameterList",
                "src": "148:0:5"
              }
            ],
            "id": 842,
            "name": "FunctionDefinition",
            "src": "83:66:5"
          }
        ],
        "id": 843,
        "name": "ContractDefinition",
        "src": "46:105:5"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            1074
          ],
          "name": "ReverseRegistrar",
          "scope": 1075
        },
        "children": [
          {
            "attributes": {
              "constant": true,
              "functionSelector": "7cf8a2eb",
              "mutability": "constant",
              "name": "ADDR_REVERSE_NODE",
              "scope": 1074,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 844,
                "name": "ElementaryTypeName",
                "src": "217:7:5"
              },
              {
                "attributes": {
                  "hexvalue": "307839316431373737373831383834643033613637353761383033393936653338646532613432393637666233376565616361373237323932373130323561396532",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 6595...(69 digits omitted)...3154",
                  "value": "0x91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2"
                },
                "id": 845,
                "name": "Literal",
                "src": "261:66:5"
              }
            ],
            "id": 846,
            "name": "VariableDeclaration",
            "src": "217:110:5"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "3f15457f",
              "mutability": "mutable",
              "name": "ens",
              "scope": 1074,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract ENS",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "ENS",
                  "referencedDeclaration": 136,
                  "type": "contract ENS"
                },
                "id": 847,
                "name": "UserDefinedTypeName",
                "src": "334:3:5"
              }
            ],
            "id": 848,
            "name": "VariableDeclaration",
            "src": "334:14:5"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "828eab0e",
              "mutability": "mutable",
              "name": "defaultResolver",
              "scope": 1074,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract NameResolver",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "NameResolver",
                  "referencedDeclaration": 843,
                  "type": "contract NameResolver"
                },
                "id": 849,
                "name": "UserDefinedTypeName",
                "src": "354:12:5"
              }
            ],
            "id": 850,
            "name": "VariableDeclaration",
            "src": "354:35:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "modifiers": [
                null
              ],
              "name": "",
              "scope": 1074,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Constructor\n @param ensAddr The address of the ENS registry.\n @param resolverAddr The address of the default reverse resolver."
                },
                "id": 851,
                "name": "StructuredDocumentation",
                "src": "396:162:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ensAddr",
                      "scope": 894,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract ENS",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "ENS",
                          "referencedDeclaration": 136,
                          "type": "contract ENS"
                        },
                        "id": 852,
                        "name": "UserDefinedTypeName",
                        "src": "575:3:5"
                      }
                    ],
                    "id": 853,
                    "name": "VariableDeclaration",
                    "src": "575:11:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "resolverAddr",
                      "scope": 894,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract NameResolver",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "NameResolver",
                          "referencedDeclaration": 843,
                          "type": "contract NameResolver"
                        },
                        "id": 854,
                        "name": "UserDefinedTypeName",
                        "src": "588:12:5"
                      }
                    ],
                    "id": 855,
                    "name": "VariableDeclaration",
                    "src": "588:25:5"
                  }
                ],
                "id": 856,
                "name": "ParameterList",
                "src": "574:40:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 857,
                "name": "ParameterList",
                "src": "622:0:5"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract ENS"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 848,
                              "type": "contract ENS",
                              "value": "ens"
                            },
                            "id": 858,
                            "name": "Identifier",
                            "src": "632:3:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 853,
                              "type": "contract ENS",
                              "value": "ensAddr"
                            },
                            "id": 859,
                            "name": "Identifier",
                            "src": "638:7:5"
                          }
                        ],
                        "id": 860,
                        "name": "Assignment",
                        "src": "632:13:5"
                      }
                    ],
                    "id": 861,
                    "name": "ExpressionStatement",
                    "src": "632:13:5"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract NameResolver"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 850,
                              "type": "contract NameResolver",
                              "value": "defaultResolver"
                            },
                            "id": 862,
                            "name": "Identifier",
                            "src": "655:15:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 855,
                              "type": "contract NameResolver",
                              "value": "resolverAddr"
                            },
                            "id": 863,
                            "name": "Identifier",
                            "src": "673:12:5"
                          }
                        ],
                        "id": 864,
                        "name": "Assignment",
                        "src": "655:30:5"
                      }
                    ],
                    "id": 865,
                    "name": "ExpressionStatement",
                    "src": "655:30:5"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        867
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "oldRegistrar",
                          "scope": 893,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract ReverseRegistrar",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "ReverseRegistrar",
                              "referencedDeclaration": 1074,
                              "type": "contract ReverseRegistrar"
                            },
                            "id": 866,
                            "name": "UserDefinedTypeName",
                            "src": "762:16:5"
                          }
                        ],
                        "id": 867,
                        "name": "VariableDeclaration",
                        "src": "762:29:5"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract ReverseRegistrar",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1074,
                              "type": "type(contract ReverseRegistrar)",
                              "value": "ReverseRegistrar"
                            },
                            "id": 868,
                            "name": "Identifier",
                            "src": "794:16:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "owner",
                                  "referencedDeclaration": 105,
                                  "type": "function (bytes32) view external returns (address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 848,
                                      "type": "contract ENS",
                                      "value": "ens"
                                    },
                                    "id": 869,
                                    "name": "Identifier",
                                    "src": "811:3:5"
                                  }
                                ],
                                "id": 870,
                                "name": "MemberAccess",
                                "src": "811:9:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 846,
                                  "type": "bytes32",
                                  "value": "ADDR_REVERSE_NODE"
                                },
                                "id": 871,
                                "name": "Identifier",
                                "src": "821:17:5"
                              }
                            ],
                            "id": 872,
                            "name": "FunctionCall",
                            "src": "811:28:5"
                          }
                        ],
                        "id": 873,
                        "name": "FunctionCall",
                        "src": "794:46:5"
                      }
                    ],
                    "id": 874,
                    "name": "VariableDeclarationStatement",
                    "src": "762:78:5"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                      "typeString": "contract ReverseRegistrar"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 875,
                                    "name": "ElementaryTypeName",
                                    "src": "854:7:5"
                                  }
                                ],
                                "id": 876,
                                "name": "ElementaryTypeNameExpression",
                                "src": "854:7:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 867,
                                  "type": "contract ReverseRegistrar",
                                  "value": "oldRegistrar"
                                },
                                "id": 877,
                                "name": "Identifier",
                                "src": "862:12:5"
                              }
                            ],
                            "id": 878,
                            "name": "FunctionCall",
                            "src": "854:21:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 879,
                                    "name": "ElementaryTypeName",
                                    "src": "879:7:5"
                                  }
                                ],
                                "id": 880,
                                "name": "ElementaryTypeNameExpression",
                                "src": "879:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "307830",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0x0"
                                },
                                "id": 881,
                                "name": "Literal",
                                "src": "887:3:5"
                              }
                            ],
                            "id": 882,
                            "name": "FunctionCall",
                            "src": "879:12:5"
                          }
                        ],
                        "id": 883,
                        "name": "BinaryOperation",
                        "src": "854:37:5"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "claim",
                                      "referencedDeclaration": 911,
                                      "type": "function (address) external returns (bytes32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 867,
                                          "type": "contract ReverseRegistrar",
                                          "value": "oldRegistrar"
                                        },
                                        "id": 884,
                                        "name": "Identifier",
                                        "src": "907:12:5"
                                      }
                                    ],
                                    "id": 886,
                                    "name": "MemberAccess",
                                    "src": "907:18:5"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": -15,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 887,
                                        "name": "Identifier",
                                        "src": "926:3:5"
                                      }
                                    ],
                                    "id": 888,
                                    "name": "MemberAccess",
                                    "src": "926:10:5"
                                  }
                                ],
                                "id": 889,
                                "name": "FunctionCall",
                                "src": "907:30:5"
                              }
                            ],
                            "id": 890,
                            "name": "ExpressionStatement",
                            "src": "907:30:5"
                          }
                        ],
                        "id": 891,
                        "name": "Block",
                        "src": "893:55:5"
                      }
                    ],
                    "id": 892,
                    "name": "IfStatement",
                    "src": "850:98:5"
                  }
                ],
                "id": 893,
                "name": "Block",
                "src": "622:332:5"
              }
            ],
            "id": 894,
            "name": "FunctionDefinition",
            "src": "563:391:5"
          },
          {
            "attributes": {
              "functionSelector": "1e83409a",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "claim",
              "scope": 1074,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Transfers ownership of the reverse ENS record associated with the\n      calling account.\n @param owner The address to set as the owner of the reverse record in ENS.\n @return The ENS node hash of the reverse record."
                },
                "id": 895,
                "name": "StructuredDocumentation",
                "src": "960:256:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "owner",
                      "scope": 911,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 896,
                        "name": "ElementaryTypeName",
                        "src": "1236:7:5"
                      }
                    ],
                    "id": 897,
                    "name": "VariableDeclaration",
                    "src": "1236:13:5"
                  }
                ],
                "id": 898,
                "name": "ParameterList",
                "src": "1235:15:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 911,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 899,
                        "name": "ElementaryTypeName",
                        "src": "1267:7:5"
                      }
                    ],
                    "id": 900,
                    "name": "VariableDeclaration",
                    "src": "1267:7:5"
                  }
                ],
                "id": 901,
                "name": "ParameterList",
                "src": "1266:9:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 901
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1009,
                              "type": "function (address,address) returns (bytes32)",
                              "value": "claimWithResolver"
                            },
                            "id": 902,
                            "name": "Identifier",
                            "src": "1293:17:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 897,
                              "type": "address",
                              "value": "owner"
                            },
                            "id": 903,
                            "name": "Identifier",
                            "src": "1311:5:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 904,
                                    "name": "ElementaryTypeName",
                                    "src": "1318:7:5"
                                  }
                                ],
                                "id": 905,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1318:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "307830",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0x0"
                                },
                                "id": 906,
                                "name": "Literal",
                                "src": "1326:3:5"
                              }
                            ],
                            "id": 907,
                            "name": "FunctionCall",
                            "src": "1318:12:5"
                          }
                        ],
                        "id": 908,
                        "name": "FunctionCall",
                        "src": "1293:38:5"
                      }
                    ],
                    "id": 909,
                    "name": "Return",
                    "src": "1286:45:5"
                  }
                ],
                "id": 910,
                "name": "Block",
                "src": "1276:62:5"
              }
            ],
            "id": 911,
            "name": "FunctionDefinition",
            "src": "1221:117:5"
          },
          {
            "attributes": {
              "functionSelector": "0f5a5466",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "claimWithResolver",
              "scope": 1074,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Transfers ownership of the reverse ENS record associated with the\n      calling account.\n @param owner The address to set as the owner of the reverse record in ENS.\n @param resolver The address of the resolver to set; 0 to leave unchanged.\n @return The ENS node hash of the reverse record."
                },
                "id": 912,
                "name": "StructuredDocumentation",
                "src": "1344:337:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "owner",
                      "scope": 1009,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 913,
                        "name": "ElementaryTypeName",
                        "src": "1713:7:5"
                      }
                    ],
                    "id": 914,
                    "name": "VariableDeclaration",
                    "src": "1713:13:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "resolver",
                      "scope": 1009,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 915,
                        "name": "ElementaryTypeName",
                        "src": "1728:7:5"
                      }
                    ],
                    "id": 916,
                    "name": "VariableDeclaration",
                    "src": "1728:16:5"
                  }
                ],
                "id": 917,
                "name": "ParameterList",
                "src": "1712:33:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1009,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 918,
                        "name": "ElementaryTypeName",
                        "src": "1762:7:5"
                      }
                    ],
                    "id": 919,
                    "name": "VariableDeclaration",
                    "src": "1762:7:5"
                  }
                ],
                "id": 920,
                "name": "ParameterList",
                "src": "1761:9:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        922
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "label",
                          "scope": 1008,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 921,
                            "name": "ElementaryTypeName",
                            "src": "1781:7:5"
                          }
                        ],
                        "id": 922,
                        "name": "VariableDeclaration",
                        "src": "1781:13:5"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1073,
                              "type": "function (address) pure returns (bytes32)",
                              "value": "sha3HexAddress"
                            },
                            "id": 923,
                            "name": "Identifier",
                            "src": "1797:14:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -15,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 924,
                                "name": "Identifier",
                                "src": "1812:3:5"
                              }
                            ],
                            "id": 925,
                            "name": "MemberAccess",
                            "src": "1812:10:5"
                          }
                        ],
                        "id": 926,
                        "name": "FunctionCall",
                        "src": "1797:26:5"
                      }
                    ],
                    "id": 927,
                    "name": "VariableDeclarationStatement",
                    "src": "1781:42:5"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        929
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "node",
                          "scope": 1008,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 928,
                            "name": "ElementaryTypeName",
                            "src": "1833:7:5"
                          }
                        ],
                        "id": 929,
                        "name": "VariableDeclaration",
                        "src": "1833:12:5"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": -8,
                              "type": "function (bytes memory) pure returns (bytes32)",
                              "value": "keccak256"
                            },
                            "id": 930,
                            "name": "Identifier",
                            "src": "1848:9:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "encodePacked",
                                  "type": "function () pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": -1,
                                      "type": "abi",
                                      "value": "abi"
                                    },
                                    "id": 931,
                                    "name": "Identifier",
                                    "src": "1858:3:5"
                                  }
                                ],
                                "id": 932,
                                "name": "MemberAccess",
                                "src": "1858:16:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 846,
                                  "type": "bytes32",
                                  "value": "ADDR_REVERSE_NODE"
                                },
                                "id": 933,
                                "name": "Identifier",
                                "src": "1875:17:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 922,
                                  "type": "bytes32",
                                  "value": "label"
                                },
                                "id": 934,
                                "name": "Identifier",
                                "src": "1894:5:5"
                              }
                            ],
                            "id": 935,
                            "name": "FunctionCall",
                            "src": "1858:42:5"
                          }
                        ],
                        "id": 936,
                        "name": "FunctionCall",
                        "src": "1848:53:5"
                      }
                    ],
                    "id": 937,
                    "name": "VariableDeclarationStatement",
                    "src": "1833:68:5"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        939
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "currentOwner",
                          "scope": 1008,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 938,
                            "name": "ElementaryTypeName",
                            "src": "1911:7:5"
                          }
                        ],
                        "id": 939,
                        "name": "VariableDeclaration",
                        "src": "1911:20:5"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "owner",
                              "referencedDeclaration": 105,
                              "type": "function (bytes32) view external returns (address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 848,
                                  "type": "contract ENS",
                                  "value": "ens"
                                },
                                "id": 940,
                                "name": "Identifier",
                                "src": "1934:3:5"
                              }
                            ],
                            "id": 941,
                            "name": "MemberAccess",
                            "src": "1934:9:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 929,
                              "type": "bytes32",
                              "value": "node"
                            },
                            "id": 942,
                            "name": "Identifier",
                            "src": "1944:4:5"
                          }
                        ],
                        "id": 943,
                        "name": "FunctionCall",
                        "src": "1934:15:5"
                      }
                    ],
                    "id": 944,
                    "name": "VariableDeclarationStatement",
                    "src": "1911:38:5"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 916,
                                  "type": "address",
                                  "value": "resolver"
                                },
                                "id": 945,
                                "name": "Identifier",
                                "src": "2007:8:5"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 946,
                                        "name": "ElementaryTypeName",
                                        "src": "2019:7:5"
                                      }
                                    ],
                                    "id": 947,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2019:7:5"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "307830",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0x0"
                                    },
                                    "id": 948,
                                    "name": "Literal",
                                    "src": "2027:3:5"
                                  }
                                ],
                                "id": 949,
                                "name": "FunctionCall",
                                "src": "2019:12:5"
                              }
                            ],
                            "id": 950,
                            "name": "BinaryOperation",
                            "src": "2007:24:5"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 916,
                                  "type": "address",
                                  "value": "resolver"
                                },
                                "id": 951,
                                "name": "Identifier",
                                "src": "2035:8:5"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "resolver",
                                      "referencedDeclaration": 112,
                                      "type": "function (bytes32) view external returns (address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 848,
                                          "type": "contract ENS",
                                          "value": "ens"
                                        },
                                        "id": 952,
                                        "name": "Identifier",
                                        "src": "2047:3:5"
                                      }
                                    ],
                                    "id": 953,
                                    "name": "MemberAccess",
                                    "src": "2047:12:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 929,
                                      "type": "bytes32",
                                      "value": "node"
                                    },
                                    "id": 954,
                                    "name": "Identifier",
                                    "src": "2060:4:5"
                                  }
                                ],
                                "id": 955,
                                "name": "FunctionCall",
                                "src": "2047:18:5"
                              }
                            ],
                            "id": 956,
                            "name": "BinaryOperation",
                            "src": "2035:30:5"
                          }
                        ],
                        "id": 957,
                        "name": "BinaryOperation",
                        "src": "2007:58:5"
                      },
                      {
                        "children": [
                          {
                            "attributes": {},
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 939,
                                      "type": "address",
                                      "value": "currentOwner"
                                    },
                                    "id": 958,
                                    "name": "Identifier",
                                    "src": "2150:12:5"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                              "typeString": "contract ReverseRegistrar"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "address"
                                            },
                                            "id": 959,
                                            "name": "ElementaryTypeName",
                                            "src": "2166:7:5"
                                          }
                                        ],
                                        "id": 960,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "2166:7:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": -28,
                                          "type": "contract ReverseRegistrar",
                                          "value": "this"
                                        },
                                        "id": 961,
                                        "name": "Identifier",
                                        "src": "2174:4:5"
                                      }
                                    ],
                                    "id": 962,
                                    "name": "FunctionCall",
                                    "src": "2166:13:5"
                                  }
                                ],
                                "id": 963,
                                "name": "BinaryOperation",
                                "src": "2150:29:5"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "bytes32",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "setSubnodeOwner",
                                              "referencedDeclaration": 70,
                                              "type": "function (bytes32,bytes32,address) external returns (bytes32)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 848,
                                                  "type": "contract ENS",
                                                  "value": "ens"
                                                },
                                                "id": 964,
                                                "name": "Identifier",
                                                "src": "2199:3:5"
                                              }
                                            ],
                                            "id": 966,
                                            "name": "MemberAccess",
                                            "src": "2199:19:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 846,
                                              "type": "bytes32",
                                              "value": "ADDR_REVERSE_NODE"
                                            },
                                            "id": 967,
                                            "name": "Identifier",
                                            "src": "2219:17:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 922,
                                              "type": "bytes32",
                                              "value": "label"
                                            },
                                            "id": 968,
                                            "name": "Identifier",
                                            "src": "2238:5:5"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "address",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                                      "typeString": "contract ReverseRegistrar"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(address)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "name": "address"
                                                    },
                                                    "id": 969,
                                                    "name": "ElementaryTypeName",
                                                    "src": "2245:7:5"
                                                  }
                                                ],
                                                "id": 970,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "2245:7:5"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": -28,
                                                  "type": "contract ReverseRegistrar",
                                                  "value": "this"
                                                },
                                                "id": 971,
                                                "name": "Identifier",
                                                "src": "2253:4:5"
                                              }
                                            ],
                                            "id": 972,
                                            "name": "FunctionCall",
                                            "src": "2245:13:5"
                                          }
                                        ],
                                        "id": 973,
                                        "name": "FunctionCall",
                                        "src": "2199:60:5"
                                      }
                                    ],
                                    "id": 974,
                                    "name": "ExpressionStatement",
                                    "src": "2199:60:5"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "address"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 939,
                                              "type": "address",
                                              "value": "currentOwner"
                                            },
                                            "id": 975,
                                            "name": "Identifier",
                                            "src": "2277:12:5"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "address",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                                      "typeString": "contract ReverseRegistrar"
                                                    }
                                                  ],
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "type": "type(address)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "name": "address"
                                                    },
                                                    "id": 976,
                                                    "name": "ElementaryTypeName",
                                                    "src": "2292:7:5"
                                                  }
                                                ],
                                                "id": 977,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "2292:7:5"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": -28,
                                                  "type": "contract ReverseRegistrar",
                                                  "value": "this"
                                                },
                                                "id": 978,
                                                "name": "Identifier",
                                                "src": "2300:4:5"
                                              }
                                            ],
                                            "id": 979,
                                            "name": "FunctionCall",
                                            "src": "2292:13:5"
                                          }
                                        ],
                                        "id": 980,
                                        "name": "Assignment",
                                        "src": "2277:28:5"
                                      }
                                    ],
                                    "id": 981,
                                    "name": "ExpressionStatement",
                                    "src": "2277:28:5"
                                  }
                                ],
                                "id": 982,
                                "name": "Block",
                                "src": "2181:139:5"
                              }
                            ],
                            "id": 983,
                            "name": "IfStatement",
                            "src": "2146:174:5"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "setResolver",
                                      "referencedDeclaration": 77,
                                      "type": "function (bytes32,address) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 848,
                                          "type": "contract ENS",
                                          "value": "ens"
                                        },
                                        "id": 984,
                                        "name": "Identifier",
                                        "src": "2333:3:5"
                                      }
                                    ],
                                    "id": 986,
                                    "name": "MemberAccess",
                                    "src": "2333:15:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 929,
                                      "type": "bytes32",
                                      "value": "node"
                                    },
                                    "id": 987,
                                    "name": "Identifier",
                                    "src": "2349:4:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 916,
                                      "type": "address",
                                      "value": "resolver"
                                    },
                                    "id": 988,
                                    "name": "Identifier",
                                    "src": "2355:8:5"
                                  }
                                ],
                                "id": 989,
                                "name": "FunctionCall",
                                "src": "2333:31:5"
                              }
                            ],
                            "id": 990,
                            "name": "ExpressionStatement",
                            "src": "2333:31:5"
                          }
                        ],
                        "id": 991,
                        "name": "Block",
                        "src": "2067:308:5"
                      }
                    ],
                    "id": 992,
                    "name": "IfStatement",
                    "src": "2003:372:5"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 939,
                              "type": "address",
                              "value": "currentOwner"
                            },
                            "id": 993,
                            "name": "Identifier",
                            "src": "2429:12:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 914,
                              "type": "address",
                              "value": "owner"
                            },
                            "id": 994,
                            "name": "Identifier",
                            "src": "2445:5:5"
                          }
                        ],
                        "id": 995,
                        "name": "BinaryOperation",
                        "src": "2429:21:5"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "setSubnodeOwner",
                                      "referencedDeclaration": 70,
                                      "type": "function (bytes32,bytes32,address) external returns (bytes32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 848,
                                          "type": "contract ENS",
                                          "value": "ens"
                                        },
                                        "id": 996,
                                        "name": "Identifier",
                                        "src": "2466:3:5"
                                      }
                                    ],
                                    "id": 998,
                                    "name": "MemberAccess",
                                    "src": "2466:19:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 846,
                                      "type": "bytes32",
                                      "value": "ADDR_REVERSE_NODE"
                                    },
                                    "id": 999,
                                    "name": "Identifier",
                                    "src": "2486:17:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 922,
                                      "type": "bytes32",
                                      "value": "label"
                                    },
                                    "id": 1000,
                                    "name": "Identifier",
                                    "src": "2505:5:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 914,
                                      "type": "address",
                                      "value": "owner"
                                    },
                                    "id": 1001,
                                    "name": "Identifier",
                                    "src": "2512:5:5"
                                  }
                                ],
                                "id": 1002,
                                "name": "FunctionCall",
                                "src": "2466:52:5"
                              }
                            ],
                            "id": 1003,
                            "name": "ExpressionStatement",
                            "src": "2466:52:5"
                          }
                        ],
                        "id": 1004,
                        "name": "Block",
                        "src": "2452:77:5"
                      }
                    ],
                    "id": 1005,
                    "name": "IfStatement",
                    "src": "2425:104:5"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 920
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 929,
                          "type": "bytes32",
                          "value": "node"
                        },
                        "id": 1006,
                        "name": "Identifier",
                        "src": "2546:4:5"
                      }
                    ],
                    "id": 1007,
                    "name": "Return",
                    "src": "2539:11:5"
                  }
                ],
                "id": 1008,
                "name": "Block",
                "src": "1771:786:5"
              }
            ],
            "id": 1009,
            "name": "FunctionDefinition",
            "src": "1686:871:5"
          },
          {
            "attributes": {
              "functionSelector": "c47f0027",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setName",
              "scope": 1074,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Sets the `name()` record for the reverse ENS record associated with\n the calling account. First updates the resolver to the default reverse\n resolver if necessary.\n @param name The name to set for this address.\n @return The ENS node hash of the reverse record."
                },
                "id": 1010,
                "name": "StructuredDocumentation",
                "src": "2563:308:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "name",
                      "scope": 1040,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 1011,
                        "name": "ElementaryTypeName",
                        "src": "2893:6:5"
                      }
                    ],
                    "id": 1012,
                    "name": "VariableDeclaration",
                    "src": "2893:18:5"
                  }
                ],
                "id": 1013,
                "name": "ParameterList",
                "src": "2892:20:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1040,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1014,
                        "name": "ElementaryTypeName",
                        "src": "2929:7:5"
                      }
                    ],
                    "id": 1015,
                    "name": "VariableDeclaration",
                    "src": "2929:7:5"
                  }
                ],
                "id": 1016,
                "name": "ParameterList",
                "src": "2928:9:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        1018
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "node",
                          "scope": 1039,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 1017,
                            "name": "ElementaryTypeName",
                            "src": "2948:7:5"
                          }
                        ],
                        "id": 1018,
                        "name": "VariableDeclaration",
                        "src": "2948:12:5"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1009,
                              "type": "function (address,address) returns (bytes32)",
                              "value": "claimWithResolver"
                            },
                            "id": 1019,
                            "name": "Identifier",
                            "src": "2963:17:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ReverseRegistrar_$1074",
                                      "typeString": "contract ReverseRegistrar"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 1020,
                                    "name": "ElementaryTypeName",
                                    "src": "2981:7:5"
                                  }
                                ],
                                "id": 1021,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2981:7:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -28,
                                  "type": "contract ReverseRegistrar",
                                  "value": "this"
                                },
                                "id": 1022,
                                "name": "Identifier",
                                "src": "2989:4:5"
                              }
                            ],
                            "id": 1023,
                            "name": "FunctionCall",
                            "src": "2981:13:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_NameResolver_$843",
                                      "typeString": "contract NameResolver"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 1024,
                                    "name": "ElementaryTypeName",
                                    "src": "2996:7:5"
                                  }
                                ],
                                "id": 1025,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2996:7:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 850,
                                  "type": "contract NameResolver",
                                  "value": "defaultResolver"
                                },
                                "id": 1026,
                                "name": "Identifier",
                                "src": "3004:15:5"
                              }
                            ],
                            "id": 1027,
                            "name": "FunctionCall",
                            "src": "2996:24:5"
                          }
                        ],
                        "id": 1028,
                        "name": "FunctionCall",
                        "src": "2963:58:5"
                      }
                    ],
                    "id": 1029,
                    "name": "VariableDeclarationStatement",
                    "src": "2948:73:5"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setName",
                              "referencedDeclaration": 842,
                              "type": "function (bytes32,string memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 850,
                                  "type": "contract NameResolver",
                                  "value": "defaultResolver"
                                },
                                "id": 1030,
                                "name": "Identifier",
                                "src": "3031:15:5"
                              }
                            ],
                            "id": 1032,
                            "name": "MemberAccess",
                            "src": "3031:23:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1018,
                              "type": "bytes32",
                              "value": "node"
                            },
                            "id": 1033,
                            "name": "Identifier",
                            "src": "3055:4:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1012,
                              "type": "string memory",
                              "value": "name"
                            },
                            "id": 1034,
                            "name": "Identifier",
                            "src": "3061:4:5"
                          }
                        ],
                        "id": 1035,
                        "name": "FunctionCall",
                        "src": "3031:35:5"
                      }
                    ],
                    "id": 1036,
                    "name": "ExpressionStatement",
                    "src": "3031:35:5"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 1016
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 1018,
                          "type": "bytes32",
                          "value": "node"
                        },
                        "id": 1037,
                        "name": "Identifier",
                        "src": "3083:4:5"
                      }
                    ],
                    "id": 1038,
                    "name": "Return",
                    "src": "3076:11:5"
                  }
                ],
                "id": 1039,
                "name": "Block",
                "src": "2938:156:5"
              }
            ],
            "id": 1040,
            "name": "FunctionDefinition",
            "src": "2876:218:5"
          },
          {
            "attributes": {
              "functionSelector": "bffbe61c",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "node",
              "scope": 1074,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Returns the node hash for a given account's reverse records.\n @param addr The address to hash\n @return The ENS node hash."
                },
                "id": 1041,
                "name": "StructuredDocumentation",
                "src": "3100:157:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "addr",
                      "scope": 1059,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1042,
                        "name": "ElementaryTypeName",
                        "src": "3276:7:5"
                      }
                    ],
                    "id": 1043,
                    "name": "VariableDeclaration",
                    "src": "3276:12:5"
                  }
                ],
                "id": 1044,
                "name": "ParameterList",
                "src": "3275:14:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1059,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1045,
                        "name": "ElementaryTypeName",
                        "src": "3311:7:5"
                      }
                    ],
                    "id": 1046,
                    "name": "VariableDeclaration",
                    "src": "3311:7:5"
                  }
                ],
                "id": 1047,
                "name": "ParameterList",
                "src": "3310:9:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1047
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": -8,
                              "type": "function (bytes memory) pure returns (bytes32)",
                              "value": "keccak256"
                            },
                            "id": 1048,
                            "name": "Identifier",
                            "src": "3337:9:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "encodePacked",
                                  "type": "function () pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": -1,
                                      "type": "abi",
                                      "value": "abi"
                                    },
                                    "id": 1049,
                                    "name": "Identifier",
                                    "src": "3347:3:5"
                                  }
                                ],
                                "id": 1050,
                                "name": "MemberAccess",
                                "src": "3347:16:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 846,
                                  "type": "bytes32",
                                  "value": "ADDR_REVERSE_NODE"
                                },
                                "id": 1051,
                                "name": "Identifier",
                                "src": "3364:17:5"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1073,
                                      "type": "function (address) pure returns (bytes32)",
                                      "value": "sha3HexAddress"
                                    },
                                    "id": 1052,
                                    "name": "Identifier",
                                    "src": "3383:14:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1043,
                                      "type": "address",
                                      "value": "addr"
                                    },
                                    "id": 1053,
                                    "name": "Identifier",
                                    "src": "3398:4:5"
                                  }
                                ],
                                "id": 1054,
                                "name": "FunctionCall",
                                "src": "3383:20:5"
                              }
                            ],
                            "id": 1055,
                            "name": "FunctionCall",
                            "src": "3347:57:5"
                          }
                        ],
                        "id": 1056,
                        "name": "FunctionCall",
                        "src": "3337:68:5"
                      }
                    ],
                    "id": 1057,
                    "name": "Return",
                    "src": "3330:75:5"
                  }
                ],
                "id": 1058,
                "name": "Block",
                "src": "3320:92:5"
              }
            ],
            "id": 1059,
            "name": "FunctionDefinition",
            "src": "3262:150:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "sha3HexAddress",
              "scope": 1074,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev An optimised function to compute the sha3 of the lower-case\n      hexadecimal representation of an Ethereum address.\n @param addr The address to hash\n @return ret The SHA3 hash of the lower-case hexadecimal encoding of the\n         input address."
                },
                "id": 1060,
                "name": "StructuredDocumentation",
                "src": "3418:294:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "addr",
                      "scope": 1073,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1061,
                        "name": "ElementaryTypeName",
                        "src": "3741:7:5"
                      }
                    ],
                    "id": 1062,
                    "name": "VariableDeclaration",
                    "src": "3741:12:5"
                  }
                ],
                "id": 1063,
                "name": "ParameterList",
                "src": "3740:14:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ret",
                      "scope": 1073,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1064,
                        "name": "ElementaryTypeName",
                        "src": "3777:7:5"
                      }
                    ],
                    "id": 1065,
                    "name": "VariableDeclaration",
                    "src": "3777:11:5"
                  }
                ],
                "id": 1066,
                "name": "ParameterList",
                "src": "3776:13:5"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 1062,
                          "type": "address",
                          "value": "addr"
                        },
                        "id": 1067,
                        "name": "Identifier",
                        "src": "3800:4:5"
                      }
                    ],
                    "id": 1068,
                    "name": "ExpressionStatement",
                    "src": "3800:4:5"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 1065,
                          "type": "bytes32",
                          "value": "ret"
                        },
                        "id": 1069,
                        "name": "Identifier",
                        "src": "3814:3:5"
                      }
                    ],
                    "id": 1070,
                    "name": "ExpressionStatement",
                    "src": "3814:3:5"
                  },
                  {
                    "attributes": {
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 1062,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4088:4:5",
                          "valueSize": 1
                        },
                        {
                          "declaration": 1062,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4125:4:5",
                          "valueSize": 1
                        },
                        {
                          "declaration": 1062,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4137:4:5",
                          "valueSize": 1
                        },
                        {
                          "declaration": 1062,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4216:4:5",
                          "valueSize": 1
                        },
                        {
                          "declaration": 1062,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4253:4:5",
                          "valueSize": 1
                        },
                        {
                          "declaration": 1062,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4265:4:5",
                          "valueSize": 1
                        },
                        {
                          "declaration": 1065,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "4304:3:5",
                          "valueSize": 1
                        }
                      ],
                      "operations": "{\n    let lookup := 0x3031323334353637383961626364656600000000000000000000000000000000\n    for { let i := 40 } gt(i, 0) { }\n    {\n        i := sub(i, 1)\n        mstore8(i, byte(and(addr, 0xf), lookup))\n        addr := div(addr, 0x10)\n        i := sub(i, 1)\n        mstore8(i, byte(and(addr, 0xf), lookup))\n        addr := div(addr, 0x10)\n    }\n    ret := keccak256(0, 40)\n}"
                    },
                    "children": [],
                    "id": 1071,
                    "name": "InlineAssembly",
                    "src": "3869:468:5"
                  }
                ],
                "id": 1072,
                "name": "Block",
                "src": "3790:553:5"
              }
            ],
            "id": 1073,
            "name": "FunctionDefinition",
            "src": "3717:626:5"
          }
        ],
        "id": 1074,
        "name": "ContractDefinition",
        "src": "153:4192:5"
      }
    ],
    "id": 1075,
    "name": "SourceUnit",
    "src": "0:4346:5"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.4+commit.3f05b770.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.11",
  "updatedAt": "2022-12-07T05:57:04.351Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "claim(address)": {
        "details": "Transfers ownership of the reverse ENS record associated with the      calling account.",
        "params": {
          "owner": "The address to set as the owner of the reverse record in ENS."
        },
        "returns": {
          "_0": "The ENS node hash of the reverse record."
        }
      },
      "claimWithResolver(address,address)": {
        "details": "Transfers ownership of the reverse ENS record associated with the      calling account.",
        "params": {
          "owner": "The address to set as the owner of the reverse record in ENS.",
          "resolver": "The address of the resolver to set; 0 to leave unchanged."
        },
        "returns": {
          "_0": "The ENS node hash of the reverse record."
        }
      },
      "constructor": {
        "details": "Constructor",
        "params": {
          "ensAddr": "The address of the ENS registry.",
          "resolverAddr": "The address of the default reverse resolver."
        }
      },
      "node(address)": {
        "details": "Returns the node hash for a given account's reverse records.",
        "params": {
          "addr": "The address to hash"
        },
        "returns": {
          "_0": "The ENS node hash."
        }
      },
      "setName(string)": {
        "details": "Sets the `name()` record for the reverse ENS record associated with the calling account. First updates the resolver to the default reverse resolver if necessary.",
        "params": {
          "name": "The name to set for this address."
        },
        "returns": {
          "_0": "The ENS node hash of the reverse record."
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}