{
  "contractName": "OldENS",
  "abi": [
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "label",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "setSubnodeOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "resolver",
          "type": "address"
        }
      ],
      "name": "setResolver",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "setOwner",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "uint64",
          "name": "ttl",
          "type": "uint64"
        }
      ],
      "name": "setTTL",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "resolver",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "ttl",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"resolver\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"resolver\",\"type\":\"address\"}],\"name\":\"setResolver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"setSubnodeOwner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"setTTL\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"ttl\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/makoto/work/ens/ethregistrar/contracts/RegistrarMigration.sol\":\"OldENS\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/makoto/work/ens/ethregistrar/contracts/BaseRegistrar.sol\":{\"keccak256\":\"0x8f8f496603d868fdf3ddf31c54fb6eed6a865f2adbf568fe0b3d999d4fa667f4\",\"urls\":[\"bzz-raw://40c16e89553e4af1dad651bdb63208f5e20429e0e5dbd716eb0cad14eafb96be\",\"dweb:/ipfs/QmYdCBZHRwRgKPRmCvghw7hbdvqqcJJCKg5JTtzWWwoSQP\"]},\"/Users/makoto/work/ens/ethregistrar/contracts/BaseRegistrarImplementation.sol\":{\"keccak256\":\"0xb536cb0800dc30e1a911ac804767801a5645206cd85400d1dd98f684cec9be08\",\"urls\":[\"bzz-raw://b4e295aa3d63497d2cef270a6cd8ceac88cd9bca13bbabeb1ab1d076764c790e\",\"dweb:/ipfs/Qme74RPg5Dbu1uXrovvKTB5Lrdo6TH8fCdQ2B1b5Daf6sB\"]},\"/Users/makoto/work/ens/ethregistrar/contracts/OldBaseRegistrarImplementation.sol\":{\"keccak256\":\"0x107884e3c585790a5ebbea3638f8f60067766514968e613d531b15bb9a1aae26\",\"urls\":[\"bzz-raw://e33504ac91e1c7303f054d1248d09ea13b97ba155e8d55732c16252cd6cbb46b\",\"dweb:/ipfs/QmU6G3cNfyc9q1WsSryrBn2J2ehuFhyZChe5DS1RRfosYg\"]},\"/Users/makoto/work/ens/ethregistrar/contracts/RegistrarMigration.sol\":{\"keccak256\":\"0xbb4c2e6d804bbc02ca61f1d85131883fb99e38d8b3af8e1439ccd38da566ecce\",\"urls\":[\"bzz-raw://e310803167234acd5b7932c00aa1e21cb70adbb2af25625f78f5fddd1c5160bb\",\"dweb:/ipfs/QmcPYsbAfp2g3srjTtKYrzirm1nGP2nDqPbvKRSatbxETd\"]},\"@ensdomains/ens/contracts/Deed.sol\":{\"keccak256\":\"0x7b4abd2f65e2e093743077b899d0fb4952627ad7ff6104b840f9869f5baa5e96\",\"urls\":[\"bzz-raw://d72dc40eb83ded3cca64d6c1b9958f665f4cd61115fed4d32dfd62d0c6ded0fc\",\"dweb:/ipfs/Qmdkef7QyeJDF96ToptWRWroYYuD8XjCvrtxy46dA62iA2\"]},\"@ensdomains/ens/contracts/DeedImplementation.sol\":{\"keccak256\":\"0x91242ba8032d5e01a8a59da84afb4d0d5b1007d4257bde8e6caa20fbc700cdc7\",\"urls\":[\"bzz-raw://6810d6c6038674ba3736a199aa71d2a9bcbbb10bffc796f13e1b52de0de91854\",\"dweb:/ipfs/QmdSjH6EhvqTnqhVKkUkvs6PVT67wAxq4gwerFLZ4UsD5c\"]},\"@ensdomains/ens/contracts/ENS.sol\":{\"keccak256\":\"0x10b88673d8c180cd62523be4fec7607c65594eb4f0c561fa0fbc0784422b4871\",\"urls\":[\"bzz-raw://b3de1882a4a1a1b13c27ee6dc04cc58c34ac392c80cad507de2cdfa8c02712fe\",\"dweb:/ipfs/QmeKcaBF8QdJjXiqFrPJkAtK3et5kUL8XJrnHjwhAThRMT\"]},\"@ensdomains/ens/contracts/HashRegistrar.sol\":{\"keccak256\":\"0xfa35370373bb3f4393d2b32908c526651fbc46cad2e313c9c8b2e6d051083b11\",\"urls\":[\"bzz-raw://1dbfe101894eb558901c4020e113a5b63c0f1562112902736093df5eebe81afd\",\"dweb:/ipfs/QmPDdcczyuE8iAHauYWrLCG3FSF8vKmDAW2r2ZGvpR1NTs\"]},\"@ensdomains/ens/contracts/Registrar.sol\":{\"keccak256\":\"0xaef3f85ba0cf0544485d506a3f93719a90f8f28ef6c59f7175955768bec719bb\",\"urls\":[\"bzz-raw://fc1be7eec872590585a2dfbc0b3d0ef332444dd528ee75e96fb107f265ccc5e7\",\"dweb:/ipfs/QmUCo66Bpmic9rHjdjw2VrmmJ7c7Ma1oHJ2ZvbtctsDM6g\"]},\"@ensdomains/subdomain-registrar/contracts/AbstractSubdomainRegistrar.sol\":{\"keccak256\":\"0x956a877538a83f7f4479a3e98d0918cfd1834440329780f67f0cd9ed399fb488\",\"urls\":[\"bzz-raw://47a2599288ae69dc111e7d32170e1aebb73e12747d85bd577e766772aed88577\",\"dweb:/ipfs/QmPXVqDeZXnYr9DW63YH4yDJVwMi7F38uEMTAnX5BTKH2A\"]},\"@ensdomains/subdomain-registrar/contracts/RegistrarInterface.sol\":{\"keccak256\":\"0x32eb0addc992b12a37b1fa94a5666bd540037419a3c02d2ba7537b556503d810\",\"urls\":[\"bzz-raw://c7da50663daa8678c844584ca7cf45edc0cf8139686051e1aab079c94027bb10\",\"dweb:/ipfs/Qmd8s5aQg98KyXXn4tEqyFDnTozwRQEBChZxWvwEGu5QJi\"]},\"@ensdomains/subdomain-registrar/contracts/Resolver.sol\":{\"keccak256\":\"0x4da4417de1daf1d66ee092b3cae0aeee2b5c591bfe881b006f80d2c4e582b790\",\"urls\":[\"bzz-raw://8b0c70eef6d5b9d2d6cda5b0849e2d6336ad395616e90673e61c5a73be66c29c\",\"dweb:/ipfs/QmYZWJDsgw284zSRztKu8jT5yPLPU7ySh9i3agWsnRd9Zw\"]},\"openzeppelin-solidity/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x9da23588f58d0fa67097984e151bdaa6aa69c5e192bae17b44a90b0cfc194736\",\"urls\":[\"bzz-raw://5e88c7dbb4d1e6d3f133112b9994491b8531f5d9103cf41becd1c267d2cd67af\",\"dweb:/ipfs/QmNuSmDBgv616hXRshbHx48ufdZoSrcFHpwqP4iPg2ac4X\"]},\"openzeppelin-solidity/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xbbb6159006ae3639daea09f7d63987816d6cf3a99f52af919363e025d3abf3b8\",\"urls\":[\"bzz-raw://35e7d742ee71461779df12a0ab1ad4701144d98eb6401182838c8daf40b008dd\",\"dweb:/ipfs/QmY4t7pxcX2cfk6VsGJWZLBgoKMpRctY8X1HPxykLjptSi\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x0546fa662082b36ac9cbd418c0722a3c52718b9dc3fe3e284081d73f48036228\",\"urls\":[\"bzz-raw://a50dd4c1c7afa4ade53ee47bc782eaad72a45091ed9756081616b33eb6c150c4\",\"dweb:/ipfs/Qmb88e4EnSbJv2BbayFg6wZpFMJ9aPF7r4cwMjnZkUu4VK\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x1f059ee943273719130df645fa38069b792988e8b732585528d5b1265f5aa046\",\"urls\":[\"bzz-raw://31e4d99091a83a42a6ea14d74ceae2ec3ffb2905c7ee07358875af72ea188333\",\"dweb:/ipfs/Qmf7nHc6BwhbyawapCVRZHzhBHNoA8ftpQWmGSyToVKVzN\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x5e7281dbd14cf07af0974ce830c6242062cd430b70658878d49b5f5c1e2ec0aa\",\"urls\":[\"bzz-raw://3c9374b456bf5fde2c473331ff75bed9c6be3634948ba6a6507e4c19c2abf605\",\"dweb:/ipfs/QmUm5NKd1ToSr8MHVVanQv3XEkQpmYKw2441KXYyXPE6np\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0x5c731061b804fa256fc8c05150eafe5d20b6bb94541a8f187912bf84f7033f34\",\"urls\":[\"bzz-raw://a3c2d9f046beebab7fb41b1b124a6a124a36f510f7c67365861402ac831bdc71\",\"dweb:/ipfs/QmUtASRgitregbKH83anopLtF9vFQe3BKeAjhUa6F7t9YV\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.5.0;\n\nimport \"@ensdomains/ens/contracts/ENS.sol\";\nimport \"@ensdomains/ens/contracts/Registrar.sol\";\nimport \"@ensdomains/subdomain-registrar/contracts/AbstractSubdomainRegistrar.sol\";\nimport \"./BaseRegistrarImplementation.sol\";\nimport \"./OldBaseRegistrarImplementation.sol\";\n\npragma solidity >=0.4.24;\n\ninterface OldENS {\n    function setSubnodeOwner(bytes32 node, bytes32 label, address owner) external;\n    function setResolver(bytes32 node, address resolver) external;\n    function setOwner(bytes32 node, address owner) external;\n    function setTTL(bytes32 node, uint64 ttl) external;\n    function owner(bytes32 node) external view returns (address);\n    function resolver(bytes32 node) external view returns (address);\n    function ttl(bytes32 node) external view returns (uint64);\n}\n\ncontract RegistrarMigration {\n    using SafeMath for uint;\n\n    bytes constant private UNUSED_SUBDOMAIN = hex'ffffffffffffffff';\n\n    Registrar public legacyRegistrar;\n    uint transferPeriodEnds;\n    OldBaseRegistrarImplementation public oldRegistrar;\n    BaseRegistrarImplementation public newRegistrar;\n    OldENS public oldENS;\n    ENS public newENS;\n    AbstractSubdomainRegistrar public oldSubdomainRegistrar;\n    AbstractSubdomainRegistrar public newSubdomainRegistrar;\n\n    bytes32 public baseNode;\n\n    constructor(OldBaseRegistrarImplementation _old, BaseRegistrarImplementation _new, AbstractSubdomainRegistrar _oldSubdomainRegistrar, AbstractSubdomainRegistrar _newSubdomainRegistrar) public {\n        oldRegistrar = _old;\n        oldENS = OldENS(address(_old.ens()));\n        baseNode = _old.baseNode();\n        legacyRegistrar = _old.previousRegistrar();\n        transferPeriodEnds = _old.transferPeriodEnds();\n        oldSubdomainRegistrar = _oldSubdomainRegistrar;\n\n        newRegistrar = _new;\n        newENS = _new.ens();\n        require(_new.baseNode() == baseNode);\n        newSubdomainRegistrar = _newSubdomainRegistrar;\n    }\n\n    function doMigration(uint256 tokenId, address registrant, uint expires) internal {\n        bytes32 node = keccak256(abi.encodePacked(baseNode, bytes32(tokenId)));\n        address controller = oldENS.owner(node);\n\n        if(address(registrant) != address(oldSubdomainRegistrar) && hasCode(controller)) {\n            // For names controlled by a contract or not in ENS, only migrate over the registration\n            newRegistrar.registerOnly(tokenId, registrant, expires.sub(now));\n            return;\n        }\n\n        // Register the name on the new registry with the same expiry time.\n        newRegistrar.register(tokenId, address(this), expires.sub(now));\n\n        // Copy over resolver, TTL and owner to the new registry.\n        address resolver = oldENS.resolver(node);\n        if(resolver != address(0)) {\n            newENS.setResolver(node, resolver);\n        }\n\n        uint64 ttl = oldENS.ttl(node);\n        if(ttl != 0) {\n            newENS.setTTL(node, ttl);\n        }\n\n        if(address(registrant) == address(oldSubdomainRegistrar) && address(registrant) != address(0)) {\n            // Handle subdomain registrar domains\n            // Fetch data from the old subdomain registrar\n            (string memory label, uint price,, uint referralFeePPM) = oldSubdomainRegistrar.query(bytes32(tokenId), string(UNUSED_SUBDOMAIN));\n            address owner = oldSubdomainRegistrar.owner(bytes32(tokenId));\n            if(bytes(label).length == 0) {\n              revert(\"Unable to migrate domain on subdomain registrar\");\n            }\n\n            // Transfer to the new subdomain registrar\n            newRegistrar.approve(address(newSubdomainRegistrar), tokenId);\n            newSubdomainRegistrar.configureDomainFor(label, price, referralFeePPM, address(uint160(owner)), address(0));\n        } else {\n            newENS.setOwner(node, controller);\n\n            // Transfer the registration to the registrant.\n            newRegistrar.transferFrom(address(this), registrant, tokenId);\n        }\n\n        // Replace ownership on the old registry so it can't be updated any further.\n        oldENS.setSubnodeOwner(baseNode, bytes32(tokenId), address(this));\n    }\n\n    /**\n     * @dev Migrate a name from the previous version of the BaseRegistrar\n     */\n    function migrate(uint256 tokenId) public {\n        address registrant = oldRegistrar.ownerOf(tokenId);\n        doMigration(tokenId, registrant, oldRegistrar.nameExpires(tokenId));\n    }\n\n    /**\n     * @dev Migrate a list of names from the previous version of the BaseRegistrar.\n     */\n    function migrateAll(uint256[] calldata tokenIds) external {\n        for(uint i = 0; i < tokenIds.length; i++) {\n            migrate(tokenIds[i]);\n        }\n    }\n\n    /**\n     * @dev Migrate a name from the legacy (auction-based) registrar.\n     */\n    function migrateLegacy(bytes32 label) public {\n        (Registrar.Mode mode, address deed, , ,) = legacyRegistrar.entries(label);\n        require(mode == Registrar.Mode.Owned);\n        address owner = Deed(deed).owner();\n        doMigration(uint256(label), owner, transferPeriodEnds);\n    }\n\n    /**\n     * @dev Migrate a list of names from the legacy (auction-based) registrar.\n     */\n    function migrateAllLegacy(bytes32[] calldata labels) external {\n        for(uint i = 0; i < labels.length; i++) {\n            migrateLegacy(labels[i]);\n        }\n    }\n\n    function hasCode(address addr) private view returns(bool ret) {\n        assembly {\n            ret := not(not(extcodesize(addr)))\n        }\n    }\n}\n",
  "sourcePath": "/Users/makoto/work/ens/ethregistrar/contracts/RegistrarMigration.sol",
  "ast": {
    "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/RegistrarMigration.sol",
    "exportedSymbols": {
      "OldENS": [
        2338
      ],
      "RegistrarMigration": [
        2773
      ]
    },
    "id": 2774,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2280,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "absolutePath": "@ensdomains/ens/contracts/ENS.sol",
        "file": "@ensdomains/ens/contracts/ENS.sol",
        "id": 2281,
        "nodeType": "ImportDirective",
        "scope": 2774,
        "sourceUnit": 6864,
        "src": "25:43:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@ensdomains/ens/contracts/Registrar.sol",
        "file": "@ensdomains/ens/contracts/Registrar.sol",
        "id": 2282,
        "nodeType": "ImportDirective",
        "scope": 2774,
        "sourceUnit": 9023,
        "src": "69:49:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@ensdomains/subdomain-registrar/contracts/AbstractSubdomainRegistrar.sol",
        "file": "@ensdomains/subdomain-registrar/contracts/AbstractSubdomainRegistrar.sol",
        "id": 2283,
        "nodeType": "ImportDirective",
        "scope": 2774,
        "sourceUnit": 11089,
        "src": "119:82:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/BaseRegistrarImplementation.sol",
        "file": "./BaseRegistrarImplementation.sol",
        "id": 2284,
        "nodeType": "ImportDirective",
        "scope": 2774,
        "sourceUnit": 540,
        "src": "202:43:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/OldBaseRegistrarImplementation.sol",
        "file": "./OldBaseRegistrarImplementation.sol",
        "id": 2285,
        "nodeType": "ImportDirective",
        "scope": 2774,
        "sourceUnit": 2265,
        "src": "246:46:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 2286,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "294:25:9"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 2338,
        "linearizedBaseContracts": [
          2338
        ],
        "name": "OldENS",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 2295,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setSubnodeOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2288,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2295,
                  "src": "369:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2287,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2290,
                  "name": "label",
                  "nodeType": "VariableDeclaration",
                  "scope": 2295,
                  "src": "383:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2289,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "383:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2292,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2295,
                  "src": "398:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "398:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "368:44:9"
            },
            "returnParameters": {
              "id": 2294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "421:0:9"
            },
            "scope": 2338,
            "src": "344:78:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2302,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2300,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2297,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2302,
                  "src": "448:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2296,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "448:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2299,
                  "name": "resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 2302,
                  "src": "462:16:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2298,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "462:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "447:32:9"
            },
            "returnParameters": {
              "id": 2301,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "488:0:9"
            },
            "scope": 2338,
            "src": "427:62:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2309,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2304,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2309,
                  "src": "512:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "512:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2306,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2309,
                  "src": "526:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2305,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "526:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "511:29:9"
            },
            "returnParameters": {
              "id": 2308,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "549:0:9"
            },
            "scope": 2338,
            "src": "494:56:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2316,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setTTL",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2311,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2316,
                  "src": "571:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2310,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "571:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2313,
                  "name": "ttl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2316,
                  "src": "585:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2312,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "585:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "570:26:9"
            },
            "returnParameters": {
              "id": 2315,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "605:0:9"
            },
            "scope": 2338,
            "src": "555:51:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2323,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "owner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2318,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2323,
                  "src": "626:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2317,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "626:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "625:14:9"
            },
            "returnParameters": {
              "id": 2322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2321,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2323,
                  "src": "663:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2320,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "663:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "662:9:9"
            },
            "scope": 2338,
            "src": "611:61:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2330,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "resolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2326,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2325,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2330,
                  "src": "695:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2324,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "695:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "694:14:9"
            },
            "returnParameters": {
              "id": 2329,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2328,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2330,
                  "src": "732:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2327,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "732:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "731:9:9"
            },
            "scope": 2338,
            "src": "677:64:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2337,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "ttl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2333,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2332,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2337,
                  "src": "759:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2331,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "759:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "758:14:9"
            },
            "returnParameters": {
              "id": 2336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2335,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2337,
                  "src": "796:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2334,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "796:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "795:8:9"
            },
            "scope": 2338,
            "src": "746:58:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 2774,
        "src": "321:485:9"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2773,
        "linearizedBaseContracts": [
          2773
        ],
        "name": "RegistrarMigration",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2341,
            "libraryName": {
              "contractScope": null,
              "id": 2339,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12189,
              "src": "848:8:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$12189",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "842:24:9",
            "typeName": {
              "id": 2340,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "861:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 2344,
            "name": "UNUSED_SUBDOMAIN",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "872:63:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_memory",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 2342,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "872:5:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "ffffffffffffffff",
              "id": 2343,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "914:21:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_ad0bfb4b0a66700aeb759d88c315168cc0a11ee99e2a680e548ecf0a464e7daf",
                "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
              },
              "value": null
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2346,
            "name": "legacyRegistrar",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "942:32:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Registrar_$9022",
              "typeString": "contract Registrar"
            },
            "typeName": {
              "contractScope": null,
              "id": 2345,
              "name": "Registrar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9022,
              "src": "942:9:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Registrar_$9022",
                "typeString": "contract Registrar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2348,
            "name": "transferPeriodEnds",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "980:23:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2347,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "980:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2350,
            "name": "oldRegistrar",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1009:50:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
              "typeString": "contract OldBaseRegistrarImplementation"
            },
            "typeName": {
              "contractScope": null,
              "id": 2349,
              "name": "OldBaseRegistrarImplementation",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2264,
              "src": "1009:30:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                "typeString": "contract OldBaseRegistrarImplementation"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2352,
            "name": "newRegistrar",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1065:47:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
              "typeString": "contract BaseRegistrarImplementation"
            },
            "typeName": {
              "contractScope": null,
              "id": 2351,
              "name": "BaseRegistrarImplementation",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 539,
              "src": "1065:27:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                "typeString": "contract BaseRegistrarImplementation"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2354,
            "name": "oldENS",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1118:20:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_OldENS_$2338",
              "typeString": "contract OldENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 2353,
              "name": "OldENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2338,
              "src": "1118:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OldENS_$2338",
                "typeString": "contract OldENS"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2356,
            "name": "newENS",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1144:17:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ENS_$6863",
              "typeString": "contract ENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 2355,
              "name": "ENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6863,
              "src": "1144:3:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENS_$6863",
                "typeString": "contract ENS"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2358,
            "name": "oldSubdomainRegistrar",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1167:55:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
              "typeString": "contract AbstractSubdomainRegistrar"
            },
            "typeName": {
              "contractScope": null,
              "id": 2357,
              "name": "AbstractSubdomainRegistrar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11088,
              "src": "1167:26:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                "typeString": "contract AbstractSubdomainRegistrar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2360,
            "name": "newSubdomainRegistrar",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1228:55:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
              "typeString": "contract AbstractSubdomainRegistrar"
            },
            "typeName": {
              "contractScope": null,
              "id": 2359,
              "name": "AbstractSubdomainRegistrar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11088,
              "src": "1228:26:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                "typeString": "contract AbstractSubdomainRegistrar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2362,
            "name": "baseNode",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1290:23:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2361,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1290:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2431,
              "nodeType": "Block",
              "src": "1512:443:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2373,
                      "name": "oldRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2350,
                      "src": "1522:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                        "typeString": "contract OldBaseRegistrarImplementation"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2374,
                      "name": "_old",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2364,
                      "src": "1537:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                        "typeString": "contract OldBaseRegistrarImplementation"
                      }
                    },
                    "src": "1522:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                      "typeString": "contract OldBaseRegistrarImplementation"
                    }
                  },
                  "id": 2376,
                  "nodeType": "ExpressionStatement",
                  "src": "1522:19:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2377,
                      "name": "oldENS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2354,
                      "src": "1551:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldENS_$2338",
                        "typeString": "contract OldENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2380,
                                  "name": "_old",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2364,
                                  "src": "1575:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                                    "typeString": "contract OldBaseRegistrarImplementation"
                                  }
                                },
                                "id": 2381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "ens",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 43,
                                "src": "1575:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ENS_$6863_$",
                                  "typeString": "function () view external returns (contract ENS)"
                                }
                              },
                              "id": 2382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1575:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$6863",
                                "typeString": "contract ENS"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_ENS_$6863",
                                "typeString": "contract ENS"
                              }
                            ],
                            "id": 2379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1567:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 2383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1567:19:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2378,
                        "name": "OldENS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "1560:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_OldENS_$2338_$",
                          "typeString": "type(contract OldENS)"
                        }
                      },
                      "id": 2384,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1560:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldENS_$2338",
                        "typeString": "contract OldENS"
                      }
                    },
                    "src": "1551:36:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OldENS_$2338",
                      "typeString": "contract OldENS"
                    }
                  },
                  "id": 2386,
                  "nodeType": "ExpressionStatement",
                  "src": "1551:36:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2387,
                      "name": "baseNode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2362,
                      "src": "1597:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2388,
                          "name": "_old",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2364,
                          "src": "1608:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                            "typeString": "contract OldBaseRegistrarImplementation"
                          }
                        },
                        "id": 2389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "baseNode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 45,
                        "src": "1608:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                          "typeString": "function () view external returns (bytes32)"
                        }
                      },
                      "id": 2390,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1608:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1597:26:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2392,
                  "nodeType": "ExpressionStatement",
                  "src": "1597:26:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2393,
                      "name": "legacyRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2346,
                      "src": "1633:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Registrar_$9022",
                        "typeString": "contract Registrar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2394,
                          "name": "_old",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2364,
                          "src": "1651:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                            "typeString": "contract OldBaseRegistrarImplementation"
                          }
                        },
                        "id": 2395,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "previousRegistrar",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1694,
                        "src": "1651:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Registrar_$9022_$",
                          "typeString": "function () view external returns (contract Registrar)"
                        }
                      },
                      "id": 2396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1651:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Registrar_$9022",
                        "typeString": "contract Registrar"
                      }
                    },
                    "src": "1633:42:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Registrar_$9022",
                      "typeString": "contract Registrar"
                    }
                  },
                  "id": 2398,
                  "nodeType": "ExpressionStatement",
                  "src": "1633:42:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2399,
                      "name": "transferPeriodEnds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2348,
                      "src": "1685:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2400,
                          "name": "_old",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2364,
                          "src": "1706:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                            "typeString": "contract OldBaseRegistrarImplementation"
                          }
                        },
                        "id": 2401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "transferPeriodEnds",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1692,
                        "src": "1706:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                          "typeString": "function () view external returns (uint256)"
                        }
                      },
                      "id": 2402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1706:25:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1685:46:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2404,
                  "nodeType": "ExpressionStatement",
                  "src": "1685:46:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2405,
                      "name": "oldSubdomainRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2358,
                      "src": "1741:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                        "typeString": "contract AbstractSubdomainRegistrar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2406,
                      "name": "_oldSubdomainRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2368,
                      "src": "1765:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                        "typeString": "contract AbstractSubdomainRegistrar"
                      }
                    },
                    "src": "1741:46:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                      "typeString": "contract AbstractSubdomainRegistrar"
                    }
                  },
                  "id": 2408,
                  "nodeType": "ExpressionStatement",
                  "src": "1741:46:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2409,
                      "name": "newRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2352,
                      "src": "1798:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                        "typeString": "contract BaseRegistrarImplementation"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2410,
                      "name": "_new",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2366,
                      "src": "1813:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                        "typeString": "contract BaseRegistrarImplementation"
                      }
                    },
                    "src": "1798:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                      "typeString": "contract BaseRegistrarImplementation"
                    }
                  },
                  "id": 2412,
                  "nodeType": "ExpressionStatement",
                  "src": "1798:19:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2413,
                      "name": "newENS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2356,
                      "src": "1827:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$6863",
                        "typeString": "contract ENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2414,
                          "name": "_new",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2366,
                          "src": "1836:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                            "typeString": "contract BaseRegistrarImplementation"
                          }
                        },
                        "id": 2415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "ens",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43,
                        "src": "1836:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ENS_$6863_$",
                          "typeString": "function () view external returns (contract ENS)"
                        }
                      },
                      "id": 2416,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1836:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$6863",
                        "typeString": "contract ENS"
                      }
                    },
                    "src": "1827:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$6863",
                      "typeString": "contract ENS"
                    }
                  },
                  "id": 2418,
                  "nodeType": "ExpressionStatement",
                  "src": "1827:19:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 2424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2420,
                              "name": "_new",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2366,
                              "src": "1864:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                                "typeString": "contract BaseRegistrarImplementation"
                              }
                            },
                            "id": 2421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "baseNode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 45,
                            "src": "1864:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 2422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1864:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2423,
                          "name": "baseNode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2362,
                          "src": "1883:8:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "1864:27:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2419,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        13013,
                        13014
                      ],
                      "referencedDeclaration": 13013,
                      "src": "1856:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1856:36:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2426,
                  "nodeType": "ExpressionStatement",
                  "src": "1856:36:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2427,
                      "name": "newSubdomainRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2360,
                      "src": "1902:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                        "typeString": "contract AbstractSubdomainRegistrar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2428,
                      "name": "_newSubdomainRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2370,
                      "src": "1926:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                        "typeString": "contract AbstractSubdomainRegistrar"
                      }
                    },
                    "src": "1902:46:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                      "typeString": "contract AbstractSubdomainRegistrar"
                    }
                  },
                  "id": 2430,
                  "nodeType": "ExpressionStatement",
                  "src": "1902:46:9"
                }
              ]
            },
            "documentation": null,
            "id": 2432,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2364,
                  "name": "_old",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "1332:35:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                    "typeString": "contract OldBaseRegistrarImplementation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2363,
                    "name": "OldBaseRegistrarImplementation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2264,
                    "src": "1332:30:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                      "typeString": "contract OldBaseRegistrarImplementation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2366,
                  "name": "_new",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "1369:32:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                    "typeString": "contract BaseRegistrarImplementation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2365,
                    "name": "BaseRegistrarImplementation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 539,
                    "src": "1369:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                      "typeString": "contract BaseRegistrarImplementation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2368,
                  "name": "_oldSubdomainRegistrar",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "1403:49:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                    "typeString": "contract AbstractSubdomainRegistrar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2367,
                    "name": "AbstractSubdomainRegistrar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11088,
                    "src": "1403:26:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                      "typeString": "contract AbstractSubdomainRegistrar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2370,
                  "name": "_newSubdomainRegistrar",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "1454:49:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                    "typeString": "contract AbstractSubdomainRegistrar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2369,
                    "name": "AbstractSubdomainRegistrar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11088,
                    "src": "1454:26:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                      "typeString": "contract AbstractSubdomainRegistrar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1331:173:9"
            },
            "returnParameters": {
              "id": 2372,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1512:0:9"
            },
            "scope": 2773,
            "src": "1320:635:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2647,
              "nodeType": "Block",
              "src": "2042:2095:9",
              "statements": [
                {
                  "assignments": [
                    2442
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2442,
                      "name": "node",
                      "nodeType": "VariableDeclaration",
                      "scope": 2647,
                      "src": "2052:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2441,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2052:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2452,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2446,
                            "name": "baseNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2362,
                            "src": "2094:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2448,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2434,
                                "src": "2112:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2104:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 2449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2104:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2444,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12997,
                            "src": "2077:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2077:16:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2077:44:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2443,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13004,
                      "src": "2067:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2067:55:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2052:70:9"
                },
                {
                  "assignments": [
                    2454
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2454,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 2647,
                      "src": "2132:18:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2453,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2132:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2459,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2457,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2442,
                        "src": "2166:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2455,
                        "name": "oldENS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2354,
                        "src": "2153:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OldENS_$2338",
                          "typeString": "contract OldENS"
                        }
                      },
                      "id": 2456,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2323,
                      "src": "2153:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 2458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2153:18:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2132:39:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 2466,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2461,
                            "name": "registrant",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2436,
                            "src": "2193:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2185:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2185:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2464,
                            "name": "oldSubdomainRegistrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2358,
                            "src": "2216:21:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                              "typeString": "contract AbstractSubdomainRegistrar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                              "typeString": "contract AbstractSubdomainRegistrar"
                            }
                          ],
                          "id": 2463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2208:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2208:30:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2185:53:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2468,
                          "name": "controller",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2454,
                          "src": "2250:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2467,
                        "name": "hasCode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2772,
                        "src": "2242:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                          "typeString": "function (address) view returns (bool)"
                        }
                      },
                      "id": 2469,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2242:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2185:76:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2484,
                  "nodeType": "IfStatement",
                  "src": "2182:290:9",
                  "trueBody": {
                    "id": 2483,
                    "nodeType": "Block",
                    "src": "2263:209:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2474,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2434,
                              "src": "2403:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2475,
                              "name": "registrant",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2436,
                              "src": "2412:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2478,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13012,
                                  "src": "2436:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2476,
                                  "name": "expires",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2438,
                                  "src": "2424:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12144,
                                "src": "2424:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2424:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2471,
                              "name": "newRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "2377:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                                "typeString": "contract BaseRegistrarImplementation"
                              }
                            },
                            "id": 2473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "registerOnly",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 352,
                            "src": "2377:25:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,address,uint256) external returns (uint256)"
                            }
                          },
                          "id": 2480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2377:64:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2481,
                        "nodeType": "ExpressionStatement",
                        "src": "2377:64:9"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 2440,
                        "id": 2482,
                        "nodeType": "Return",
                        "src": "2455:7:9"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2488,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2434,
                        "src": "2580:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2490,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13082,
                            "src": "2597:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                              "typeString": "contract RegistrarMigration"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                              "typeString": "contract RegistrarMigration"
                            }
                          ],
                          "id": 2489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2589:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2589:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2494,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13012,
                            "src": "2616:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2492,
                            "name": "expires",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2438,
                            "src": "2604:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12144,
                          "src": "2604:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2604:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2485,
                        "name": "newRegistrar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2352,
                        "src": "2558:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                          "typeString": "contract BaseRegistrarImplementation"
                        }
                      },
                      "id": 2487,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "register",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 333,
                      "src": "2558:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address,uint256) external returns (uint256)"
                      }
                    },
                    "id": 2496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2558:63:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2497,
                  "nodeType": "ExpressionStatement",
                  "src": "2558:63:9"
                },
                {
                  "assignments": [
                    2499
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2499,
                      "name": "resolver",
                      "nodeType": "VariableDeclaration",
                      "scope": 2647,
                      "src": "2698:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2498,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2698:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2504,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2502,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2442,
                        "src": "2733:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2500,
                        "name": "oldENS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2354,
                        "src": "2717:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OldENS_$2338",
                          "typeString": "contract OldENS"
                        }
                      },
                      "id": 2501,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "resolver",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2330,
                      "src": "2717:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 2503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2717:21:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2698:40:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2505,
                      "name": "resolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "2751:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2771:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 2506,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2763:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2508,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2763:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2751:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2518,
                  "nodeType": "IfStatement",
                  "src": "2748:86:9",
                  "trueBody": {
                    "id": 2517,
                    "nodeType": "Block",
                    "src": "2775:59:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2513,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2442,
                              "src": "2808:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2514,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2499,
                              "src": "2814:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2510,
                              "name": "newENS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2356,
                              "src": "2789:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$6863",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 2512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setResolver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6804,
                            "src": "2789:18:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) external"
                            }
                          },
                          "id": 2515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2789:34:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2516,
                        "nodeType": "ExpressionStatement",
                        "src": "2789:34:9"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2520
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2520,
                      "name": "ttl",
                      "nodeType": "VariableDeclaration",
                      "scope": 2647,
                      "src": "2844:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 2519,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "2844:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2525,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2523,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2442,
                        "src": "2868:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2521,
                        "name": "oldENS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2354,
                        "src": "2857:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OldENS_$2338",
                          "typeString": "contract OldENS"
                        }
                      },
                      "id": 2522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ttl",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2337,
                      "src": "2857:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint64_$",
                        "typeString": "function (bytes32) view external returns (uint64)"
                      }
                    },
                    "id": 2524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2857:16:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2844:29:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    },
                    "id": 2528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2526,
                      "name": "ttl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2520,
                      "src": "2886:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2893:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2886:8:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2537,
                  "nodeType": "IfStatement",
                  "src": "2883:62:9",
                  "trueBody": {
                    "id": 2536,
                    "nodeType": "Block",
                    "src": "2896:49:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2532,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2442,
                              "src": "2924:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2533,
                              "name": "ttl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2520,
                              "src": "2930:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2529,
                              "name": "newENS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2356,
                              "src": "2910:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$6863",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 2531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setTTL",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6818,
                            "src": "2910:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,uint64) external"
                            }
                          },
                          "id": 2534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2910:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2535,
                        "nodeType": "ExpressionStatement",
                        "src": "2910:24:9"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 2544,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2539,
                            "name": "registrant",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2436,
                            "src": "2966:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2958:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2958:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2542,
                            "name": "oldSubdomainRegistrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2358,
                            "src": "2989:21:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                              "typeString": "contract AbstractSubdomainRegistrar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                              "typeString": "contract AbstractSubdomainRegistrar"
                            }
                          ],
                          "id": 2541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2981:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2543,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2981:30:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2958:53:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 2551,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2546,
                            "name": "registrant",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2436,
                            "src": "3023:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3015:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3015:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3046:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 2548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3038:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3038:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "3015:33:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2958:90:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2633,
                    "nodeType": "Block",
                    "src": "3776:194:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2619,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2442,
                              "src": "3806:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2620,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2454,
                              "src": "3812:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2616,
                              "name": "newENS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2356,
                              "src": "3790:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$6863",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 2618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6811,
                            "src": "3790:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) external"
                            }
                          },
                          "id": 2621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3790:33:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2622,
                        "nodeType": "ExpressionStatement",
                        "src": "3790:33:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2627,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13082,
                                  "src": "3932:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                                    "typeString": "contract RegistrarMigration"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                                    "typeString": "contract RegistrarMigration"
                                  }
                                ],
                                "id": 2626,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3924:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3924:13:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2629,
                              "name": "registrant",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2436,
                              "src": "3939:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2630,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2434,
                              "src": "3951:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2623,
                              "name": "newRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "3898:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                                "typeString": "contract BaseRegistrarImplementation"
                              }
                            },
                            "id": 2625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12525,
                            "src": "3898:25:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256) external"
                            }
                          },
                          "id": 2631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3898:61:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2632,
                        "nodeType": "ExpressionStatement",
                        "src": "3898:61:9"
                      }
                    ]
                  },
                  "id": 2634,
                  "nodeType": "IfStatement",
                  "src": "2955:1015:9",
                  "trueBody": {
                    "id": 2615,
                    "nodeType": "Block",
                    "src": "3050:720:9",
                    "statements": [
                      {
                        "assignments": [
                          2554,
                          2556,
                          null,
                          2558
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2554,
                            "name": "label",
                            "nodeType": "VariableDeclaration",
                            "scope": 2615,
                            "src": "3174:19:9",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 2553,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "3174:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2556,
                            "name": "price",
                            "nodeType": "VariableDeclaration",
                            "scope": 2615,
                            "src": "3195:10:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2555,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "3195:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null,
                          {
                            "constant": false,
                            "id": 2558,
                            "name": "referralFeePPM",
                            "nodeType": "VariableDeclaration",
                            "scope": 2615,
                            "src": "3208:19:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2557,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "3208:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2568,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2562,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2434,
                                  "src": "3267:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3259:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 2563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3259:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2565,
                                  "name": "UNUSED_SUBDOMAIN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2344,
                                  "src": "3284:16:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 2564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3277:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                },
                                "typeName": "string"
                              },
                              "id": 2566,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3277:24:9",
                              "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": {
                              "argumentTypes": null,
                              "id": 2559,
                              "name": "oldSubdomainRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2358,
                              "src": "3231:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                                "typeString": "contract AbstractSubdomainRegistrar"
                              }
                            },
                            "id": 2560,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "query",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11067,
                            "src": "3231:27:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (bytes32,string memory) view external returns (string memory,uint256,uint256,uint256)"
                            }
                          },
                          "id": 2567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3231:71:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(string memory,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3173:129:9"
                      },
                      {
                        "assignments": [
                          2570
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2570,
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 2615,
                            "src": "3316:13:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2569,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3316:7:9",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2577,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2574,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2434,
                                  "src": "3368:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2573,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3360:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 2575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3360:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2571,
                              "name": "oldSubdomainRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2358,
                              "src": "3332:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                                "typeString": "contract AbstractSubdomainRegistrar"
                              }
                            },
                            "id": 2572,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11074,
                            "src": "3332:27:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 2576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3332:45:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3316:61:9"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2579,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2554,
                                  "src": "3400:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 2578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3394:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 2580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3394:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3394:19:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3417:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3394:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2589,
                        "nodeType": "IfStatement",
                        "src": "3391:117:9",
                        "trueBody": {
                          "id": 2588,
                          "nodeType": "Block",
                          "src": "3420:88:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "556e61626c6520746f206d69677261746520646f6d61696e206f6e20737562646f6d61696e20726567697374726172",
                                    "id": 2585,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3443:49:9",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6b2f7958e0af4fc039b4dfecb9dc8ae32dd6cf483cbf0a17d28002472f1ec5cc",
                                      "typeString": "literal_string \"Unable to migrate domain on subdomain registrar\""
                                    },
                                    "value": "Unable to migrate domain on subdomain registrar"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_6b2f7958e0af4fc039b4dfecb9dc8ae32dd6cf483cbf0a17d28002472f1ec5cc",
                                      "typeString": "literal_string \"Unable to migrate domain on subdomain registrar\""
                                    }
                                  ],
                                  "id": 2584,
                                  "name": "revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    13015,
                                    13016
                                  ],
                                  "referencedDeclaration": 13016,
                                  "src": "3436:6:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory) pure"
                                  }
                                },
                                "id": 2586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3436:57:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2587,
                              "nodeType": "ExpressionStatement",
                              "src": "3436:57:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2594,
                                  "name": "newSubdomainRegistrar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2360,
                                  "src": "3606:21:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                                    "typeString": "contract AbstractSubdomainRegistrar"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                                    "typeString": "contract AbstractSubdomainRegistrar"
                                  }
                                ],
                                "id": 2593,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3598:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3598:30:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2596,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2434,
                              "src": "3630:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2590,
                              "name": "newRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "3577:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                                "typeString": "contract BaseRegistrarImplementation"
                              }
                            },
                            "id": 2592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12436,
                            "src": "3577:20:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3577:61:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2598,
                        "nodeType": "ExpressionStatement",
                        "src": "3577:61:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2602,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2554,
                              "src": "3693:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2603,
                              "name": "price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2556,
                              "src": "3700:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2604,
                              "name": "referralFeePPM",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2558,
                              "src": "3707:14:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2607,
                                      "name": "owner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2570,
                                      "src": "3739:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2606,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3731:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": "uint160"
                                  },
                                  "id": 2608,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3731:14:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 2605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3723:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3723:23:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3756:1:9",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2610,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3748:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3748:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2599,
                              "name": "newSubdomainRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2360,
                              "src": "3652:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                                "typeString": "contract AbstractSubdomainRegistrar"
                              }
                            },
                            "id": 2601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "configureDomainFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11087,
                            "src": "3652:40:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_payable_$_t_address_$returns$__$",
                              "typeString": "function (string memory,uint256,uint256,address payable,address) external"
                            }
                          },
                          "id": 2613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3652:107:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2614,
                        "nodeType": "ExpressionStatement",
                        "src": "3652:107:9"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2638,
                        "name": "baseNode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2362,
                        "src": "4088:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2640,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2434,
                            "src": "4106:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4098:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": "bytes32"
                        },
                        "id": 2641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4098:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2643,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13082,
                            "src": "4124:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                              "typeString": "contract RegistrarMigration"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                              "typeString": "contract RegistrarMigration"
                            }
                          ],
                          "id": 2642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4116:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4116:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2635,
                        "name": "oldENS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2354,
                        "src": "4065:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OldENS_$2338",
                          "typeString": "contract OldENS"
                        }
                      },
                      "id": 2637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setSubnodeOwner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2295,
                      "src": "4065:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address) external"
                      }
                    },
                    "id": 2645,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4065:65:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2646,
                  "nodeType": "ExpressionStatement",
                  "src": "4065:65:9"
                }
              ]
            },
            "documentation": null,
            "id": 2648,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "doMigration",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2434,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2648,
                  "src": "1982:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2433,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1982:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2436,
                  "name": "registrant",
                  "nodeType": "VariableDeclaration",
                  "scope": 2648,
                  "src": "1999:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2435,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1999:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2438,
                  "name": "expires",
                  "nodeType": "VariableDeclaration",
                  "scope": 2648,
                  "src": "2019:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2437,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2019:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1981:51:9"
            },
            "returnParameters": {
              "id": 2440,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2042:0:9"
            },
            "scope": 2773,
            "src": "1961:2176:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2669,
              "nodeType": "Block",
              "src": "4274:144:9",
              "statements": [
                {
                  "assignments": [
                    2654
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2654,
                      "name": "registrant",
                      "nodeType": "VariableDeclaration",
                      "scope": 2669,
                      "src": "4284:18:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2653,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4284:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2659,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2657,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2650,
                        "src": "4326:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2655,
                        "name": "oldRegistrar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2350,
                        "src": "4305:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                          "typeString": "contract OldBaseRegistrarImplementation"
                        }
                      },
                      "id": 2656,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1839,
                      "src": "4305:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view external returns (address)"
                      }
                    },
                    "id": 2658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4305:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4284:50:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2661,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2650,
                        "src": "4356:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2662,
                        "name": "registrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2654,
                        "src": "4365:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2665,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2650,
                            "src": "4402:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2663,
                            "name": "oldRegistrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2350,
                            "src": "4377:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                              "typeString": "contract OldBaseRegistrarImplementation"
                            }
                          },
                          "id": 2664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "nameExpires",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1902,
                          "src": "4377:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view external returns (uint256)"
                          }
                        },
                        "id": 2666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4377:33:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2660,
                      "name": "doMigration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2648,
                      "src": "4344:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,uint256)"
                      }
                    },
                    "id": 2667,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4344:67:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2668,
                  "nodeType": "ExpressionStatement",
                  "src": "4344:67:9"
                }
              ]
            },
            "documentation": "@dev Migrate a name from the previous version of the BaseRegistrar",
            "id": 2670,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2650,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2670,
                  "src": "4250:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4250:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4249:17:9"
            },
            "returnParameters": {
              "id": 2652,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4274:0:9"
            },
            "scope": 2773,
            "src": "4233:185:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2695,
              "nodeType": "Block",
              "src": "4582:103:9",
              "statements": [
                {
                  "body": {
                    "id": 2693,
                    "nodeType": "Block",
                    "src": "4634:45:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2688,
                                "name": "tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2673,
                                "src": "4656:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 2690,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2689,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2677,
                                "src": "4665:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4656:11:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2687,
                            "name": "migrate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2670,
                            "src": "4648:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4648:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2692,
                        "nodeType": "ExpressionStatement",
                        "src": "4648:20:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2680,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2677,
                      "src": "4608:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2681,
                        "name": "tokenIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2673,
                        "src": "4612:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 2682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4612:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4608:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2694,
                  "initializationExpression": {
                    "assignments": [
                      2677
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2677,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2694,
                        "src": "4596:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2676,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4596:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2679,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2678,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4605:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4596:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2685,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4629:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2684,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2677,
                        "src": "4629:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2686,
                    "nodeType": "ExpressionStatement",
                    "src": "4629:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "4592:87:9"
                }
              ]
            },
            "documentation": "@dev Migrate a list of names from the previous version of the BaseRegistrar.",
            "id": 2696,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrateAll",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2674,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2673,
                  "name": "tokenIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 2696,
                  "src": "4544:27:9",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2671,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4544:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2672,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4544:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4543:29:9"
            },
            "returnParameters": {
              "id": 2675,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4582:0:9"
            },
            "scope": 2773,
            "src": "4524:161:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2736,
              "nodeType": "Block",
              "src": "4822:245:9",
              "statements": [
                {
                  "assignments": [
                    2704,
                    2706,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2704,
                      "name": "mode",
                      "nodeType": "VariableDeclaration",
                      "scope": 2736,
                      "src": "4833:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Mode_$8867",
                        "typeString": "enum Registrar.Mode"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2703,
                        "name": "Registrar.Mode",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8867,
                        "src": "4833:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Mode_$8867",
                          "typeString": "enum Registrar.Mode"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2706,
                      "name": "deed",
                      "nodeType": "VariableDeclaration",
                      "scope": 2736,
                      "src": "4854:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2705,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4854:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 2711,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2709,
                        "name": "label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2698,
                        "src": "4899:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2707,
                        "name": "legacyRegistrar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2346,
                        "src": "4875:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Registrar_$9022",
                          "typeString": "contract Registrar"
                        }
                      },
                      "id": 2708,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9021,
                      "src": "4875:23:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_enum$_Mode_$8867_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (bytes32) view external returns (enum Registrar.Mode,address,uint256,uint256,uint256)"
                      }
                    },
                    "id": 2710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4875:30:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_Mode_$8867_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(enum Registrar.Mode,address,uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4832:73:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_Mode_$8867",
                          "typeString": "enum Registrar.Mode"
                        },
                        "id": 2717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2713,
                          "name": "mode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2704,
                          "src": "4923:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Mode_$8867",
                            "typeString": "enum Registrar.Mode"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2714,
                              "name": "Registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9022,
                              "src": "4931:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Registrar_$9022_$",
                                "typeString": "type(contract Registrar)"
                              }
                            },
                            "id": 2715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Mode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8867,
                            "src": "4931:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Mode_$8867_$",
                              "typeString": "type(enum Registrar.Mode)"
                            }
                          },
                          "id": 2716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Owned",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4931:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Mode_$8867",
                            "typeString": "enum Registrar.Mode"
                          }
                        },
                        "src": "4923:28:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2712,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        13013,
                        13014
                      ],
                      "referencedDeclaration": 13013,
                      "src": "4915:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4915:37:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2719,
                  "nodeType": "ExpressionStatement",
                  "src": "4915:37:9"
                },
                {
                  "assignments": [
                    2721
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2721,
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 2736,
                      "src": "4962:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2720,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4962:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2727,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2723,
                            "name": "deed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2706,
                            "src": "4983:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2722,
                          "name": "Deed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6474,
                          "src": "4978:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Deed_$6474_$",
                            "typeString": "type(contract Deed)"
                          }
                        },
                        "id": 2724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4978:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deed_$6474",
                          "typeString": "contract Deed"
                        }
                      },
                      "id": 2725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6458,
                      "src": "4978:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 2726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4978:18:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4962:34:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2730,
                            "name": "label",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2698,
                            "src": "5026:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5018:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 2731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5018:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2732,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2721,
                        "src": "5034:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2733,
                        "name": "transferPeriodEnds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2348,
                        "src": "5041:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2728,
                      "name": "doMigration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2648,
                      "src": "5006:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,uint256)"
                      }
                    },
                    "id": 2734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5006:54:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2735,
                  "nodeType": "ExpressionStatement",
                  "src": "5006:54:9"
                }
              ]
            },
            "documentation": "@dev Migrate a name from the legacy (auction-based) registrar.",
            "id": 2737,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrateLegacy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2699,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2698,
                  "name": "label",
                  "nodeType": "VariableDeclaration",
                  "scope": 2737,
                  "src": "4800:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2697,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4800:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4799:15:9"
            },
            "returnParameters": {
              "id": 2700,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4822:0:9"
            },
            "scope": 2773,
            "src": "4777:290:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2762,
              "nodeType": "Block",
              "src": "5230:105:9",
              "statements": [
                {
                  "body": {
                    "id": 2760,
                    "nodeType": "Block",
                    "src": "5280:49:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2755,
                                "name": "labels",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2740,
                                "src": "5308:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                  "typeString": "bytes32[] calldata"
                                }
                              },
                              "id": 2757,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2756,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2744,
                                "src": "5315:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5308:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2754,
                            "name": "migrateLegacy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2737,
                            "src": "5294:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 2758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5294:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2759,
                        "nodeType": "ExpressionStatement",
                        "src": "5294:24:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2747,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2744,
                      "src": "5256:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2748,
                        "name": "labels",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2740,
                        "src": "5260:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      "id": 2749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5260:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5256:17:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2761,
                  "initializationExpression": {
                    "assignments": [
                      2744
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2744,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2761,
                        "src": "5244:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2743,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5244:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2746,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2745,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5253:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5244:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2752,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5275:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2751,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2744,
                        "src": "5275:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2753,
                    "nodeType": "ExpressionStatement",
                    "src": "5275:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "5240:89:9"
                }
              ]
            },
            "documentation": "@dev Migrate a list of names from the legacy (auction-based) registrar.",
            "id": 2763,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrateAllLegacy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2741,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2740,
                  "name": "labels",
                  "nodeType": "VariableDeclaration",
                  "scope": 2763,
                  "src": "5194:25:9",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2738,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5194:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 2739,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5194:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5193:27:9"
            },
            "returnParameters": {
              "id": 2742,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5230:0:9"
            },
            "scope": 2773,
            "src": "5168:167:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2771,
              "nodeType": "Block",
              "src": "5403:83:9",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "ret": {
                        "declaration": 2768,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "5436:3:9",
                        "valueSize": 1
                      }
                    },
                    {
                      "addr": {
                        "declaration": 2765,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "5463:4:9",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 2770,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    ret := not(not(extcodesize(addr)))\n}",
                  "src": "5413:67:9"
                }
              ]
            },
            "documentation": null,
            "id": 2772,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hasCode",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2765,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 2772,
                  "src": "5358:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2764,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5358:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5357:14:9"
            },
            "returnParameters": {
              "id": 2769,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2768,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 2772,
                  "src": "5393:8:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2767,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5393:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5392:10:9"
            },
            "scope": 2773,
            "src": "5341:145:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 2774,
        "src": "808:4680:9"
      }
    ],
    "src": "0:5489:9"
  },
  "legacyAST": {
    "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/RegistrarMigration.sol",
    "exportedSymbols": {
      "OldENS": [
        2338
      ],
      "RegistrarMigration": [
        2773
      ]
    },
    "id": 2774,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2280,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:9"
      },
      {
        "absolutePath": "@ensdomains/ens/contracts/ENS.sol",
        "file": "@ensdomains/ens/contracts/ENS.sol",
        "id": 2281,
        "nodeType": "ImportDirective",
        "scope": 2774,
        "sourceUnit": 6864,
        "src": "25:43:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@ensdomains/ens/contracts/Registrar.sol",
        "file": "@ensdomains/ens/contracts/Registrar.sol",
        "id": 2282,
        "nodeType": "ImportDirective",
        "scope": 2774,
        "sourceUnit": 9023,
        "src": "69:49:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@ensdomains/subdomain-registrar/contracts/AbstractSubdomainRegistrar.sol",
        "file": "@ensdomains/subdomain-registrar/contracts/AbstractSubdomainRegistrar.sol",
        "id": 2283,
        "nodeType": "ImportDirective",
        "scope": 2774,
        "sourceUnit": 11089,
        "src": "119:82:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/BaseRegistrarImplementation.sol",
        "file": "./BaseRegistrarImplementation.sol",
        "id": 2284,
        "nodeType": "ImportDirective",
        "scope": 2774,
        "sourceUnit": 540,
        "src": "202:43:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/makoto/work/ens/ethregistrar/contracts/OldBaseRegistrarImplementation.sol",
        "file": "./OldBaseRegistrarImplementation.sol",
        "id": 2285,
        "nodeType": "ImportDirective",
        "scope": 2774,
        "sourceUnit": 2265,
        "src": "246:46:9",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 2286,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "294:25:9"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": null,
        "fullyImplemented": false,
        "id": 2338,
        "linearizedBaseContracts": [
          2338
        ],
        "name": "OldENS",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": null,
            "documentation": null,
            "id": 2295,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setSubnodeOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2288,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2295,
                  "src": "369:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2287,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2290,
                  "name": "label",
                  "nodeType": "VariableDeclaration",
                  "scope": 2295,
                  "src": "383:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2289,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "383:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2292,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2295,
                  "src": "398:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "398:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "368:44:9"
            },
            "returnParameters": {
              "id": 2294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "421:0:9"
            },
            "scope": 2338,
            "src": "344:78:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2302,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2300,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2297,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2302,
                  "src": "448:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2296,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "448:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2299,
                  "name": "resolver",
                  "nodeType": "VariableDeclaration",
                  "scope": 2302,
                  "src": "462:16:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2298,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "462:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "447:32:9"
            },
            "returnParameters": {
              "id": 2301,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "488:0:9"
            },
            "scope": 2338,
            "src": "427:62:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2309,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2304,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2309,
                  "src": "512:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "512:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2306,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2309,
                  "src": "526:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2305,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "526:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "511:29:9"
            },
            "returnParameters": {
              "id": 2308,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "549:0:9"
            },
            "scope": 2338,
            "src": "494:56:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2316,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setTTL",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2311,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2316,
                  "src": "571:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2310,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "571:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2313,
                  "name": "ttl",
                  "nodeType": "VariableDeclaration",
                  "scope": 2316,
                  "src": "585:10:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2312,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "585:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "570:26:9"
            },
            "returnParameters": {
              "id": 2315,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "605:0:9"
            },
            "scope": 2338,
            "src": "555:51:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2323,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "owner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2318,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2323,
                  "src": "626:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2317,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "626:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "625:14:9"
            },
            "returnParameters": {
              "id": 2322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2321,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2323,
                  "src": "663:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2320,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "663:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "662:9:9"
            },
            "scope": 2338,
            "src": "611:61:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2330,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "resolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2326,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2325,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2330,
                  "src": "695:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2324,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "695:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "694:14:9"
            },
            "returnParameters": {
              "id": 2329,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2328,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2330,
                  "src": "732:7:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2327,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "732:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "731:9:9"
            },
            "scope": 2338,
            "src": "677:64:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": null,
            "documentation": null,
            "id": 2337,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "ttl",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2333,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2332,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 2337,
                  "src": "759:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2331,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "759:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "758:14:9"
            },
            "returnParameters": {
              "id": 2336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2335,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2337,
                  "src": "796:6:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2334,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "796:6:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "795:8:9"
            },
            "scope": 2338,
            "src": "746:58:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 2774,
        "src": "321:485:9"
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2773,
        "linearizedBaseContracts": [
          2773
        ],
        "name": "RegistrarMigration",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2341,
            "libraryName": {
              "contractScope": null,
              "id": 2339,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 12189,
              "src": "848:8:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$12189",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "842:24:9",
            "typeName": {
              "id": 2340,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "861:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 2344,
            "name": "UNUSED_SUBDOMAIN",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "872:63:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_memory",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 2342,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "872:5:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "ffffffffffffffff",
              "id": 2343,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "914:21:9",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_ad0bfb4b0a66700aeb759d88c315168cc0a11ee99e2a680e548ecf0a464e7daf",
                "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
              },
              "value": null
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 2346,
            "name": "legacyRegistrar",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "942:32:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Registrar_$9022",
              "typeString": "contract Registrar"
            },
            "typeName": {
              "contractScope": null,
              "id": 2345,
              "name": "Registrar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9022,
              "src": "942:9:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Registrar_$9022",
                "typeString": "contract Registrar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2348,
            "name": "transferPeriodEnds",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "980:23:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2347,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "980:4:9",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2350,
            "name": "oldRegistrar",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1009:50:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
              "typeString": "contract OldBaseRegistrarImplementation"
            },
            "typeName": {
              "contractScope": null,
              "id": 2349,
              "name": "OldBaseRegistrarImplementation",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2264,
              "src": "1009:30:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                "typeString": "contract OldBaseRegistrarImplementation"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2352,
            "name": "newRegistrar",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1065:47:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
              "typeString": "contract BaseRegistrarImplementation"
            },
            "typeName": {
              "contractScope": null,
              "id": 2351,
              "name": "BaseRegistrarImplementation",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 539,
              "src": "1065:27:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                "typeString": "contract BaseRegistrarImplementation"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2354,
            "name": "oldENS",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1118:20:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_OldENS_$2338",
              "typeString": "contract OldENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 2353,
              "name": "OldENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2338,
              "src": "1118:6:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OldENS_$2338",
                "typeString": "contract OldENS"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2356,
            "name": "newENS",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1144:17:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ENS_$6863",
              "typeString": "contract ENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 2355,
              "name": "ENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6863,
              "src": "1144:3:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENS_$6863",
                "typeString": "contract ENS"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2358,
            "name": "oldSubdomainRegistrar",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1167:55:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
              "typeString": "contract AbstractSubdomainRegistrar"
            },
            "typeName": {
              "contractScope": null,
              "id": 2357,
              "name": "AbstractSubdomainRegistrar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11088,
              "src": "1167:26:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                "typeString": "contract AbstractSubdomainRegistrar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2360,
            "name": "newSubdomainRegistrar",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1228:55:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
              "typeString": "contract AbstractSubdomainRegistrar"
            },
            "typeName": {
              "contractScope": null,
              "id": 2359,
              "name": "AbstractSubdomainRegistrar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11088,
              "src": "1228:26:9",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                "typeString": "contract AbstractSubdomainRegistrar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 2362,
            "name": "baseNode",
            "nodeType": "VariableDeclaration",
            "scope": 2773,
            "src": "1290:23:9",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 2361,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1290:7:9",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2431,
              "nodeType": "Block",
              "src": "1512:443:9",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2373,
                      "name": "oldRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2350,
                      "src": "1522:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                        "typeString": "contract OldBaseRegistrarImplementation"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2374,
                      "name": "_old",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2364,
                      "src": "1537:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                        "typeString": "contract OldBaseRegistrarImplementation"
                      }
                    },
                    "src": "1522:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                      "typeString": "contract OldBaseRegistrarImplementation"
                    }
                  },
                  "id": 2376,
                  "nodeType": "ExpressionStatement",
                  "src": "1522:19:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2377,
                      "name": "oldENS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2354,
                      "src": "1551:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldENS_$2338",
                        "typeString": "contract OldENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2380,
                                  "name": "_old",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2364,
                                  "src": "1575:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                                    "typeString": "contract OldBaseRegistrarImplementation"
                                  }
                                },
                                "id": 2381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "ens",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 43,
                                "src": "1575:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ENS_$6863_$",
                                  "typeString": "function () view external returns (contract ENS)"
                                }
                              },
                              "id": 2382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1575:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$6863",
                                "typeString": "contract ENS"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_ENS_$6863",
                                "typeString": "contract ENS"
                              }
                            ],
                            "id": 2379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1567:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 2383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1567:19:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2378,
                        "name": "OldENS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2338,
                        "src": "1560:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_OldENS_$2338_$",
                          "typeString": "type(contract OldENS)"
                        }
                      },
                      "id": 2384,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1560:27:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OldENS_$2338",
                        "typeString": "contract OldENS"
                      }
                    },
                    "src": "1551:36:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OldENS_$2338",
                      "typeString": "contract OldENS"
                    }
                  },
                  "id": 2386,
                  "nodeType": "ExpressionStatement",
                  "src": "1551:36:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2391,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2387,
                      "name": "baseNode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2362,
                      "src": "1597:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2388,
                          "name": "_old",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2364,
                          "src": "1608:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                            "typeString": "contract OldBaseRegistrarImplementation"
                          }
                        },
                        "id": 2389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "baseNode",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 45,
                        "src": "1608:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                          "typeString": "function () view external returns (bytes32)"
                        }
                      },
                      "id": 2390,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1608:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1597:26:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2392,
                  "nodeType": "ExpressionStatement",
                  "src": "1597:26:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2393,
                      "name": "legacyRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2346,
                      "src": "1633:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Registrar_$9022",
                        "typeString": "contract Registrar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2394,
                          "name": "_old",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2364,
                          "src": "1651:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                            "typeString": "contract OldBaseRegistrarImplementation"
                          }
                        },
                        "id": 2395,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "previousRegistrar",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1694,
                        "src": "1651:22:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Registrar_$9022_$",
                          "typeString": "function () view external returns (contract Registrar)"
                        }
                      },
                      "id": 2396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1651:24:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Registrar_$9022",
                        "typeString": "contract Registrar"
                      }
                    },
                    "src": "1633:42:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Registrar_$9022",
                      "typeString": "contract Registrar"
                    }
                  },
                  "id": 2398,
                  "nodeType": "ExpressionStatement",
                  "src": "1633:42:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2399,
                      "name": "transferPeriodEnds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2348,
                      "src": "1685:18:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2400,
                          "name": "_old",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2364,
                          "src": "1706:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                            "typeString": "contract OldBaseRegistrarImplementation"
                          }
                        },
                        "id": 2401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "transferPeriodEnds",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1692,
                        "src": "1706:23:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                          "typeString": "function () view external returns (uint256)"
                        }
                      },
                      "id": 2402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1706:25:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1685:46:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2404,
                  "nodeType": "ExpressionStatement",
                  "src": "1685:46:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2405,
                      "name": "oldSubdomainRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2358,
                      "src": "1741:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                        "typeString": "contract AbstractSubdomainRegistrar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2406,
                      "name": "_oldSubdomainRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2368,
                      "src": "1765:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                        "typeString": "contract AbstractSubdomainRegistrar"
                      }
                    },
                    "src": "1741:46:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                      "typeString": "contract AbstractSubdomainRegistrar"
                    }
                  },
                  "id": 2408,
                  "nodeType": "ExpressionStatement",
                  "src": "1741:46:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2409,
                      "name": "newRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2352,
                      "src": "1798:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                        "typeString": "contract BaseRegistrarImplementation"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2410,
                      "name": "_new",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2366,
                      "src": "1813:4:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                        "typeString": "contract BaseRegistrarImplementation"
                      }
                    },
                    "src": "1798:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                      "typeString": "contract BaseRegistrarImplementation"
                    }
                  },
                  "id": 2412,
                  "nodeType": "ExpressionStatement",
                  "src": "1798:19:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2417,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2413,
                      "name": "newENS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2356,
                      "src": "1827:6:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$6863",
                        "typeString": "contract ENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 2414,
                          "name": "_new",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2366,
                          "src": "1836:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                            "typeString": "contract BaseRegistrarImplementation"
                          }
                        },
                        "id": 2415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "ens",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 43,
                        "src": "1836:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ENS_$6863_$",
                          "typeString": "function () view external returns (contract ENS)"
                        }
                      },
                      "id": 2416,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1836:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENS_$6863",
                        "typeString": "contract ENS"
                      }
                    },
                    "src": "1827:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENS_$6863",
                      "typeString": "contract ENS"
                    }
                  },
                  "id": 2418,
                  "nodeType": "ExpressionStatement",
                  "src": "1827:19:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 2424,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2420,
                              "name": "_new",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2366,
                              "src": "1864:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                                "typeString": "contract BaseRegistrarImplementation"
                              }
                            },
                            "id": 2421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "baseNode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 45,
                            "src": "1864:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view external returns (bytes32)"
                            }
                          },
                          "id": 2422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1864:15:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2423,
                          "name": "baseNode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2362,
                          "src": "1883:8:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "1864:27:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2419,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        13013,
                        13014
                      ],
                      "referencedDeclaration": 13013,
                      "src": "1856:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2425,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1856:36:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2426,
                  "nodeType": "ExpressionStatement",
                  "src": "1856:36:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2427,
                      "name": "newSubdomainRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2360,
                      "src": "1902:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                        "typeString": "contract AbstractSubdomainRegistrar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2428,
                      "name": "_newSubdomainRegistrar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2370,
                      "src": "1926:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                        "typeString": "contract AbstractSubdomainRegistrar"
                      }
                    },
                    "src": "1902:46:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                      "typeString": "contract AbstractSubdomainRegistrar"
                    }
                  },
                  "id": 2430,
                  "nodeType": "ExpressionStatement",
                  "src": "1902:46:9"
                }
              ]
            },
            "documentation": null,
            "id": 2432,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2364,
                  "name": "_old",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "1332:35:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                    "typeString": "contract OldBaseRegistrarImplementation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2363,
                    "name": "OldBaseRegistrarImplementation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2264,
                    "src": "1332:30:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                      "typeString": "contract OldBaseRegistrarImplementation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2366,
                  "name": "_new",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "1369:32:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                    "typeString": "contract BaseRegistrarImplementation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2365,
                    "name": "BaseRegistrarImplementation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 539,
                    "src": "1369:27:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                      "typeString": "contract BaseRegistrarImplementation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2368,
                  "name": "_oldSubdomainRegistrar",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "1403:49:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                    "typeString": "contract AbstractSubdomainRegistrar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2367,
                    "name": "AbstractSubdomainRegistrar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11088,
                    "src": "1403:26:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                      "typeString": "contract AbstractSubdomainRegistrar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2370,
                  "name": "_newSubdomainRegistrar",
                  "nodeType": "VariableDeclaration",
                  "scope": 2432,
                  "src": "1454:49:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                    "typeString": "contract AbstractSubdomainRegistrar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2369,
                    "name": "AbstractSubdomainRegistrar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11088,
                    "src": "1454:26:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                      "typeString": "contract AbstractSubdomainRegistrar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1331:173:9"
            },
            "returnParameters": {
              "id": 2372,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1512:0:9"
            },
            "scope": 2773,
            "src": "1320:635:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2647,
              "nodeType": "Block",
              "src": "2042:2095:9",
              "statements": [
                {
                  "assignments": [
                    2442
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2442,
                      "name": "node",
                      "nodeType": "VariableDeclaration",
                      "scope": 2647,
                      "src": "2052:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2441,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2052:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2452,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2446,
                            "name": "baseNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2362,
                            "src": "2094:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2448,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2434,
                                "src": "2112:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2104:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 2449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2104:16:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2444,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12997,
                            "src": "2077:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 2445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2077:16:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 2450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2077:44:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2443,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13004,
                      "src": "2067:9:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 2451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2067:55:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2052:70:9"
                },
                {
                  "assignments": [
                    2454
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2454,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 2647,
                      "src": "2132:18:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2453,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2132:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2459,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2457,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2442,
                        "src": "2166:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2455,
                        "name": "oldENS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2354,
                        "src": "2153:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OldENS_$2338",
                          "typeString": "contract OldENS"
                        }
                      },
                      "id": 2456,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2323,
                      "src": "2153:12:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 2458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2153:18:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2132:39:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 2466,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2461,
                            "name": "registrant",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2436,
                            "src": "2193:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2185:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2185:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2464,
                            "name": "oldSubdomainRegistrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2358,
                            "src": "2216:21:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                              "typeString": "contract AbstractSubdomainRegistrar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                              "typeString": "contract AbstractSubdomainRegistrar"
                            }
                          ],
                          "id": 2463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2208:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2208:30:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2185:53:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 2468,
                          "name": "controller",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2454,
                          "src": "2250:10:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2467,
                        "name": "hasCode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2772,
                        "src": "2242:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                          "typeString": "function (address) view returns (bool)"
                        }
                      },
                      "id": 2469,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2242:19:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2185:76:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2484,
                  "nodeType": "IfStatement",
                  "src": "2182:290:9",
                  "trueBody": {
                    "id": 2483,
                    "nodeType": "Block",
                    "src": "2263:209:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2474,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2434,
                              "src": "2403:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2475,
                              "name": "registrant",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2436,
                              "src": "2412:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2478,
                                  "name": "now",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13012,
                                  "src": "2436:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2476,
                                  "name": "expires",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2438,
                                  "src": "2424:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12144,
                                "src": "2424:11:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2424:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2471,
                              "name": "newRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "2377:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                                "typeString": "contract BaseRegistrarImplementation"
                              }
                            },
                            "id": 2473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "registerOnly",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 352,
                            "src": "2377:25:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,address,uint256) external returns (uint256)"
                            }
                          },
                          "id": 2480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2377:64:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2481,
                        "nodeType": "ExpressionStatement",
                        "src": "2377:64:9"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 2440,
                        "id": 2482,
                        "nodeType": "Return",
                        "src": "2455:7:9"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2488,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2434,
                        "src": "2580:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2490,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13082,
                            "src": "2597:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                              "typeString": "contract RegistrarMigration"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                              "typeString": "contract RegistrarMigration"
                            }
                          ],
                          "id": 2489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2589:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2589:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2494,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13012,
                            "src": "2616:3:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2492,
                            "name": "expires",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2438,
                            "src": "2604:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 12144,
                          "src": "2604:11:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2604:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2485,
                        "name": "newRegistrar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2352,
                        "src": "2558:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                          "typeString": "contract BaseRegistrarImplementation"
                        }
                      },
                      "id": 2487,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "register",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 333,
                      "src": "2558:21:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,address,uint256) external returns (uint256)"
                      }
                    },
                    "id": 2496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2558:63:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2497,
                  "nodeType": "ExpressionStatement",
                  "src": "2558:63:9"
                },
                {
                  "assignments": [
                    2499
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2499,
                      "name": "resolver",
                      "nodeType": "VariableDeclaration",
                      "scope": 2647,
                      "src": "2698:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2498,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2698:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2504,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2502,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2442,
                        "src": "2733:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2500,
                        "name": "oldENS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2354,
                        "src": "2717:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OldENS_$2338",
                          "typeString": "contract OldENS"
                        }
                      },
                      "id": 2501,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "resolver",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2330,
                      "src": "2717:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 2503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2717:21:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2698:40:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2505,
                      "name": "resolver",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2499,
                      "src": "2751:8:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2771:1:9",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 2506,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2763:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 2508,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2763:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2751:22:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2518,
                  "nodeType": "IfStatement",
                  "src": "2748:86:9",
                  "trueBody": {
                    "id": 2517,
                    "nodeType": "Block",
                    "src": "2775:59:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2513,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2442,
                              "src": "2808:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2514,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2499,
                              "src": "2814:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2510,
                              "name": "newENS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2356,
                              "src": "2789:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$6863",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 2512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setResolver",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6804,
                            "src": "2789:18:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) external"
                            }
                          },
                          "id": 2515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2789:34:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2516,
                        "nodeType": "ExpressionStatement",
                        "src": "2789:34:9"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    2520
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2520,
                      "name": "ttl",
                      "nodeType": "VariableDeclaration",
                      "scope": 2647,
                      "src": "2844:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 2519,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "2844:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2525,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2523,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2442,
                        "src": "2868:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2521,
                        "name": "oldENS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2354,
                        "src": "2857:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OldENS_$2338",
                          "typeString": "contract OldENS"
                        }
                      },
                      "id": 2522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ttl",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2337,
                      "src": "2857:10:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint64_$",
                        "typeString": "function (bytes32) view external returns (uint64)"
                      }
                    },
                    "id": 2524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2857:16:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2844:29:9"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    },
                    "id": 2528,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2526,
                      "name": "ttl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2520,
                      "src": "2886:3:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2893:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2886:8:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2537,
                  "nodeType": "IfStatement",
                  "src": "2883:62:9",
                  "trueBody": {
                    "id": 2536,
                    "nodeType": "Block",
                    "src": "2896:49:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2532,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2442,
                              "src": "2924:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2533,
                              "name": "ttl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2520,
                              "src": "2930:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2529,
                              "name": "newENS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2356,
                              "src": "2910:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$6863",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 2531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setTTL",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6818,
                            "src": "2910:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,uint64) external"
                            }
                          },
                          "id": 2534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2910:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2535,
                        "nodeType": "ExpressionStatement",
                        "src": "2910:24:9"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 2544,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2539,
                            "name": "registrant",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2436,
                            "src": "2966:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2958:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2958:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2542,
                            "name": "oldSubdomainRegistrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2358,
                            "src": "2989:21:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                              "typeString": "contract AbstractSubdomainRegistrar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                              "typeString": "contract AbstractSubdomainRegistrar"
                            }
                          ],
                          "id": 2541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2981:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2543,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2981:30:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "src": "2958:53:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 2551,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2546,
                            "name": "registrant",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2436,
                            "src": "3023:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3015:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2547,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3015:19:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "!=",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3046:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 2548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3038:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3038:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "3015:33:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2958:90:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 2633,
                    "nodeType": "Block",
                    "src": "3776:194:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2619,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2442,
                              "src": "3806:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2620,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2454,
                              "src": "3812:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2616,
                              "name": "newENS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2356,
                              "src": "3790:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ENS_$6863",
                                "typeString": "contract ENS"
                              }
                            },
                            "id": 2618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6811,
                            "src": "3790:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address) external"
                            }
                          },
                          "id": 2621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3790:33:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2622,
                        "nodeType": "ExpressionStatement",
                        "src": "3790:33:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2627,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13082,
                                  "src": "3932:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                                    "typeString": "contract RegistrarMigration"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                                    "typeString": "contract RegistrarMigration"
                                  }
                                ],
                                "id": 2626,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3924:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3924:13:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2629,
                              "name": "registrant",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2436,
                              "src": "3939:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2630,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2434,
                              "src": "3951:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2623,
                              "name": "newRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "3898:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                                "typeString": "contract BaseRegistrarImplementation"
                              }
                            },
                            "id": 2625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12525,
                            "src": "3898:25:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256) external"
                            }
                          },
                          "id": 2631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3898:61:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2632,
                        "nodeType": "ExpressionStatement",
                        "src": "3898:61:9"
                      }
                    ]
                  },
                  "id": 2634,
                  "nodeType": "IfStatement",
                  "src": "2955:1015:9",
                  "trueBody": {
                    "id": 2615,
                    "nodeType": "Block",
                    "src": "3050:720:9",
                    "statements": [
                      {
                        "assignments": [
                          2554,
                          2556,
                          null,
                          2558
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2554,
                            "name": "label",
                            "nodeType": "VariableDeclaration",
                            "scope": 2615,
                            "src": "3174:19:9",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 2553,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "3174:6:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2556,
                            "name": "price",
                            "nodeType": "VariableDeclaration",
                            "scope": 2615,
                            "src": "3195:10:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2555,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "3195:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          null,
                          {
                            "constant": false,
                            "id": 2558,
                            "name": "referralFeePPM",
                            "nodeType": "VariableDeclaration",
                            "scope": 2615,
                            "src": "3208:19:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2557,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "3208:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2568,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2562,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2434,
                                  "src": "3267:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3259:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 2563,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3259:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2565,
                                  "name": "UNUSED_SUBDOMAIN",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2344,
                                  "src": "3284:16:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 2564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3277:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                },
                                "typeName": "string"
                              },
                              "id": 2566,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3277:24:9",
                              "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": {
                              "argumentTypes": null,
                              "id": 2559,
                              "name": "oldSubdomainRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2358,
                              "src": "3231:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                                "typeString": "contract AbstractSubdomainRegistrar"
                              }
                            },
                            "id": 2560,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "query",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11067,
                            "src": "3231:27:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (bytes32,string memory) view external returns (string memory,uint256,uint256,uint256)"
                            }
                          },
                          "id": 2567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3231:71:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(string memory,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3173:129:9"
                      },
                      {
                        "assignments": [
                          2570
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2570,
                            "name": "owner",
                            "nodeType": "VariableDeclaration",
                            "scope": 2615,
                            "src": "3316:13:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2569,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3316:7:9",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2577,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2574,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2434,
                                  "src": "3368:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2573,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3360:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 2575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3360:16:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2571,
                              "name": "oldSubdomainRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2358,
                              "src": "3332:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                                "typeString": "contract AbstractSubdomainRegistrar"
                              }
                            },
                            "id": 2572,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11074,
                            "src": "3332:27:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 2576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3332:45:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3316:61:9"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2579,
                                  "name": "label",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2554,
                                  "src": "3400:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 2578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3394:5:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": "bytes"
                              },
                              "id": 2580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3394:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 2581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "3394:19:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3417:1:9",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3394:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2589,
                        "nodeType": "IfStatement",
                        "src": "3391:117:9",
                        "trueBody": {
                          "id": 2588,
                          "nodeType": "Block",
                          "src": "3420:88:9",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "556e61626c6520746f206d69677261746520646f6d61696e206f6e20737562646f6d61696e20726567697374726172",
                                    "id": 2585,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3443:49:9",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6b2f7958e0af4fc039b4dfecb9dc8ae32dd6cf483cbf0a17d28002472f1ec5cc",
                                      "typeString": "literal_string \"Unable to migrate domain on subdomain registrar\""
                                    },
                                    "value": "Unable to migrate domain on subdomain registrar"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_6b2f7958e0af4fc039b4dfecb9dc8ae32dd6cf483cbf0a17d28002472f1ec5cc",
                                      "typeString": "literal_string \"Unable to migrate domain on subdomain registrar\""
                                    }
                                  ],
                                  "id": 2584,
                                  "name": "revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    13015,
                                    13016
                                  ],
                                  "referencedDeclaration": 13016,
                                  "src": "3436:6:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory) pure"
                                  }
                                },
                                "id": 2586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3436:57:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2587,
                              "nodeType": "ExpressionStatement",
                              "src": "3436:57:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2594,
                                  "name": "newSubdomainRegistrar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2360,
                                  "src": "3606:21:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                                    "typeString": "contract AbstractSubdomainRegistrar"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                                    "typeString": "contract AbstractSubdomainRegistrar"
                                  }
                                ],
                                "id": 2593,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3598:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3598:30:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2596,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2434,
                              "src": "3630:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2590,
                              "name": "newRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2352,
                              "src": "3577:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BaseRegistrarImplementation_$539",
                                "typeString": "contract BaseRegistrarImplementation"
                              }
                            },
                            "id": 2592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12436,
                            "src": "3577:20:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256) external"
                            }
                          },
                          "id": 2597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3577:61:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2598,
                        "nodeType": "ExpressionStatement",
                        "src": "3577:61:9"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2602,
                              "name": "label",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2554,
                              "src": "3693:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2603,
                              "name": "price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2556,
                              "src": "3700:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2604,
                              "name": "referralFeePPM",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2558,
                              "src": "3707:14:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2607,
                                      "name": "owner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2570,
                                      "src": "3739:5:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2606,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3731:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": "uint160"
                                  },
                                  "id": 2608,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3731:14:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 2605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3723:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3723:23:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3756:1:9",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2610,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3748:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 2612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3748:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2599,
                              "name": "newSubdomainRegistrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2360,
                              "src": "3652:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_AbstractSubdomainRegistrar_$11088",
                                "typeString": "contract AbstractSubdomainRegistrar"
                              }
                            },
                            "id": 2601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "configureDomainFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11087,
                            "src": "3652:40:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_payable_$_t_address_$returns$__$",
                              "typeString": "function (string memory,uint256,uint256,address payable,address) external"
                            }
                          },
                          "id": 2613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3652:107:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2614,
                        "nodeType": "ExpressionStatement",
                        "src": "3652:107:9"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2638,
                        "name": "baseNode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2362,
                        "src": "4088:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2640,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2434,
                            "src": "4106:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4098:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": "bytes32"
                        },
                        "id": 2641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4098:16:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2643,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13082,
                            "src": "4124:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                              "typeString": "contract RegistrarMigration"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_RegistrarMigration_$2773",
                              "typeString": "contract RegistrarMigration"
                            }
                          ],
                          "id": 2642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4116:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 2644,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4116:13:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2635,
                        "name": "oldENS",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2354,
                        "src": "4065:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OldENS_$2338",
                          "typeString": "contract OldENS"
                        }
                      },
                      "id": 2637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setSubnodeOwner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2295,
                      "src": "4065:22:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,bytes32,address) external"
                      }
                    },
                    "id": 2645,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4065:65:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2646,
                  "nodeType": "ExpressionStatement",
                  "src": "4065:65:9"
                }
              ]
            },
            "documentation": null,
            "id": 2648,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "doMigration",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2434,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2648,
                  "src": "1982:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2433,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1982:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2436,
                  "name": "registrant",
                  "nodeType": "VariableDeclaration",
                  "scope": 2648,
                  "src": "1999:18:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2435,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1999:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2438,
                  "name": "expires",
                  "nodeType": "VariableDeclaration",
                  "scope": 2648,
                  "src": "2019:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2437,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2019:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1981:51:9"
            },
            "returnParameters": {
              "id": 2440,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2042:0:9"
            },
            "scope": 2773,
            "src": "1961:2176:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2669,
              "nodeType": "Block",
              "src": "4274:144:9",
              "statements": [
                {
                  "assignments": [
                    2654
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2654,
                      "name": "registrant",
                      "nodeType": "VariableDeclaration",
                      "scope": 2669,
                      "src": "4284:18:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2653,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4284:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2659,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2657,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2650,
                        "src": "4326:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2655,
                        "name": "oldRegistrar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2350,
                        "src": "4305:12:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                          "typeString": "contract OldBaseRegistrarImplementation"
                        }
                      },
                      "id": 2656,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1839,
                      "src": "4305:20:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view external returns (address)"
                      }
                    },
                    "id": 2658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4305:29:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4284:50:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2661,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2650,
                        "src": "4356:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2662,
                        "name": "registrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2654,
                        "src": "4365:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2665,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2650,
                            "src": "4402:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 2663,
                            "name": "oldRegistrar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2350,
                            "src": "4377:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OldBaseRegistrarImplementation_$2264",
                              "typeString": "contract OldBaseRegistrarImplementation"
                            }
                          },
                          "id": 2664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "nameExpires",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1902,
                          "src": "4377:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view external returns (uint256)"
                          }
                        },
                        "id": 2666,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4377:33:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2660,
                      "name": "doMigration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2648,
                      "src": "4344:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,uint256)"
                      }
                    },
                    "id": 2667,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4344:67:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2668,
                  "nodeType": "ExpressionStatement",
                  "src": "4344:67:9"
                }
              ]
            },
            "documentation": "@dev Migrate a name from the previous version of the BaseRegistrar",
            "id": 2670,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2650,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2670,
                  "src": "4250:15:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4250:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4249:17:9"
            },
            "returnParameters": {
              "id": 2652,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4274:0:9"
            },
            "scope": 2773,
            "src": "4233:185:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2695,
              "nodeType": "Block",
              "src": "4582:103:9",
              "statements": [
                {
                  "body": {
                    "id": 2693,
                    "nodeType": "Block",
                    "src": "4634:45:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2688,
                                "name": "tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2673,
                                "src": "4656:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 2690,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2689,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2677,
                                "src": "4665:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4656:11:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2687,
                            "name": "migrate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2670,
                            "src": "4648:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2691,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4648:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2692,
                        "nodeType": "ExpressionStatement",
                        "src": "4648:20:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2680,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2677,
                      "src": "4608:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2681,
                        "name": "tokenIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2673,
                        "src": "4612:8:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 2682,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4612:15:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4608:19:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2694,
                  "initializationExpression": {
                    "assignments": [
                      2677
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2677,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2694,
                        "src": "4596:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2676,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4596:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2679,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2678,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4605:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4596:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2685,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4629:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2684,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2677,
                        "src": "4629:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2686,
                    "nodeType": "ExpressionStatement",
                    "src": "4629:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "4592:87:9"
                }
              ]
            },
            "documentation": "@dev Migrate a list of names from the previous version of the BaseRegistrar.",
            "id": 2696,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrateAll",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2674,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2673,
                  "name": "tokenIds",
                  "nodeType": "VariableDeclaration",
                  "scope": 2696,
                  "src": "4544:27:9",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2671,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4544:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2672,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4544:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4543:29:9"
            },
            "returnParameters": {
              "id": 2675,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4582:0:9"
            },
            "scope": 2773,
            "src": "4524:161:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2736,
              "nodeType": "Block",
              "src": "4822:245:9",
              "statements": [
                {
                  "assignments": [
                    2704,
                    2706,
                    null,
                    null,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2704,
                      "name": "mode",
                      "nodeType": "VariableDeclaration",
                      "scope": 2736,
                      "src": "4833:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Mode_$8867",
                        "typeString": "enum Registrar.Mode"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2703,
                        "name": "Registrar.Mode",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8867,
                        "src": "4833:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Mode_$8867",
                          "typeString": "enum Registrar.Mode"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2706,
                      "name": "deed",
                      "nodeType": "VariableDeclaration",
                      "scope": 2736,
                      "src": "4854:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2705,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4854:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null,
                    null,
                    null
                  ],
                  "id": 2711,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2709,
                        "name": "label",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2698,
                        "src": "4899:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2707,
                        "name": "legacyRegistrar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2346,
                        "src": "4875:15:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Registrar_$9022",
                          "typeString": "contract Registrar"
                        }
                      },
                      "id": 2708,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "entries",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9021,
                      "src": "4875:23:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_enum$_Mode_$8867_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (bytes32) view external returns (enum Registrar.Mode,address,uint256,uint256,uint256)"
                      }
                    },
                    "id": 2710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4875:30:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_Mode_$8867_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(enum Registrar.Mode,address,uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4832:73:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_Mode_$8867",
                          "typeString": "enum Registrar.Mode"
                        },
                        "id": 2717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2713,
                          "name": "mode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2704,
                          "src": "4923:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Mode_$8867",
                            "typeString": "enum Registrar.Mode"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2714,
                              "name": "Registrar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9022,
                              "src": "4931:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Registrar_$9022_$",
                                "typeString": "type(contract Registrar)"
                              }
                            },
                            "id": 2715,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Mode",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8867,
                            "src": "4931:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_Mode_$8867_$",
                              "typeString": "type(enum Registrar.Mode)"
                            }
                          },
                          "id": 2716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Owned",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4931:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Mode_$8867",
                            "typeString": "enum Registrar.Mode"
                          }
                        },
                        "src": "4923:28:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2712,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        13013,
                        13014
                      ],
                      "referencedDeclaration": 13013,
                      "src": "4915:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 2718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4915:37:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2719,
                  "nodeType": "ExpressionStatement",
                  "src": "4915:37:9"
                },
                {
                  "assignments": [
                    2721
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2721,
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "scope": 2736,
                      "src": "4962:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2720,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4962:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2727,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2723,
                            "name": "deed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2706,
                            "src": "4983:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2722,
                          "name": "Deed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6474,
                          "src": "4978:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Deed_$6474_$",
                            "typeString": "type(contract Deed)"
                          }
                        },
                        "id": 2724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4978:10:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Deed_$6474",
                          "typeString": "contract Deed"
                        }
                      },
                      "id": 2725,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "owner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6458,
                      "src": "4978:16:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 2726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4978:18:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4962:34:9"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2730,
                            "name": "label",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2698,
                            "src": "5026:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 2729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5018:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 2731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5018:14:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2732,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2721,
                        "src": "5034:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2733,
                        "name": "transferPeriodEnds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2348,
                        "src": "5041:18:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2728,
                      "name": "doMigration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2648,
                      "src": "5006:11:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,uint256)"
                      }
                    },
                    "id": 2734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5006:54:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2735,
                  "nodeType": "ExpressionStatement",
                  "src": "5006:54:9"
                }
              ]
            },
            "documentation": "@dev Migrate a name from the legacy (auction-based) registrar.",
            "id": 2737,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrateLegacy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2699,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2698,
                  "name": "label",
                  "nodeType": "VariableDeclaration",
                  "scope": 2737,
                  "src": "4800:13:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2697,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4800:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4799:15:9"
            },
            "returnParameters": {
              "id": 2700,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4822:0:9"
            },
            "scope": 2773,
            "src": "4777:290:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2762,
              "nodeType": "Block",
              "src": "5230:105:9",
              "statements": [
                {
                  "body": {
                    "id": 2760,
                    "nodeType": "Block",
                    "src": "5280:49:9",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2755,
                                "name": "labels",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2740,
                                "src": "5308:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                  "typeString": "bytes32[] calldata"
                                }
                              },
                              "id": 2757,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2756,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2744,
                                "src": "5315:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5308:9:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2754,
                            "name": "migrateLegacy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2737,
                            "src": "5294:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 2758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5294:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2759,
                        "nodeType": "ExpressionStatement",
                        "src": "5294:24:9"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2747,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2744,
                      "src": "5256:1:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2748,
                        "name": "labels",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2740,
                        "src": "5260:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      "id": 2749,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5260:13:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5256:17:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2761,
                  "initializationExpression": {
                    "assignments": [
                      2744
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2744,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2761,
                        "src": "5244:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2743,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5244:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2746,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2745,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5253:1:9",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5244:10:9"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2752,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5275:3:9",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2751,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2744,
                        "src": "5275:1:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2753,
                    "nodeType": "ExpressionStatement",
                    "src": "5275:3:9"
                  },
                  "nodeType": "ForStatement",
                  "src": "5240:89:9"
                }
              ]
            },
            "documentation": "@dev Migrate a list of names from the legacy (auction-based) registrar.",
            "id": 2763,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrateAllLegacy",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2741,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2740,
                  "name": "labels",
                  "nodeType": "VariableDeclaration",
                  "scope": 2763,
                  "src": "5194:25:9",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2738,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "5194:7:9",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 2739,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5194:9:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5193:27:9"
            },
            "returnParameters": {
              "id": 2742,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5230:0:9"
            },
            "scope": 2773,
            "src": "5168:167:9",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2771,
              "nodeType": "Block",
              "src": "5403:83:9",
              "statements": [
                {
                  "externalReferences": [
                    {
                      "ret": {
                        "declaration": 2768,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "5436:3:9",
                        "valueSize": 1
                      }
                    },
                    {
                      "addr": {
                        "declaration": 2765,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "5463:4:9",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 2770,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    ret := not(not(extcodesize(addr)))\n}",
                  "src": "5413:67:9"
                }
              ]
            },
            "documentation": null,
            "id": 2772,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hasCode",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2765,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 2772,
                  "src": "5358:12:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2764,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5358:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5357:14:9"
            },
            "returnParameters": {
              "id": 2769,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2768,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 2772,
                  "src": "5393:8:9",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2767,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5393:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5392:10:9"
            },
            "scope": 2773,
            "src": "5341:145:9",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 2774,
        "src": "808:4680:9"
      }
    ],
    "src": "0:5489:9"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-17T16:01:00.513Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}