{
  "contractName": "DNSSEC",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "id",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "AlgorithmUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "id",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "DigestUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "id",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "NSEC3DigestUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "rrset",
          "type": "bytes"
        }
      ],
      "name": "RRSetUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "anchors",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "proof",
          "type": "bytes"
        }
      ],
      "name": "submitRRSets",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "rrset",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "sig",
              "type": "bytes"
            }
          ],
          "internalType": "struct DNSSEC.RRSetWithSignature",
          "name": "input",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "proof",
          "type": "bytes"
        }
      ],
      "name": "submitRRSet",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "deleteType",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "deleteName",
          "type": "bytes"
        },
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "rrset",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "sig",
              "type": "bytes"
            }
          ],
          "internalType": "struct DNSSEC.RRSetWithSignature",
          "name": "nsec",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "proof",
          "type": "bytes"
        }
      ],
      "name": "deleteRRSet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "deleteType",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "deleteName",
          "type": "bytes"
        },
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "rrset",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "sig",
              "type": "bytes"
            }
          ],
          "internalType": "struct DNSSEC.RRSetWithSignature",
          "name": "closestEncloser",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "rrset",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "sig",
              "type": "bytes"
            }
          ],
          "internalType": "struct DNSSEC.RRSetWithSignature",
          "name": "nextClosest",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "dnskey",
          "type": "bytes"
        }
      ],
      "name": "deleteRRSetNSEC3",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "dnstype",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        }
      ],
      "name": "rrdata",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        },
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        },
        {
          "internalType": "bytes20",
          "name": "",
          "type": "bytes20"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.4+commit.3f05b770\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"AlgorithmUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"DigestUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"id\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"NSEC3DigestUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"}],\"name\":\"RRSetUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"anchors\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"deleteType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"deleteName\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature\",\"name\":\"nsec\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"deleteRRSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"deleteType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"deleteName\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature\",\"name\":\"closestEncloser\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature\",\"name\":\"nextClosest\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"dnskey\",\"type\":\"bytes\"}],\"name\":\"deleteRRSetNSEC3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"dnstype\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"}],\"name\":\"rrdata\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"bytes20\",\"name\":\"\",\"type\":\"bytes20\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"rrset\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct DNSSEC.RRSetWithSignature\",\"name\":\"input\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"submitRRSet\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"submitRRSets\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/arachnid/Dropbox/projects/enssec/contracts/DNSSEC.sol\":\"DNSSEC\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/arachnid/Dropbox/projects/enssec/contracts/DNSSEC.sol\":{\"keccak256\":\"0x8657b615b0d13ca3c52be359127af8d4251b845255cf870ac30f3541eaa62db8\",\"urls\":[\"bzz-raw://2db577b2144ea6b7439d7a244b931b704ecea548bba5707df57528b56d528c81\",\"dweb:/ipfs/QmbjYLu3w6DrLvvY9fFCFBUc2mfjjvj2ULeEBKw6FXHR6q\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.7.4;\npragma experimental ABIEncoderV2;\n\nabstract contract DNSSEC {\n\n    bytes public anchors;\n\n    struct RRSetWithSignature {\n        bytes rrset;\n        bytes sig;\n    }\n\n    event AlgorithmUpdated(uint8 id, address addr);\n    event DigestUpdated(uint8 id, address addr);\n    event NSEC3DigestUpdated(uint8 id, address addr);\n    event RRSetUpdated(bytes name, bytes rrset);\n\n    function submitRRSets(bytes calldata data, bytes calldata proof) public virtual returns (bytes memory);\n    function submitRRSet(RRSetWithSignature calldata input, bytes calldata proof) public virtual returns (bytes memory);\n    function deleteRRSet(uint16 deleteType, bytes calldata deleteName, RRSetWithSignature calldata nsec, bytes calldata proof) public virtual;\n    function deleteRRSetNSEC3(uint16 deleteType, bytes memory deleteName, RRSetWithSignature memory closestEncloser, RRSetWithSignature memory nextClosest, bytes memory dnskey) public virtual;\n    function rrdata(uint16 dnstype, bytes calldata name) external virtual view returns (uint32, uint64, bytes20);\n}\n",
  "sourcePath": "/home/arachnid/Dropbox/projects/enssec/contracts/DNSSEC.sol",
  "ast": {
    "absolutePath": "/home/arachnid/Dropbox/projects/enssec/contracts/DNSSEC.sol",
    "exportedSymbols": {
      "DNSSEC": [
        820
      ]
    },
    "id": 821,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 732,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:1"
      },
      {
        "id": 733,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "24:33:1"
      },
      {
        "abstract": true,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": false,
        "id": 820,
        "linearizedBaseContracts": [
          820
        ],
        "name": "DNSSEC",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "98d35f20",
            "id": 735,
            "mutability": "mutable",
            "name": "anchors",
            "nodeType": "VariableDeclaration",
            "scope": 820,
            "src": "91:20:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_storage",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 734,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "91:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "visibility": "public"
          },
          {
            "canonicalName": "DNSSEC.RRSetWithSignature",
            "id": 740,
            "members": [
              {
                "constant": false,
                "id": 737,
                "mutability": "mutable",
                "name": "rrset",
                "nodeType": "VariableDeclaration",
                "scope": 740,
                "src": "154:11:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 736,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "154:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 739,
                "mutability": "mutable",
                "name": "sig",
                "nodeType": "VariableDeclaration",
                "scope": 740,
                "src": "175:9:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 738,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "175:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "RRSetWithSignature",
            "nodeType": "StructDefinition",
            "scope": 820,
            "src": "118:73:1",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "id": 746,
            "name": "AlgorithmUpdated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 742,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "220:8:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 741,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "220:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 744,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "230:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 743,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "230:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "219:24:1"
            },
            "src": "197:47:1"
          },
          {
            "anonymous": false,
            "id": 752,
            "name": "DigestUpdated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 751,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 748,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 752,
                  "src": "269:8:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 747,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "269:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 750,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 752,
                  "src": "279:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 749,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "279:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "268:24:1"
            },
            "src": "249:44:1"
          },
          {
            "anonymous": false,
            "id": 758,
            "name": "NSEC3DigestUpdated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 754,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 758,
                  "src": "323:8:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 753,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "323:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 756,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 758,
                  "src": "333:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 755,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "333:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "322:24:1"
            },
            "src": "298:49:1"
          },
          {
            "anonymous": false,
            "id": 764,
            "name": "RRSetUpdated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 763,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 760,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 764,
                  "src": "371:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 759,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "371:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 762,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "rrset",
                  "nodeType": "VariableDeclaration",
                  "scope": 764,
                  "src": "383:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 761,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "383:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "370:25:1"
            },
            "src": "352:44:1"
          },
          {
            "functionSelector": "76a14d1d",
            "id": 773,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "submitRRSets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 769,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 766,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 773,
                  "src": "424:19:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 765,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "424:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 768,
                  "mutability": "mutable",
                  "name": "proof",
                  "nodeType": "VariableDeclaration",
                  "scope": 773,
                  "src": "445:20:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 767,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "445:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "423:43:1"
            },
            "returnParameters": {
              "id": 772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 771,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 773,
                  "src": "491:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 770,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "491:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "490:14:1"
            },
            "scope": 820,
            "src": "402:103:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "functionSelector": "d7b82ebe",
            "id": 782,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "submitRRSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 775,
                  "mutability": "mutable",
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "531:33:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRSetWithSignature_$740_calldata_ptr",
                    "typeString": "struct DNSSEC.RRSetWithSignature"
                  },
                  "typeName": {
                    "id": 774,
                    "name": "RRSetWithSignature",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 740,
                    "src": "531:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRSetWithSignature_$740_storage_ptr",
                      "typeString": "struct DNSSEC.RRSetWithSignature"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 777,
                  "mutability": "mutable",
                  "name": "proof",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "566:20:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 776,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "566:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "530:57:1"
            },
            "returnParameters": {
              "id": 781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 780,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "612:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 779,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "612:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "611:14:1"
            },
            "scope": 820,
            "src": "510:116:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "functionSelector": "2c095cbb",
            "id": 793,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "deleteRRSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 784,
                  "mutability": "mutable",
                  "name": "deleteType",
                  "nodeType": "VariableDeclaration",
                  "scope": 793,
                  "src": "652:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 783,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "652:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 786,
                  "mutability": "mutable",
                  "name": "deleteName",
                  "nodeType": "VariableDeclaration",
                  "scope": 793,
                  "src": "671:25:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 785,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "671:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 788,
                  "mutability": "mutable",
                  "name": "nsec",
                  "nodeType": "VariableDeclaration",
                  "scope": 793,
                  "src": "698:32:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRSetWithSignature_$740_calldata_ptr",
                    "typeString": "struct DNSSEC.RRSetWithSignature"
                  },
                  "typeName": {
                    "id": 787,
                    "name": "RRSetWithSignature",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 740,
                    "src": "698:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRSetWithSignature_$740_storage_ptr",
                      "typeString": "struct DNSSEC.RRSetWithSignature"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 790,
                  "mutability": "mutable",
                  "name": "proof",
                  "nodeType": "VariableDeclaration",
                  "scope": 793,
                  "src": "732:20:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 789,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "732:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "651:102:1"
            },
            "returnParameters": {
              "id": 792,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "768:0:1"
            },
            "scope": 820,
            "src": "631:138:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "functionSelector": "0b1a2495",
            "id": 806,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "deleteRRSetNSEC3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 804,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 795,
                  "mutability": "mutable",
                  "name": "deleteType",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "800:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 794,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "800:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 797,
                  "mutability": "mutable",
                  "name": "deleteName",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "819:23:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 796,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "819:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 799,
                  "mutability": "mutable",
                  "name": "closestEncloser",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "844:41:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRSetWithSignature_$740_memory_ptr",
                    "typeString": "struct DNSSEC.RRSetWithSignature"
                  },
                  "typeName": {
                    "id": 798,
                    "name": "RRSetWithSignature",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 740,
                    "src": "844:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRSetWithSignature_$740_storage_ptr",
                      "typeString": "struct DNSSEC.RRSetWithSignature"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 801,
                  "mutability": "mutable",
                  "name": "nextClosest",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "887:37:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRSetWithSignature_$740_memory_ptr",
                    "typeString": "struct DNSSEC.RRSetWithSignature"
                  },
                  "typeName": {
                    "id": 800,
                    "name": "RRSetWithSignature",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 740,
                    "src": "887:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRSetWithSignature_$740_storage_ptr",
                      "typeString": "struct DNSSEC.RRSetWithSignature"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 803,
                  "mutability": "mutable",
                  "name": "dnskey",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "926:19:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 802,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "926:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "799:147:1"
            },
            "returnParameters": {
              "id": 805,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "961:0:1"
            },
            "scope": 820,
            "src": "774:188:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "functionSelector": "087991bc",
            "id": 819,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "rrdata",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 808,
                  "mutability": "mutable",
                  "name": "dnstype",
                  "nodeType": "VariableDeclaration",
                  "scope": 819,
                  "src": "983:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 807,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "983:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 810,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 819,
                  "src": "999:19:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 809,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "999:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "982:37:1"
            },
            "returnParameters": {
              "id": 818,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 813,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 819,
                  "src": "1051:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 812,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1051:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 815,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 819,
                  "src": "1059:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 814,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1059:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 817,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 819,
                  "src": "1067:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 816,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "1067:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1050:25:1"
            },
            "scope": 820,
            "src": "967:109:1",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          }
        ],
        "scope": 821,
        "src": "59:1019:1"
      }
    ],
    "src": "0:1079:1"
  },
  "legacyAST": {
    "absolutePath": "/home/arachnid/Dropbox/projects/enssec/contracts/DNSSEC.sol",
    "exportedSymbols": {
      "DNSSEC": [
        820
      ]
    },
    "id": 821,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 732,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:1"
      },
      {
        "id": 733,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "24:33:1"
      },
      {
        "abstract": true,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": false,
        "id": 820,
        "linearizedBaseContracts": [
          820
        ],
        "name": "DNSSEC",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "98d35f20",
            "id": 735,
            "mutability": "mutable",
            "name": "anchors",
            "nodeType": "VariableDeclaration",
            "scope": 820,
            "src": "91:20:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_storage",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 734,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "91:5:1",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "visibility": "public"
          },
          {
            "canonicalName": "DNSSEC.RRSetWithSignature",
            "id": 740,
            "members": [
              {
                "constant": false,
                "id": 737,
                "mutability": "mutable",
                "name": "rrset",
                "nodeType": "VariableDeclaration",
                "scope": 740,
                "src": "154:11:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 736,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "154:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 739,
                "mutability": "mutable",
                "name": "sig",
                "nodeType": "VariableDeclaration",
                "scope": 740,
                "src": "175:9:1",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 738,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "175:5:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "RRSetWithSignature",
            "nodeType": "StructDefinition",
            "scope": 820,
            "src": "118:73:1",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "id": 746,
            "name": "AlgorithmUpdated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 745,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 742,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "220:8:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 741,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "220:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 744,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 746,
                  "src": "230:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 743,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "230:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "219:24:1"
            },
            "src": "197:47:1"
          },
          {
            "anonymous": false,
            "id": 752,
            "name": "DigestUpdated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 751,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 748,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 752,
                  "src": "269:8:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 747,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "269:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 750,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 752,
                  "src": "279:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 749,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "279:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "268:24:1"
            },
            "src": "249:44:1"
          },
          {
            "anonymous": false,
            "id": 758,
            "name": "NSEC3DigestUpdated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 754,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 758,
                  "src": "323:8:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 753,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "323:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 756,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 758,
                  "src": "333:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 755,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "333:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "322:24:1"
            },
            "src": "298:49:1"
          },
          {
            "anonymous": false,
            "id": 764,
            "name": "RRSetUpdated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 763,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 760,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 764,
                  "src": "371:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 759,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "371:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 762,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "rrset",
                  "nodeType": "VariableDeclaration",
                  "scope": 764,
                  "src": "383:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 761,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "383:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "370:25:1"
            },
            "src": "352:44:1"
          },
          {
            "functionSelector": "76a14d1d",
            "id": 773,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "submitRRSets",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 769,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 766,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 773,
                  "src": "424:19:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 765,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "424:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 768,
                  "mutability": "mutable",
                  "name": "proof",
                  "nodeType": "VariableDeclaration",
                  "scope": 773,
                  "src": "445:20:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 767,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "445:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "423:43:1"
            },
            "returnParameters": {
              "id": 772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 771,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 773,
                  "src": "491:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 770,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "491:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "490:14:1"
            },
            "scope": 820,
            "src": "402:103:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "functionSelector": "d7b82ebe",
            "id": 782,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "submitRRSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 775,
                  "mutability": "mutable",
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "531:33:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRSetWithSignature_$740_calldata_ptr",
                    "typeString": "struct DNSSEC.RRSetWithSignature"
                  },
                  "typeName": {
                    "id": 774,
                    "name": "RRSetWithSignature",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 740,
                    "src": "531:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRSetWithSignature_$740_storage_ptr",
                      "typeString": "struct DNSSEC.RRSetWithSignature"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 777,
                  "mutability": "mutable",
                  "name": "proof",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "566:20:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 776,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "566:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "530:57:1"
            },
            "returnParameters": {
              "id": 781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 780,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 782,
                  "src": "612:12:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 779,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "612:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "611:14:1"
            },
            "scope": 820,
            "src": "510:116:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "functionSelector": "2c095cbb",
            "id": 793,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "deleteRRSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 784,
                  "mutability": "mutable",
                  "name": "deleteType",
                  "nodeType": "VariableDeclaration",
                  "scope": 793,
                  "src": "652:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 783,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "652:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 786,
                  "mutability": "mutable",
                  "name": "deleteName",
                  "nodeType": "VariableDeclaration",
                  "scope": 793,
                  "src": "671:25:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 785,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "671:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 788,
                  "mutability": "mutable",
                  "name": "nsec",
                  "nodeType": "VariableDeclaration",
                  "scope": 793,
                  "src": "698:32:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRSetWithSignature_$740_calldata_ptr",
                    "typeString": "struct DNSSEC.RRSetWithSignature"
                  },
                  "typeName": {
                    "id": 787,
                    "name": "RRSetWithSignature",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 740,
                    "src": "698:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRSetWithSignature_$740_storage_ptr",
                      "typeString": "struct DNSSEC.RRSetWithSignature"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 790,
                  "mutability": "mutable",
                  "name": "proof",
                  "nodeType": "VariableDeclaration",
                  "scope": 793,
                  "src": "732:20:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 789,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "732:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "651:102:1"
            },
            "returnParameters": {
              "id": 792,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "768:0:1"
            },
            "scope": 820,
            "src": "631:138:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "functionSelector": "0b1a2495",
            "id": 806,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "deleteRRSetNSEC3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 804,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 795,
                  "mutability": "mutable",
                  "name": "deleteType",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "800:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 794,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "800:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 797,
                  "mutability": "mutable",
                  "name": "deleteName",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "819:23:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 796,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "819:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 799,
                  "mutability": "mutable",
                  "name": "closestEncloser",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "844:41:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRSetWithSignature_$740_memory_ptr",
                    "typeString": "struct DNSSEC.RRSetWithSignature"
                  },
                  "typeName": {
                    "id": 798,
                    "name": "RRSetWithSignature",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 740,
                    "src": "844:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRSetWithSignature_$740_storage_ptr",
                      "typeString": "struct DNSSEC.RRSetWithSignature"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 801,
                  "mutability": "mutable",
                  "name": "nextClosest",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "887:37:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RRSetWithSignature_$740_memory_ptr",
                    "typeString": "struct DNSSEC.RRSetWithSignature"
                  },
                  "typeName": {
                    "id": 800,
                    "name": "RRSetWithSignature",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 740,
                    "src": "887:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RRSetWithSignature_$740_storage_ptr",
                      "typeString": "struct DNSSEC.RRSetWithSignature"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 803,
                  "mutability": "mutable",
                  "name": "dnskey",
                  "nodeType": "VariableDeclaration",
                  "scope": 806,
                  "src": "926:19:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 802,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "926:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "799:147:1"
            },
            "returnParameters": {
              "id": 805,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "961:0:1"
            },
            "scope": 820,
            "src": "774:188:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "functionSelector": "087991bc",
            "id": 819,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "rrdata",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 808,
                  "mutability": "mutable",
                  "name": "dnstype",
                  "nodeType": "VariableDeclaration",
                  "scope": 819,
                  "src": "983:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 807,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "983:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 810,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 819,
                  "src": "999:19:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 809,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "999:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "982:37:1"
            },
            "returnParameters": {
              "id": 818,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 813,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 819,
                  "src": "1051:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 812,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1051:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 815,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 819,
                  "src": "1059:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 814,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1059:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 817,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 819,
                  "src": "1067:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 816,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "1067:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1050:25:1"
            },
            "scope": 820,
            "src": "967:109:1",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "external"
          }
        ],
        "scope": 821,
        "src": "59:1019:1"
      }
    ],
    "src": "0:1079:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.4+commit.3f05b770.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.2",
  "updatedAt": "2021-01-20T20:53:41.113Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}