{
  "contractName": "EthSign",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "LogAddedNewSignerForDocument",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "party",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "LogArchivedDocument",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "provider",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "storage_id0",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "storage_id1",
          "type": "bytes32"
        }
      ],
      "name": "LogChangedDocumentStorage",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newInitiator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "LogChangedInitiator",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "provider",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "storage_id0",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "storage_id1",
          "type": "bytes32"
        }
      ],
      "name": "LogChangedMetadataStorage",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "LogContractPaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "LogContractUnpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "author",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "provider",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "storage_id0",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "storage_id1",
          "type": "bytes32"
        }
      ],
      "name": "LogEditedCommentOnDocument",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "author",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "provider",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "storage_id0",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "storage_id1",
          "type": "bytes32"
        }
      ],
      "name": "LogLeftNewCommentOnDocument",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentName",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numOfSigners",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "expiration",
          "type": "uint256"
        }
      ],
      "name": "LogNewDocument",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "number",
          "type": "uint256"
        }
      ],
      "name": "LogSetNumberOfSignatureFields",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "signer",
          "type": "address"
        }
      ],
      "name": "LogSignedDocument",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "LogSignedDocumentSignatureField",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uuid",
          "type": "string"
        }
      ],
      "name": "hashDocumentKey",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "splitECSignature",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "verifyECSignatureSigner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "hashSaltedDocumentMappingKey",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "hashSaltedMetaDocumentMappingKey",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        }
      ],
      "name": "hashSaltedAddressMappingKey",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "hashSaltedAddressWithIndexMappingKeyAsSigner",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "getDocumentBasicInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "name",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "birth",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiration",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "numOfSigners",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "getDocumentDocStorageInfo",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "docStorageProvider",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "docStorage_id0",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "docStorage_id1",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "getDocumentMetaStorageInfo",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "metaStorageProvider",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "metaStorage_id0",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "metaStorage_id1",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "getNumberOfSignersForDocument",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "count",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getDocumentSignerAtIndex",
      "outputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "getDocumentRSVForLegacySigner",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        },
        {
          "internalType": "uint8[]",
          "name": "",
          "type": "uint8[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "getDocumentECDSAForSigner",
      "outputs": [
        {
          "internalType": "bytes[20]",
          "name": "signatures",
          "type": "bytes[20]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "getDocumentCommentsForSigner",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "provider",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "storage_id0",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "storage_id1",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "getDocumentStatus",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalSigners",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "signedSigners",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "aggregateGetIsSignedForAllSignatureFields",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "signer",
              "type": "address"
            },
            {
              "internalType": "bool[]",
              "name": "fieldSigned",
              "type": "bool[]"
            }
          ],
          "internalType": "struct IEthSign._HelperSignerSignatureFieldStatus[]",
          "name": "fieldSignedInfo",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "aggregateGetAllCommentsOfAllSigners",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "signer",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "provider",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "storage_id0",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "storage_id1",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct IEthSign.StorageInfo",
              "name": "commentStorageInfo",
              "type": "tuple"
            }
          ],
          "internalType": "struct IEthSign._HelperCommentInfo[]",
          "name": "hci",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "provider",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "storage_id0",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "storage_id1",
          "type": "bytes32"
        }
      ],
      "name": "setDocumentCommentsAsSigner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        }
      ],
      "name": "clearDocumentCommentsAsInitiator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "documentKeys",
          "type": "bytes32[]"
        }
      ],
      "name": "archiveDocuments",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "name",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "expiration",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "numOfSigners",
          "type": "uint256"
        },
        {
          "internalType": "bytes32[3]",
          "name": "providers",
          "type": "bytes32[3]"
        },
        {
          "internalType": "bytes32[6]",
          "name": "storage_ids",
          "type": "bytes32[6]"
        },
        {
          "internalType": "address[]",
          "name": "signers",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "numOfSigFields",
          "type": "uint256[]"
        }
      ],
      "name": "aggregateNewBasicDocumentAndSetStorage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "indices",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes[]",
          "name": "signatures",
          "type": "bytes[]"
        }
      ],
      "name": "aggregateSetSigFieldForDocument",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "internalType": "uint256[]",
          "name": "indices",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes[]",
          "name": "signatures",
          "type": "bytes[]"
        },
        {
          "internalType": "bytes32[3]",
          "name": "storageInfo",
          "type": "bytes32[3]"
        }
      ],
      "name": "aggregateSetSigFieldsAndCommentsAsSigner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "documentKey",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newInitiator",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "changeInitiator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"LogAddedNewSignerForDocument\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"party\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"LogArchivedDocument\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"provider\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"storage_id0\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"storage_id1\",\"type\":\"bytes32\"}],\"name\":\"LogChangedDocumentStorage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newInitiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"LogChangedInitiator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"provider\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"storage_id0\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"storage_id1\",\"type\":\"bytes32\"}],\"name\":\"LogChangedMetadataStorage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"LogContractPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"LogContractUnpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"author\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"provider\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"storage_id0\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"storage_id1\",\"type\":\"bytes32\"}],\"name\":\"LogEditedCommentOnDocument\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"author\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"provider\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"storage_id0\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"storage_id1\",\"type\":\"bytes32\"}],\"name\":\"LogLeftNewCommentOnDocument\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentName\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numOfSigners\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expiration\",\"type\":\"uint256\"}],\"name\":\"LogNewDocument\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"name\":\"LogSetNumberOfSignatureFields\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"LogSignedDocument\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"LogSignedDocumentSignatureField\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"aggregateGetAllCommentsOfAllSigners\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"provider\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"storage_id0\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"storage_id1\",\"type\":\"bytes32\"}],\"internalType\":\"struct IEthSign.StorageInfo\",\"name\":\"commentStorageInfo\",\"type\":\"tuple\"}],\"internalType\":\"struct IEthSign._HelperCommentInfo[]\",\"name\":\"hci\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"aggregateGetIsSignedForAllSignatureFields\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bool[]\",\"name\":\"fieldSigned\",\"type\":\"bool[]\"}],\"internalType\":\"struct IEthSign._HelperSignerSignatureFieldStatus[]\",\"name\":\"fieldSignedInfo\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numOfSigners\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[3]\",\"name\":\"providers\",\"type\":\"bytes32[3]\"},{\"internalType\":\"bytes32[6]\",\"name\":\"storage_ids\",\"type\":\"bytes32[6]\"},{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"numOfSigFields\",\"type\":\"uint256[]\"}],\"name\":\"aggregateNewBasicDocumentAndSetStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"aggregateSetSigFieldForDocument\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes32[3]\",\"name\":\"storageInfo\",\"type\":\"bytes32[3]\"}],\"name\":\"aggregateSetSigFieldsAndCommentsAsSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"documentKeys\",\"type\":\"bytes32[]\"}],\"name\":\"archiveDocuments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newInitiator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"changeInitiator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"clearDocumentCommentsAsInitiator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"getDocumentBasicInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"birth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"numOfSigners\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"getDocumentCommentsForSigner\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"provider\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"storage_id0\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"storage_id1\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"getDocumentDocStorageInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"docStorageProvider\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"docStorage_id0\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"docStorage_id1\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"getDocumentECDSAForSigner\",\"outputs\":[{\"internalType\":\"bytes[20]\",\"name\":\"signatures\",\"type\":\"bytes[20]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"getDocumentMetaStorageInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"metaStorageProvider\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"metaStorage_id0\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"metaStorage_id1\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"getDocumentRSVForLegacySigner\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getDocumentSignerAtIndex\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"getDocumentStatus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSigners\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"signedSigners\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"getNumberOfSignersForDocument\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uuid\",\"type\":\"string\"}],\"name\":\"hashDocumentKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"hashSaltedAddressMappingKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"hashSaltedAddressWithIndexMappingKeyAsSigner\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"hashSaltedDocumentMappingKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"}],\"name\":\"hashSaltedMetaDocumentMappingKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"documentKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"provider\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"storage_id0\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"storage_id1\",\"type\":\"bytes32\"}],\"name\":\"setDocumentCommentsAsSigner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"splitECSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verifyECSignatureSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"EthSign 3.0 Smart Contract with ERC2771 compliance. Please read this before modifying storage: https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable\",\"kind\":\"dev\",\"methods\":{\"aggregateGetAllCommentsOfAllSigners(bytes32)\":{\"details\":\"Gets the comment file of each signer in a document.\",\"params\":{\"documentKey\":\"The documentKey of the document of interest.\"},\"returns\":{\"hci\":\".\"}},\"aggregateGetIsSignedForAllSignatureFields(bytes32)\":{\"details\":\"Gets the status of each signature field of each signer in a document.\",\"params\":{\"documentKey\":\"The documentKey of the document of interest.\"},\"returns\":{\"fieldSignedInfo\":\".\"}},\"aggregateNewBasicDocumentAndSetStorage(bytes32,bytes32,uint256,uint256,bytes32[3],bytes32[6],address[],uint256[])\":{\"details\":\"Creates a new document.\",\"params\":{\"documentKey\":\"The documentKey of the new document. Will revert if documentKey exists.\",\"expiration\":\"The intended expiration block of the new document.\",\"name\":\"The name of the new document.\",\"numOfSigners\":\"The intended total number of signers. Please note signers are added in a separate step.\",\"providers\":\"The document, metadata, and comment storage providers in an ordered array.\",\"storage_ids\":\"The document storage and metadata storage CIDs in an ordered array: `[doc_storage_id0, doc_storage_id1, meta_storage_id0, meta_storage_id1, comment_storage_id0, comment_storage_id1]`. Emits LogNewDocument, LogChangedDocumentStorage, LogChangedMetadataStorage Optionally emits LogLeftNewCommentOnDocument\"}},\"aggregateSetSigFieldForDocument(bytes32,address,uint256[],bytes[])\":{\"details\":\"Populates all assigned signature fields in a document with their ECDSA signatures.\",\"params\":{\"documentKey\":\"The documentKey of the specified document. Will revert if documentKey does not exist.\",\"indices\":\"An ordered array, includes the index of the signature fields of each signer in the document.\",\"signatures\":\"The ordered raw ECDSA signatures. Emits LogSignedDocumentSignatureField Optionally emit LogSignedDocument\"}},\"aggregateSetSigFieldsAndCommentsAsSigner(bytes32,uint256[],bytes[],bytes32[3])\":{\"details\":\"Sets signature fields and comments in one transaction.\",\"params\":{\"documentKey\":\"The documentKey of the specified document. Will revert if documentKey does not exist.\",\"indices\":\"An ordered array, includes the index of the signature fields of each signer in the document.\",\"signatures\":\"The ordered raw ECDSA signatures.\",\"storageInfo\":\"An ordered array consisting of: provider, storage_id0, storage_id1.\"}},\"archiveDocuments(bytes32[])\":{\"details\":\"Archives the specified documents as a signer (does not affect other signers).\",\"params\":{\"documentKeys\":\"The documentKeys of the specified documents. Will revert if any documentKey does not exist.\"}},\"changeInitiator(bytes32,address,bytes)\":{\"details\":\"Changes the initiator of a new document with permission from the previous initiator.\",\"params\":{\"documentKey\":\"The documentKey of the specified document. Will revert if documentKey does not exist.\",\"newInitiator\":\"The new initiator.\",\"signature\":\"The raw ECDSA signature from the previous initiator, which will be validated on-chain. Will revert if validation fails.\"}},\"clearDocumentCommentsAsInitiator(bytes32)\":{\"details\":\"Clears the comment XFDF metadata file for a signers of a document as the initiator.\",\"params\":{\"documentKey\":\"The documentKey of the specified document. Will revert if documentKey does not exist.\"}},\"getDocumentBasicInfo(bytes32)\":{\"details\":\"Retrieves basic information of a document.\",\"params\":{\"documentKey\":\"The documentKey of the document of interest.\"},\"returns\":{\"birth\":\"The block number when the document is created.\",\"expiration\":\"The expiration block of the document.\",\"initiator\":\"The initiator of this document.\",\"name\":\"The name of the document.\",\"numOfSigners\":\"The total number of signers for this document.\"}},\"getDocumentCommentsForSigner(address,bytes32)\":{\"details\":\"Gets the comment XFDF metadata file of a signer at an index in a document.\",\"params\":{\"documentKey\":\"The documentKey of the document of interest.\",\"signer\":\"The address of the signer.\"},\"returns\":{\"provider\":\"The storage provider. For example, IP = IPFS, AR = Arweave.\",\"storage_id0\":\"The first part of the CID.\",\"storage_id1\":\"The second part of the CID (if applicable).\"}},\"getDocumentDocStorageInfo(bytes32)\":{\"details\":\"Retrieves storage information of a document.\",\"params\":{\"documentKey\":\"The documentKey of the document of interest.\"},\"returns\":{\"docStorageProvider\":\"The storage provider. For example, IP = IPFS, AR = Arweave.\",\"docStorage_id0\":\"The first part of the CID.\",\"docStorage_id1\":\"The second part of the CID (if applicable).\"}},\"getDocumentECDSAForSigner(address,bytes32)\":{\"details\":\"Gets the raw ECDSA signature of a signer in a document.\",\"params\":{\"documentKey\":\"The documentKey of the document of interest.\",\"signer\":\"The address of the signer.\"},\"returns\":{\"signatures\":\"All raw ECDSA signatures of a signer in the document.\"}},\"getDocumentMetaStorageInfo(bytes32)\":{\"details\":\"Retrieves metadata annontation storage information of a document.\",\"params\":{\"documentKey\":\"The documentKey of the document of interest.\"},\"returns\":{\"metaStorageProvider\":\"The storage provider. For example, IP = IPFS, AR = Arweave.\",\"metaStorage_id0\":\"The first part of the CID.\",\"metaStorage_id1\":\"The second part of the CID (if applicable).\"}},\"getDocumentRSVForLegacySigner(address,bytes32)\":{\"details\":\"(Legacy) Gets all split ECDSA signatures of a signer in a document.\",\"params\":{\"documentKey\":\"The documentKey of the document of interest.\",\"signer\":\"The address of the signer.\"},\"returns\":{\"_0\":\"The r values of the ECDSA signature.\",\"_1\":\"The s values of the ECDSA signature.\",\"_2\":\"The v values of the ECDSA signature.\"}},\"getDocumentSignerAtIndex(bytes32,uint256)\":{\"details\":\"Gets the address of the signer at the provided index in a document. Unordered, used to iterate.\",\"params\":{\"documentKey\":\"The documentKey of the document of interest.\",\"index\":\"The index of the signer in the specified document.\"},\"returns\":{\"signer\":\"The address of the signer at the provided index.\"}},\"getDocumentStatus(bytes32)\":{\"details\":\"Gets the status of a document.\",\"params\":{\"documentKey\":\"The documentKey of the document of interest.\"},\"returns\":{\"signedSigners\":\"The number of signers who have signed all signature fields.\",\"totalSigners\":\"The total number of signers.\"}},\"getNumberOfSignersForDocument(bytes32)\":{\"details\":\"Gets the total number of signers added to a document.\",\"params\":{\"documentKey\":\"The documentKey of the document of interest.\"},\"returns\":{\"count\":\"The number of signers in total for the specified document.\"}},\"hashDocumentKey(string)\":{\"details\":\"Hashes the input string using `keccak256(abi.encodePacked())`.\",\"params\":{\"uuid\":\"The input string, usually UUID v4. But really, this is no restriction.\"}},\"hashSaltedAddressMappingKey(bytes32,address)\":{\"details\":\"Generates a mapping key by packing document key, document storage information, document metadata storage information, and the signer's address.\",\"params\":{\"documentKey\":\"A valid documentKey, although there is no check.\",\"signer\":\"The signer's address.\"}},\"hashSaltedAddressWithIndexMappingKeyAsSigner(bytes32,uint256)\":{\"details\":\"Generates a mapping key by packing document key, document storage information, document metadata storage information, msg.sender, and the signature field index.\",\"params\":{\"documentKey\":\"A valid documentKey, although there is no check.\",\"index\":\"The signature field index.\"}},\"hashSaltedDocumentMappingKey(bytes32)\":{\"details\":\"Generates a mapping key by packing document key and document storage information.\",\"params\":{\"documentKey\":\"A valid documentKey, although there is no check.\"}},\"hashSaltedMetaDocumentMappingKey(bytes32)\":{\"details\":\"Generates a mapping key by packing document key, document storage information, and document metadata storage information.\",\"params\":{\"documentKey\":\"A valid documentKey, although there is no check.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setDocumentCommentsAsSigner(bytes32,bytes32,bytes32,bytes32)\":{\"details\":\"Sets the comment XFDF metadata file for a specified and current document as a signer.\",\"params\":{\"documentKey\":\"The documentKey of the specified document. Will revert if documentKey does not exist.\",\"provider\":\"The storage provider. For example, IP = IPFS, AR = Arweave.\",\"storage_id0\":\"The first part of the CID.\",\"storage_id1\":\"The second part of the CID (if applicable).\"}},\"splitECSignature(bytes)\":{\"details\":\"Splits a given ECDSA signature into r, s, v.\",\"params\":{\"signature\":\"The raw ECDSA signature.\"},\"returns\":{\"r\":\"The r value of the ECDSA signature.\",\"s\":\"The s value of the ECDSA signature.\",\"v\":\"The v value of the ECDSA signature.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"verifyECSignatureSigner(address,bytes32,bytes)\":{\"details\":\"Verifies if a given ECDSA signature is authentic.\",\"params\":{\"hash\":\"The signed data, usually a hash.\",\"signature\":\"The raw ECDSA signature.\",\"signer\":\"The signer's address.\"}}},\"title\":\"EthSign 3.0\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/EthSign.sol\":\"EthSign\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc68cad93ce702131a09334e8705d4af062278defa99627a2c94685fb96ff8cc4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6839a7f9fdb061559b6192c64fc919c83cad99bf0ff4663f249f8409d9f88abf\",\"dweb:/ipfs/QmS6DzcqHkD8TipTTZ94FthQjBhX81sfYtAQQC9Qzifxxm\"]},\"@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.sol\":{\"keccak256\":\"0x9ca4e168e784d76251ec140216e583cfbfaafd9434f8ab3c69a0285405914733\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ff1c1430d83f0381b48101dc349653688a41ab5cad3a4f807494376f0f6997\",\"dweb:/ipfs/QmSoXewGkMsNDY8FNVZZyiVqaeucZViCDtyX3XYtwf6Nfk\"]},\"@openzeppelin/contracts-upgradeable/metatx/ERC2771ContextUpgradeable.sol\":{\"keccak256\":\"0x780285678fd5d78a0af3d744a902fb88a826229fba615928c6c4800a0397864c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33f85eb98c85af65bffd1576a06f3e48ac498b4bfaa0eeb05f3d615a4e01493a\",\"dweb:/ipfs/QmWD7TS5JKdqHQZSkR4gyDEMQX7noDdk2P75aZtqcmoXbB\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x67d2f282a9678e58e878a0b774041ba7a01e2740a262aea97a3f681339914713\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://297df5725003e586651278a5d021b176457c5bb05a954c8490f21db2754e7352\",\"dweb:/ipfs/QmSe9AHjVnDn39NqT9hkjuCCGUwtc989WuZ5rWTe3GHrUD\"]},\"@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol\":{\"keccak256\":\"0x742c0fbab73bf595ca40025f6e81cb48dbd5e133950717f7befd062a925c0148\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://104b5ce52aba5c5f57735005b5869e8c97232a9ac6a37a8dcdf8dc38e17ea5aa\",\"dweb:/ipfs/QmRdWh7R1oYzZMAAwwGUu8Sw18ChMAyCXD513RidThvjuZ\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x5642ae1d6b33c5c0b71a8412c6c64cbcf2468b84a002bee3e33cdb5644d25cdb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07ba474854eacf022fca2ab63af2b09653f476a9ef2d144ea3d022a0c0b92726\",\"dweb:/ipfs/QmVNfrArMejFSrPMktAtDte64FJ2fGPQHqgSXDz2SH6dse\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x8e9eb503de1189f50c5f16fef327da310b11898d6b9ab3ca937df07c35233b9e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9631a7abcad07067f268b6295668a287e205ea9a8dc0fca02c2bf4db6c39431d\",\"dweb:/ipfs/QmUYFfB2AngTZLEsah4u8Z44riaB6yWkUXeasi1oG7ipfS\"]},\"@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol\":{\"keccak256\":\"0x1256e3a5b3acc1bb820c5342c003431117bfc7b9d654e0c0251076b268e6bf7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2851b5639b2525d78869e8aa745e41f7e092ead34bf3276aa71354211b90c211\",\"dweb:/ipfs/QmZbyN1tgnjre8ZJEDhDfC25JjSEanDksDFKbhfLZUmcWX\"]},\"@openzeppelin/contracts-upgradeable/utils/cryptography/SignatureCheckerUpgradeable.sol\":{\"keccak256\":\"0x2e2199cf97ce7796541639a0b87c86f2cd40bf57d6b1327e4d5021781111f01c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb4ed38655de98b378b30902dc697fee389a15707425a71a6b5a97be730c708d\",\"dweb:/ipfs/QmZ6tK9QdQLdNFNrBm4Kb4C4VjJNsuD9RsLDHYtbPCnd5c\"]},\"@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol\":{\"keccak256\":\"0x23e71de3279b56332a1d2e469efe69f82b7408847cc3d7d2d06a66f465837342\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19135f7fb818e39233e41d96b0f1e60e099f4b4a372e4f7ac5b995be0d2eada0\",\"dweb:/ipfs/QmPzEt9uEPYp1AAbWJUhxuW2Am2faeoxdgro6ePew53KAf\"]},\"project:/contracts/EthSign.sol\":{\"keccak256\":\"0x048790595208d74abcfb17288b3d475a859de474ec7b32f7efecbf8202d4e469\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b59aaa093134112a91f47d73be6727b322d85f97a928215053135909fb3c0cb5\",\"dweb:/ipfs/QmbvXkM2H1qw7ZzMusVf2UYq7fzb11B2Tnzb8qexyG8a5A\"]},\"project:/contracts/EthSignCommonFramework.sol\":{\"keccak256\":\"0x40a77f2e6bc3058c4431f0f8c285d3ecd2c4100dbedd52b06c711d6333c37538\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://76a97f542acca0a662f6f4ddd4d0006848d2c0d17131fc8702b67f56f178b136\",\"dweb:/ipfs/QmXYgfRzXcYjoZtJGsJCacakfDsxUXoXgHWzuTYHvRvyex\"]},\"project:/contracts/EthSignUtils.sol\":{\"keccak256\":\"0x13319547c128c02d61a0b403eea3deb8e58607ca40befb629b5b0888b3178fc6\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5d41f4c69c552e8f6d37ecbb8af441b594153dcc124369c9a1bc376262ce43ef\",\"dweb:/ipfs/QmRkKKaNJARwpnBxvfeV128RTz8ApCW6GX92JYohLCEu2j\"]},\"project:/contracts/IEthSign.sol\":{\"keccak256\":\"0x7d12037f769a01272a28eb831ae888a394a1e795da81892c59d6a8f3eaa53e28\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://df94c65c00a6c8d5c9ad5111a762da5ddf77c5e9d41bdb09e1e7e0953886cd17\",\"dweb:/ipfs/Qmcr5v9iyrArXQGha2GRAZQ1BKT6Ma1gXTCEFunBMCZZEK\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50613cae806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063715018a61161011a578063ae1680c3116100ad578063c4d66de81161007c578063c4d66de814610468578063da7ead231461047b578063e140fb841461049b578063e894974f146104ae578063f2fde38b146104ce576101fb565b8063ae1680c31461041c578063b9c38e6b1461042f578063c054203f14610442578063c26ce54414610455576101fb565b80638da5cb5b116100e95780638da5cb5b146103bc578063921e45b8146103c4578063a2293119146103e8578063acf76182146103fb576101fb565b8063715018a61461038657806377cb76371461038e5780637ea95f21146103a15780638456cb59146103b4576101fb565b806344a2953c11610192578063572b6c0511610161578063572b6c05146103385780635a3bb0e51461034b5780635c975abb1461035e57806363638ae614610366576101fb565b806344a2953c146102bf57806349f3741f146102d25780634cbf08ec146102f45780634fc62e7114610316576101fb565b80632608c8e9116101ce5780632608c8e91461026457806327d54db91461028457806328614ec7146102a45780633f4ba83a146102b7576101fb565b8063039a21951461020057806314036eca14610215578063184eee481461022857806323a559d514610251575b600080fd5b61021361020e366004612f9f565b6104e1565b005b610213610223366004612f60565b61062d565b61023b610236366004612f09565b61067c565b60405161024891906136e3565b60405180910390f35b61021361025f36600461312d565b6106d0565b61027761027236600461321c565b6107c5565b60405161024891906134e4565b610297610292366004613305565b610815565b60405161024891906136ee565b6102976102b2366004612f9f565b610849565b610213610899565b6102136102cd366004613068565b61090b565b6102e56102e0366004612f9f565b610a92565b6040516102489392919061370e565b610307610302366004613265565b610b06565b60405161024893929190613724565b610329610324366004612ee0565b610b21565b60405161024893929190613526565b61023b610346366004612ec6565b610d2e565b6102e5610359366004612f9f565b610d45565b61023b610d9c565b610379610374366004612ee0565b610da6565b6040516102489190613591565b610213610e9b565b61029761039c36600461321c565b610f24565b6102136103af3660046130a7565b610fb6565b61021361115f565b6102776111d1565b6103d76103d2366004612f9f565b6111e0565b6040516102489594939291906134f8565b6102976103f6366004612f9f565b611261565b61040e610409366004612f9f565b6112e7565b604051610248929190613bb4565b61029761042a366004612fb7565b611362565b61021361043d366004612fe2565b611416565b610297610450366004612f9f565b611562565b61021361046336600461315e565b6115b6565b610213610476366004612ec6565b611742565b61048e610489366004612f9f565b6117d1565b60405161024891906135df565b6102e56104a9366004612ee0565b611963565b6104c16104bc366004612f9f565b6119db565b604051610248919061364b565b6102136104dc366004612ec6565b611c3a565b6104e9610d9c565b1561050f5760405162461bcd60e51b815260040161050690613a03565b60405180910390fd5b600081815260ca6020526040902054819061053c5760405162461bcd60e51b8152600401610506906139b9565b600082815260ca602052604090206001015482901561058657600081815260ca60205260409020600101544311156105865760405162461bcd60e51b81526004016105069061392a565b600083815260ca60205260409020839061059e611cfb565b600e8201546001600160a01b039081169116146105cd5760405162461bcd60e51b815260040161050690613b94565b600085815260ca60205260408120906105e860068301611d0a565b905060005b81811015610623576106138861060a8161042a6006880186611d15565b60008080611d28565b61061c81613c3b565b90506105ed565b5050505050505050565b60005b818110156106775761066783838381811061065b57634e487b7160e01b600052603260045260246000fd5b90506020020135611e18565b61067081613c3b565b9050610630565b505050565b60006106c78561068b86611eac565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611edc92505050565b95945050505050565b6106d8610d9c565b156106f55760405162461bcd60e51b815260040161050690613a03565b600084815260ca602052604090205484906107225760405162461bcd60e51b8152600401610506906139b9565b600085815260ca602052604090206001015485901561076c57600081815260ca602052604090206001015443111561076c5760405162461bcd60e51b81526004016105069061392a565b85610775611cfb565b600082815260ca602052604090206107906006820183611fae565b6107ac5760405162461bcd60e51b815260040161050690613b94565b6107ba8960008a8a8a611d28565b505050505050505050565b600082815260ca602052604081205483906107f25760405162461bcd60e51b8152600401610506906139b9565b600084815260ca6020526040902061080d9060060184611d15565b949350505050565b6000828260405160200161082a9291906134a3565b6040516020818303038152906040528051906020012090505b92915050565b600081815260ca602052604081205482906108765760405162461bcd60e51b8152600401610506906139b9565b600083815260ca6020526040902061089090600601611d0a565b91505b50919050565b6108a1611cfb565b6001600160a01b03166108b26111d1565b6001600160a01b0316146108d85760405162461bcd60e51b815260040161050690613ae1565b6108e0611fc3565b6040517f34da36e30bfd2777bf2eb90d361c13c4962049c8c7e1a6e95a766a4add787bf990600090a1565b610913610d9c565b156109305760405162461bcd60e51b815260040161050690613a03565b600084815260ca6020526040902054849061095d5760405162461bcd60e51b8152600401610506906139b9565b600085815260ca60205260409020600101548590156109a757600081815260ca60205260409020600101544311156109a75760405162461bcd60e51b81526004016105069061392a565b600086815260ca602052604090206109c160068201611d0a565b156109de5760405162461bcd60e51b815260040161050690613814565b600e810154604051610a21916001600160a01b031690610a04908a908a906020016136f7565b60405160208183030381529060405280519060200120878761067c565b610a3d5760405162461bcd60e51b815260040161050690613909565b600e810180546001600160a01b0319166001600160a01b0388169081179091556040518891907f34aa85a67010db599dd0fedb66b7814b3796b9591f10e5f2c3423c41da0d5bd290600090a350505050505050565b600081815260ca6020526040812054819081908490610ac35760405162461bcd60e51b8152600401610506906139b9565b6000610ace86611562565b600096875260ca6020908152604080892092895260089092019052909520805460018201546002909201549097919650945092505050565b60208101516040820151606090920151909260009190911a90565b600081815260ca6020526040812060609182918291610b408787612031565b90506000816001600160401b03811115610b6a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610b93578160200160208202803683370190505b5090506000826001600160401b03811115610bbe57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610be7578160200160208202803683370190505b5090506000836001600160401b03811115610c1257634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c3b578160200160208202803683370190505b50905060005b84811015610d1d57600086600c016000610c5c8d8f86612091565b815260200190815260200160002090508060000154858381518110610c9157634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508060010154848381518110610cc257634e487b7160e01b600052603260045260246000fd5b60209081029190910101526002810154835160ff90911690849084908110610cfa57634e487b7160e01b600052603260045260246000fd5b60ff9092166020928302919091019091015250610d1681613c3b565b9050610c41565b509196509450925050509250925092565b6097546001600160a01b038281169116145b919050565b600081815260ca6020526040812054819081908490610d765760405162461bcd60e51b8152600401610506906139b9565b50505060009182525060ca60205260409020600381015460048201546005909201549092565b60655460ff165b90565b610dae612cf6565b600082815260d46020526040812090610dc78486611362565b8152602001908152602001600020601480602002604051908101604052809291906000905b82821015610e8f578382018054610e0290613c06565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2e90613c06565b8015610e7b5780601f10610e5057610100808354040283529160200191610e7b565b820191906000526020600020905b815481529060010190602001808311610e5e57829003601f168201915b505050505081526020019060010190610dec565b50505050905092915050565b610ea3611cfb565b6001600160a01b0316610eb46111d1565b6001600160a01b031614610eda5760405162461bcd60e51b815260040161050690613ae1565b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b600082815260ca6020526040812060038101826008830181610f4588611562565b8152602001908152602001600020905085826000015483600101548460020154846000015485600101548660020154610f7c611cfb565b8c604051602001610f9599989796959493929190613454565b60405160208183030381529060405280519060200120935050505092915050565b610fbe610d9c565b15610fdb5760405162461bcd60e51b815260040161050690613a03565b600086815260ca602052604090205486906110085760405162461bcd60e51b8152600401610506906139b9565b600087815260ca602052604090206001015487901561105257600081815260ca60205260409020600101544311156110525760405162461bcd60e51b81526004016105069061392a565b8761105b611cfb565b600082815260ca602052604090206110766006820183611fae565b6110925760405162461bcd60e51b815260040161050690613b94565b8887146110b15760405162461bcd60e51b815260040161050690613b6d565b60005b89811015611136576111268c6110c8611cfb565b8d8d858181106110e857634e487b7160e01b600052603260045260246000fd5b905060200201358c8c8681811061110f57634e487b7160e01b600052603260045260246000fd5b90506020028101906111219190613bc2565b612148565b61112f81613c3b565b90506110b4565b506111528b6000883560208a01358a60025b6020020135611d28565b5050505050505050505050565b611167611cfb565b6001600160a01b03166111786111d1565b6001600160a01b03161461119e5760405162461bcd60e51b815260040161050690613ae1565b6111a66123ea565b6040517f80013616e929337540c361e27289c2e0e38a3fe922d30f8b3183b6ffb214a94490600090a1565b6033546001600160a01b031690565b600081815260ca6020526040812054819081908190819086906112155760405162461bcd60e51b8152600401610506906139b9565b600087815260ca60205260409020600e810154600f820154825460018401546001600160a01b0390931699509097509550935061125460068201611d0a565b9250505091939590929450565b600081815260ca602052604081206003810182600883018161128287611562565b81526020019081526020016000209050848260000154836001015484600201548460000154856001015486600201546040516020016112c797969594939291906133d8565b604051602081830303815290604052805190602001209350505050919050565b600081815260ca6020526040812054819083906113165760405162461bcd60e51b8152600401610506906139b9565b600084815260ca602052604081209061132e86611261565b905061133c82600601611d0a565b6000828152600984016020526040902090955061135890611d0a565b9350505050915091565b6000816001600160a01b03811661138b5760405162461bcd60e51b815260040161050690613867565b600084815260ca6020526040812090600382019060088301816113ad89611562565b81526020019081526020016000209050868260000154836001015484600201548460000154856001015486600201548c6040516020016113f4989796959493929190613408565b6040516020818303038152906040528051906020012094505050505092915050565b61141e610d9c565b1561143b5760405162461bcd60e51b815260040161050690613a03565b600086815260ca602052604090205486906114685760405162461bcd60e51b8152600401610506906139b9565b600087815260ca60205260409020600101548790156114b257600081815260ca60205260409020600101544311156114b25760405162461bcd60e51b81526004016105069061392a565b600088815260ca60205260409020889088906114d16006820183611fae565b6114ed5760405162461bcd60e51b815260040161050690613b94565b60005b86811015611554576115448c8c8c8c8581811061151d57634e487b7160e01b600052603260045260246000fd5b905060200201358b8b8681811061110f57634e487b7160e01b600052603260045260246000fd5b61154d81613c3b565b90506114f0565b505050505050505050505050565b600081815260ca6020908152604080832060038101805460048301546005909301549351919461159894889492939091016133bd565b60405160208183030381529060405280519060200120915050919050565b6115be610d9c565b156115db5760405162461bcd60e51b815260040161050690613a03565b60008a815260ca60205260409020548a90156116095760405162461bcd60e51b8152600401610506906139e0565b8382146116285760405162461bcd60e51b815260040161050690613abd565b6116348b8b8b8b612445565b6116468b8835883560208a01356124df565b61165e8b6020890135604089013560608a013561254c565b604087013561166c57611152565b6116848b600060408a013560808a01358a6005611148565b60005b84811015611554576116cd8c8787848181106116b357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116c89190612ec6565b6125c4565b6117328c8787848181106116f157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117069190612ec6565b86868581811061172657634e487b7160e01b600052603260045260246000fd5b9050602002013561261b565b61173b81613c3b565b9050611687565b600054610100900460ff168061175b575060005460ff16155b6117775760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff161580156117a2576000805460ff1961ff0019909116610100171660011790555b6117aa6126c4565b6117b2612749565b6117bb826127b9565b80156117cd576000805461ff00191690555b5050565b600081815260ca602052604090205460609082906118015760405162461bcd60e51b8152600401610506906139b9565b600083815260ca6020526040812090600682019061181e82611d0a565b9050806001600160401b0381111561184657634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561187f57816020015b61186c612d1e565b8152602001906001900390816118645790505b50945060005b818110156119595760006118998483611d15565b905060006118a78983611362565b9050818884815181106118ca57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b039092169091526000828152600d880182526040908190208151606081018352815481526001820154938101939093526002015490820152885189908590811061193757634e487b7160e01b600052603260045260246000fd5b60200260200101516020018190525050508061195290613c3b565b9050611885565b5050505050919050565b600081815260ca60205260408120548190819084906119945760405162461bcd60e51b8152600401610506906139b9565b600085815260ca60205260408120906119ad8789611362565b6000908152600d92909201602052506040902080546001820154600290920154909891975095509350505050565b600081815260ca60205260409020546060908290611a0b5760405162461bcd60e51b8152600401610506906139b9565b600083815260ca60205260408120906006820190611a2882611d0a565b9050806001600160401b03811115611a5057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611a8957816020015b611a76612d46565b815260200190600190039081611a6e5790505b50945060005b81811015611959576000611aa38483611d15565b90506000611ab18983611362565b6000818152600a88016020526040812054919250816001600160401b03811115611aeb57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611b14578160200160208202803683370190505b50905060005b82811015611baf576000611b2f8d8784612091565b6000818152600c8c0160205260408120805492935091158015611b5457506001820154155b8015611b655750600282015460ff16155b15905080858581518110611b8957634e487b7160e01b600052603260045260246000fd5b60200260200101901515908115158152505050505080611ba890613c3b565b9050611b1a565b50838a8681518110611bd157634e487b7160e01b600052603260045260246000fd5b6020026020010151600001906001600160a01b031690816001600160a01b031681525050808a8681518110611c1657634e487b7160e01b600052603260045260246000fd5b6020026020010151602001819052505050505080611c3390613c3b565b9050611a8f565b611c42611cfb565b6001600160a01b0316611c536111d1565b6001600160a01b031614611c795760405162461bcd60e51b815260040161050690613ae1565b6001600160a01b038116611c9f5760405162461bcd60e51b8152600401610506906138c3565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b6000611d0561282a565b905090565b600061084382612858565b6000611d21838361285c565b9392505050565b600085815260ca602052604090208480611d4b57611d488761042a611cfb565b90505b6000818152600d8301602052604090208054611db35787611d6a611cfb565b6001600160a01b03167feb985c01bab973c54934764ec4c2fc453186ce180e85e01c1b1c093b206f37c8888888604051611da69392919061370e565b60405180910390a3611e01565b87611dbc611cfb565b6001600160a01b03167f22049745e0f7b5221f94172e9b75593c2f630d6ad0e4506895bd1b0ab80511f8888888604051611df89392919061370e565b60405180910390a35b948555505060018301919091556002909101555050565b611e20610d9c565b15611e3d5760405162461bcd60e51b815260040161050690613a03565b600081815260ca60205260409020548190611e6a5760405162461bcd60e51b8152600401610506906139b9565b81611e73611cfb565b6001600160a01b03167f54107b567da50cdebaf69ee19d6f9ef3fa8804610199a0df31336824dcffdd5360405160405180910390a35050565b600081604051602001611ebf91906134b3565b604051602081830303815290604052805190602001209050919050565b6000611ee7846128b5565b15611f8857604051630b135d3f60e11b81526001600160a01b03851690631626ba7e90611f1a908690869060040161373d565b60206040518083038186803b158015611f3257600080fd5b505afa925050508015611f62575060408051601f3d908101601f19168201909252611f5f9181019061323d565b60015b611f6e57506000611d21565b6001600160e01b031916630b135d3f60e11b149050611d21565b836001600160a01b0316611f9c84846128bb565b6001600160a01b031614949350505050565b6000611d21836001600160a01b038416612941565b611fcb610d9c565b611fe75760405162461bcd60e51b815260040161050690613839565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61201a611cfb565b60405161202791906134e4565b60405180910390a1565b600081815260ca6020526040812054829061205e5760405162461bcd60e51b8152600401610506906139b9565b600061206a8486611362565b600085815260ca60209081526040808320938352600a909301905220549250505092915050565b6000826001600160a01b0381166120ba5760405162461bcd60e51b815260040161050690613867565b600085815260ca6020526040812090600382019060088301816120dc8a611562565b81526020019081526020016000209050878260000154836001015484600201548460000154856001015486600201548d8d60405160200161212599989796959493929190613454565b604051602081830303815290604052805190602001209450505050509392505050565b600085815260ca60205260408120906121618787611362565b905061216f82600601611d0a565b8260020154146121915760405162461bcd60e51b815260040161050690613b3e565b6000818152600a8301602052604090205485106121c05760405162461bcd60e51b8152600401610506906137ab565b6121d6866121cf898989612091565b868661067c565b6121f25760405162461bcd60e51b815260040161050690613b16565b600087815260d460209081526040808320848452909152902084908490876014811061222e57634e487b7160e01b600052603260045260246000fd5b61223a93910191612d5e565b50856001600160a01b0316877fb74fad578e7e488d93ea7238e9fee4930a5259c62ab371c6ee30c0f72bf1747d8760405161227591906136ee565b60405180910390a3600087815260d460209081526040808320848452600101909152902085601481106122b857634e487b7160e01b600052603260045260246000fd5b602081049091015460ff601f9092166101000a9004166123e157600087815260d4602090815260408083208484526001908101909252909120866014811061231057634e487b7160e01b600052603260045260246000fd5b602091828204019190066101000a81548160ff02191690831515021790555081600b0160008281526020019081526020016000206000815461235190613c3b565b909155506000818152600a83016020908152604080832054600b86019092529091205414156123e1576123a98683600901600061238d8b611261565b815260200190815260200160002061295990919063ffffffff16565b506040516001600160a01b0387169088907f63d9e78f3de81345ee9874b2b4e1d0f7c4323be3f5ff7787c03fc1ffcf677fba90600090a35b50505050505050565b6123f2610d9c565b1561240f5760405162461bcd60e51b815260040161050690613a03565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861201a611cfb565b600084815260ca60205260409020600f81018490554381556001810183905561246c611cfb565b600e820180546001600160a01b0319166001600160a01b03928316179081905560028301849055600f8301546040519092889216907f72edcd2156e970aa43901df5e48391d1d9fe1ffe6693052084440fe437dfdcf8906124d09087908990613bb4565b60405180910390a45050505050565b600084815260ca602052604090819020600381018581556004820185905560058201849055915190919086907ffbaee527feeadce62b5d1ba1bee6b23038f06a9f2ff96fdd3a23fc41d34539959061253c9088908890889061370e565b60405180910390a2505050505050565b600084815260ca6020526040812090600882018161256988611562565b8152602081019190915260409081016000208681556001810186905560028101859055905190915086907f8223269179a9832eb423b8f67bb2936c256eb6c42f0732ee7634b5c43f0922a19061253c9088908890889061370e565b600082815260ca602052604090206125df6006820183612959565b5060405183906001600160a01b038416907f8f6b843022496dfaa45bea46560133c63403c8f31b150d0a62c4b6f6a1c7a58790600090a3505050565b600083815260ca60205260408120906126348585611362565b6000818152600a84016020526040902054909150156126655760405162461bcd60e51b81526004016105069061394f565b6000818152600a8301602052604090819020849055516001600160a01b0385169086907fd0cfd4caf220754d14c3071b35e09bd382b93a8e5ac43fb710fe68b128df7d16906126b59087906136ee565b60405180910390a35050505050565b600054610100900460ff16806126dd575060005460ff16155b6126f95760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612724576000805460ff1961ff0019909116610100171660011790555b61272c61296e565b6127346129e1565b8015612746576000805461ff00191690555b50565b600054610100900460ff1680612762575060005460ff16155b61277e5760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff161580156127a9576000805460ff1961ff0019909116610100171660011790555b6127b161296e565b612734612aad565b600054610100900460ff16806127d2575060005460ff16155b6127ee5760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612819576000805460ff1961ff0019909116610100171660011790555b61282161296e565b6117bb82612b2b565b600061283533610d2e565b15612849575060131936013560601c610da3565b612851612bbb565b9050610da3565b5490565b8154600090821061287f5760405162461bcd60e51b8152600401610506906137d2565b8260000182815481106128a257634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b3b151590565b6000806000808451604114156128e55750505060208201516040830151606084015160001a61292b565b8451604014156129135750505060408201516020830151906001600160ff1b0381169060ff1c601b0161292b565b60405162461bcd60e51b81526004016105069061388c565b61293786828585612bbf565b9695505050505050565b60009081526001919091016020526040902054151590565b6000611d21836001600160a01b038416612cac565b600054610100900460ff1680612987575060005460ff16155b6129a35760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612734576000805460ff1961ff0019909116610100171660011790558015612746576000805461ff001916905550565b600054610100900460ff16806129fa575060005460ff16155b612a165760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612a41576000805460ff1961ff0019909116610100171660011790555b6000612a4b611cfb565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612746576000805461ff001916905550565b600054610100900460ff1680612ac6575060005460ff16155b612ae25760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612b0d576000805460ff1961ff0019909116610100171660011790555b6065805460ff191690558015612746576000805461ff001916905550565b600054610100900460ff1680612b44575060005460ff16155b612b605760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612b8b576000805460ff1961ff0019909116610100171660011790555b609780546001600160a01b0319166001600160a01b03841617905580156117cd576000805461ff00191690555050565b3390565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115612c015760405162461bcd60e51b815260040161050690613977565b8360ff16601b1480612c1657508360ff16601c145b612c325760405162461bcd60e51b815260040161050690613a7b565b600060018686868660405160008152602001604052604051612c579493929190613756565b6020604051602081039080840390855afa158015612c79573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166106c75760405162461bcd60e51b815260040161050690613774565b6000612cb88383612941565b612cee57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610843565b506000610843565b6040518061028001604052806014905b6060815260200190600190039081612d065790505090565b604051806040016040528060006001600160a01b03168152602001612d41612de2565b905290565b60408051808201909152600081526060602082015290565b828054612d6a90613c06565b90600052602060002090601f016020900481019282612d8c5760008555612dd2565b82601f10612da55782800160ff19823516178555612dd2565b82800160010185558215612dd2579182015b82811115612dd2578235825591602001919060010190612db7565b50612dde929150612e02565b5090565b604080516060810182526000808252602082018190529181019190915290565b5b80821115612dde5760008155600101612e03565b80356001600160a01b0381168114610d4057600080fd5b60008083601f840112612e3f578081fd5b5081356001600160401b03811115612e55578182fd5b6020830191508360208083028501011115612e6f57600080fd5b9250929050565b806060810183101561084357600080fd5b60008083601f840112612e98578182fd5b5081356001600160401b03811115612eae578182fd5b602083019150836020828501011115612e6f57600080fd5b600060208284031215612ed7578081fd5b611d2182612e17565b60008060408385031215612ef2578081fd5b612efb83612e17565b946020939093013593505050565b60008060008060608587031215612f1e578182fd5b612f2785612e17565b93506020850135925060408501356001600160401b03811115612f48578283fd5b612f5487828801612e87565b95989497509550505050565b60008060208385031215612f72578182fd5b82356001600160401b03811115612f87578283fd5b612f9385828601612e2e565b90969095509350505050565b600060208284031215612fb0578081fd5b5035919050565b60008060408385031215612fc9578182fd5b82359150612fd960208401612e17565b90509250929050565b60008060008060008060808789031215612ffa578182fd5b8635955061300a60208801612e17565b945060408701356001600160401b0380821115613025578384fd5b6130318a838b01612e2e565b90965094506060890135915080821115613049578384fd5b5061305689828a01612e2e565b979a9699509497509295939492505050565b6000806000806060858703121561307d578384fd5b8435935061308d60208601612e17565b925060408501356001600160401b03811115612f48578283fd5b60008060008060008060c087890312156130bf578182fd5b8635955060208701356001600160401b03808211156130dc578384fd5b6130e88a838b01612e2e565b90975095506040890135915080821115613100578384fd5b5061310d89828a01612e2e565b909450925061312190508860608901612e76565b90509295509295509295565b60008060008060808587031215613142578182fd5b5050823594602084013594506040840135936060013592509050565b6000806000806000806000806000806101e08b8d03121561317d578788fd5b8a35995060208b0135985060408b0135975060608b013596506131a38c60808d01612e76565b95506101a08b018c8111156131b6578485fd5b60e08c019550356001600160401b03808211156131d1578586fd5b6131dd8e838f01612e2e565b90965094506101c08d01359150808211156131f6578384fd5b506132038d828e01612e2e565b915080935050809150509295989b9194979a5092959850565b6000806040838503121561322e578182fd5b50508035926020909101359150565b60006020828403121561324e578081fd5b81516001600160e01b031981168114611d21578182fd5b60006020808385031215613277578182fd5b82356001600160401b038082111561328d578384fd5b818501915085601f8301126132a0578384fd5b8135818111156132b2576132b2613c62565b604051601f8201601f19168101850183811182821017156132d5576132d5613c62565b60405281815283820185018810156132eb578586fd5b818585018683013790810190930193909352509392505050565b60008060208385031215613317578182fd5b82356001600160401b0381111561332c578283fd5b612f9385828601612e87565b6000815180845260208085019450808401835b838110156133675781518752958201959082019060010161334b565b509495945050505050565b60008151808452815b818110156133975760208185018101518683018201520161337b565b818111156133a85782602083870101525b50601f01601f19169290920160200192915050565b93845260208401929092526040830152606082015260800190565b968752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b97885260208801969096526040870194909452606080870193909352608086019190915260a085015260c08401919091521b6bffffffffffffffffffffffff191660e082015260f40190565b98895260208901979097526040880195909552606080880194909452608087019290925260a086015260c08501521b6bffffffffffffffffffffffff191660e083015260f48201526101140190565b6000828483379101908152919050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b0391909116815260200190565b6001600160a01b03959095168552602085019390935260408401919091526060830152608082015260a00190565b6000606082526135396060830186613338565b60208382038185015261354c8287613338565b84810360408601528551808252828701935090820190845b8181101561358357845160ff1683529383019391830191600101613564565b509098975050505050505050565b60208082526000906102a0830183820185845b60148110156135d357601f198785030183526135c1848351613372565b935091840191908401906001016135a4565b50919695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561363e57815180516001600160a01b0316855286015180518786015280870151868601528501516060850152608090930192908501906001016135fc565b5091979650505050505050565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561358357888303603f19018552815180516001600160a01b03168452870151878401879052805187850181905290880190899060608601905b808310156136ce57835115158252928a019260019290920191908a01906136ac565b5096890196945050509086019060010161366f565b901515815260200190565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526020830191909152604082015260600190565b928352602083019190915260ff16604082015260600190565b60008382526040602083015261080d6040830184613372565b93845260ff9290921660208401526040830152606082015260800190565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b6020808252600d908201526c4f55545f4f465f424f554e445360981b604082015260600190565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b6020808252600b908201526a4e4f545f4e45575f444f4360a81b604082015260600190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6020808252600b908201526a2d22a927afa9a2a72222a960a91b604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600790820152664241445f53494760c81b604082015260600190565b6020808252600b908201526a1113d0d7d156141254915160aa1b604082015260600190565b6020808252600e908201526d4e554d5f5349475f45584953545360901b604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b6020808252600d908201526c1113d0d7d393d517d1561254d5609a1b604082015260600190565b6020808252600990820152681113d0d7d1561254d560ba1b604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b6020808252600a90820152694241445f41525241595360b01b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d24a72b20a624a22fa9a4a3a722a960911b604082015260600190565b60208082526015908201527414d251d3915494d7d393d517d19253905312569151605a1b604082015260600190565b6020808252600d908201526c0a692b48abe9a92a69a82a8869609b1b604082015260600190565b6020808252600690820152650aa9c82aaa8960d31b604082015260600190565b918252602082015260400190565b6000808335601e19843603018112613bd8578283fd5b8301803591506001600160401b03821115613bf1578283fd5b602001915036819003821315612e6f57600080fd5b600281046001821680613c1a57607f821691505b6020821081141561089357634e487b7160e01b600052602260045260246000fd5b6000600019821415613c5b57634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220f07ce1d801f658bf694a7d08e5dde4bb9893b2cdeb05366eb321ef037616784664736f6c63430008000033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c8063715018a61161011a578063ae1680c3116100ad578063c4d66de81161007c578063c4d66de814610468578063da7ead231461047b578063e140fb841461049b578063e894974f146104ae578063f2fde38b146104ce576101fb565b8063ae1680c31461041c578063b9c38e6b1461042f578063c054203f14610442578063c26ce54414610455576101fb565b80638da5cb5b116100e95780638da5cb5b146103bc578063921e45b8146103c4578063a2293119146103e8578063acf76182146103fb576101fb565b8063715018a61461038657806377cb76371461038e5780637ea95f21146103a15780638456cb59146103b4576101fb565b806344a2953c11610192578063572b6c0511610161578063572b6c05146103385780635a3bb0e51461034b5780635c975abb1461035e57806363638ae614610366576101fb565b806344a2953c146102bf57806349f3741f146102d25780634cbf08ec146102f45780634fc62e7114610316576101fb565b80632608c8e9116101ce5780632608c8e91461026457806327d54db91461028457806328614ec7146102a45780633f4ba83a146102b7576101fb565b8063039a21951461020057806314036eca14610215578063184eee481461022857806323a559d514610251575b600080fd5b61021361020e366004612f9f565b6104e1565b005b610213610223366004612f60565b61062d565b61023b610236366004612f09565b61067c565b60405161024891906136e3565b60405180910390f35b61021361025f36600461312d565b6106d0565b61027761027236600461321c565b6107c5565b60405161024891906134e4565b610297610292366004613305565b610815565b60405161024891906136ee565b6102976102b2366004612f9f565b610849565b610213610899565b6102136102cd366004613068565b61090b565b6102e56102e0366004612f9f565b610a92565b6040516102489392919061370e565b610307610302366004613265565b610b06565b60405161024893929190613724565b610329610324366004612ee0565b610b21565b60405161024893929190613526565b61023b610346366004612ec6565b610d2e565b6102e5610359366004612f9f565b610d45565b61023b610d9c565b610379610374366004612ee0565b610da6565b6040516102489190613591565b610213610e9b565b61029761039c36600461321c565b610f24565b6102136103af3660046130a7565b610fb6565b61021361115f565b6102776111d1565b6103d76103d2366004612f9f565b6111e0565b6040516102489594939291906134f8565b6102976103f6366004612f9f565b611261565b61040e610409366004612f9f565b6112e7565b604051610248929190613bb4565b61029761042a366004612fb7565b611362565b61021361043d366004612fe2565b611416565b610297610450366004612f9f565b611562565b61021361046336600461315e565b6115b6565b610213610476366004612ec6565b611742565b61048e610489366004612f9f565b6117d1565b60405161024891906135df565b6102e56104a9366004612ee0565b611963565b6104c16104bc366004612f9f565b6119db565b604051610248919061364b565b6102136104dc366004612ec6565b611c3a565b6104e9610d9c565b1561050f5760405162461bcd60e51b815260040161050690613a03565b60405180910390fd5b600081815260ca6020526040902054819061053c5760405162461bcd60e51b8152600401610506906139b9565b600082815260ca602052604090206001015482901561058657600081815260ca60205260409020600101544311156105865760405162461bcd60e51b81526004016105069061392a565b600083815260ca60205260409020839061059e611cfb565b600e8201546001600160a01b039081169116146105cd5760405162461bcd60e51b815260040161050690613b94565b600085815260ca60205260408120906105e860068301611d0a565b905060005b81811015610623576106138861060a8161042a6006880186611d15565b60008080611d28565b61061c81613c3b565b90506105ed565b5050505050505050565b60005b818110156106775761066783838381811061065b57634e487b7160e01b600052603260045260246000fd5b90506020020135611e18565b61067081613c3b565b9050610630565b505050565b60006106c78561068b86611eac565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611edc92505050565b95945050505050565b6106d8610d9c565b156106f55760405162461bcd60e51b815260040161050690613a03565b600084815260ca602052604090205484906107225760405162461bcd60e51b8152600401610506906139b9565b600085815260ca602052604090206001015485901561076c57600081815260ca602052604090206001015443111561076c5760405162461bcd60e51b81526004016105069061392a565b85610775611cfb565b600082815260ca602052604090206107906006820183611fae565b6107ac5760405162461bcd60e51b815260040161050690613b94565b6107ba8960008a8a8a611d28565b505050505050505050565b600082815260ca602052604081205483906107f25760405162461bcd60e51b8152600401610506906139b9565b600084815260ca6020526040902061080d9060060184611d15565b949350505050565b6000828260405160200161082a9291906134a3565b6040516020818303038152906040528051906020012090505b92915050565b600081815260ca602052604081205482906108765760405162461bcd60e51b8152600401610506906139b9565b600083815260ca6020526040902061089090600601611d0a565b91505b50919050565b6108a1611cfb565b6001600160a01b03166108b26111d1565b6001600160a01b0316146108d85760405162461bcd60e51b815260040161050690613ae1565b6108e0611fc3565b6040517f34da36e30bfd2777bf2eb90d361c13c4962049c8c7e1a6e95a766a4add787bf990600090a1565b610913610d9c565b156109305760405162461bcd60e51b815260040161050690613a03565b600084815260ca6020526040902054849061095d5760405162461bcd60e51b8152600401610506906139b9565b600085815260ca60205260409020600101548590156109a757600081815260ca60205260409020600101544311156109a75760405162461bcd60e51b81526004016105069061392a565b600086815260ca602052604090206109c160068201611d0a565b156109de5760405162461bcd60e51b815260040161050690613814565b600e810154604051610a21916001600160a01b031690610a04908a908a906020016136f7565b60405160208183030381529060405280519060200120878761067c565b610a3d5760405162461bcd60e51b815260040161050690613909565b600e810180546001600160a01b0319166001600160a01b0388169081179091556040518891907f34aa85a67010db599dd0fedb66b7814b3796b9591f10e5f2c3423c41da0d5bd290600090a350505050505050565b600081815260ca6020526040812054819081908490610ac35760405162461bcd60e51b8152600401610506906139b9565b6000610ace86611562565b600096875260ca6020908152604080892092895260089092019052909520805460018201546002909201549097919650945092505050565b60208101516040820151606090920151909260009190911a90565b600081815260ca6020526040812060609182918291610b408787612031565b90506000816001600160401b03811115610b6a57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610b93578160200160208202803683370190505b5090506000826001600160401b03811115610bbe57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610be7578160200160208202803683370190505b5090506000836001600160401b03811115610c1257634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c3b578160200160208202803683370190505b50905060005b84811015610d1d57600086600c016000610c5c8d8f86612091565b815260200190815260200160002090508060000154858381518110610c9157634e487b7160e01b600052603260045260246000fd5b6020026020010181815250508060010154848381518110610cc257634e487b7160e01b600052603260045260246000fd5b60209081029190910101526002810154835160ff90911690849084908110610cfa57634e487b7160e01b600052603260045260246000fd5b60ff9092166020928302919091019091015250610d1681613c3b565b9050610c41565b509196509450925050509250925092565b6097546001600160a01b038281169116145b919050565b600081815260ca6020526040812054819081908490610d765760405162461bcd60e51b8152600401610506906139b9565b50505060009182525060ca60205260409020600381015460048201546005909201549092565b60655460ff165b90565b610dae612cf6565b600082815260d46020526040812090610dc78486611362565b8152602001908152602001600020601480602002604051908101604052809291906000905b82821015610e8f578382018054610e0290613c06565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2e90613c06565b8015610e7b5780601f10610e5057610100808354040283529160200191610e7b565b820191906000526020600020905b815481529060010190602001808311610e5e57829003601f168201915b505050505081526020019060010190610dec565b50505050905092915050565b610ea3611cfb565b6001600160a01b0316610eb46111d1565b6001600160a01b031614610eda5760405162461bcd60e51b815260040161050690613ae1565b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b600082815260ca6020526040812060038101826008830181610f4588611562565b8152602001908152602001600020905085826000015483600101548460020154846000015485600101548660020154610f7c611cfb565b8c604051602001610f9599989796959493929190613454565b60405160208183030381529060405280519060200120935050505092915050565b610fbe610d9c565b15610fdb5760405162461bcd60e51b815260040161050690613a03565b600086815260ca602052604090205486906110085760405162461bcd60e51b8152600401610506906139b9565b600087815260ca602052604090206001015487901561105257600081815260ca60205260409020600101544311156110525760405162461bcd60e51b81526004016105069061392a565b8761105b611cfb565b600082815260ca602052604090206110766006820183611fae565b6110925760405162461bcd60e51b815260040161050690613b94565b8887146110b15760405162461bcd60e51b815260040161050690613b6d565b60005b89811015611136576111268c6110c8611cfb565b8d8d858181106110e857634e487b7160e01b600052603260045260246000fd5b905060200201358c8c8681811061110f57634e487b7160e01b600052603260045260246000fd5b90506020028101906111219190613bc2565b612148565b61112f81613c3b565b90506110b4565b506111528b6000883560208a01358a60025b6020020135611d28565b5050505050505050505050565b611167611cfb565b6001600160a01b03166111786111d1565b6001600160a01b03161461119e5760405162461bcd60e51b815260040161050690613ae1565b6111a66123ea565b6040517f80013616e929337540c361e27289c2e0e38a3fe922d30f8b3183b6ffb214a94490600090a1565b6033546001600160a01b031690565b600081815260ca6020526040812054819081908190819086906112155760405162461bcd60e51b8152600401610506906139b9565b600087815260ca60205260409020600e810154600f820154825460018401546001600160a01b0390931699509097509550935061125460068201611d0a565b9250505091939590929450565b600081815260ca602052604081206003810182600883018161128287611562565b81526020019081526020016000209050848260000154836001015484600201548460000154856001015486600201546040516020016112c797969594939291906133d8565b604051602081830303815290604052805190602001209350505050919050565b600081815260ca6020526040812054819083906113165760405162461bcd60e51b8152600401610506906139b9565b600084815260ca602052604081209061132e86611261565b905061133c82600601611d0a565b6000828152600984016020526040902090955061135890611d0a565b9350505050915091565b6000816001600160a01b03811661138b5760405162461bcd60e51b815260040161050690613867565b600084815260ca6020526040812090600382019060088301816113ad89611562565b81526020019081526020016000209050868260000154836001015484600201548460000154856001015486600201548c6040516020016113f4989796959493929190613408565b6040516020818303038152906040528051906020012094505050505092915050565b61141e610d9c565b1561143b5760405162461bcd60e51b815260040161050690613a03565b600086815260ca602052604090205486906114685760405162461bcd60e51b8152600401610506906139b9565b600087815260ca60205260409020600101548790156114b257600081815260ca60205260409020600101544311156114b25760405162461bcd60e51b81526004016105069061392a565b600088815260ca60205260409020889088906114d16006820183611fae565b6114ed5760405162461bcd60e51b815260040161050690613b94565b60005b86811015611554576115448c8c8c8c8581811061151d57634e487b7160e01b600052603260045260246000fd5b905060200201358b8b8681811061110f57634e487b7160e01b600052603260045260246000fd5b61154d81613c3b565b90506114f0565b505050505050505050505050565b600081815260ca6020908152604080832060038101805460048301546005909301549351919461159894889492939091016133bd565b60405160208183030381529060405280519060200120915050919050565b6115be610d9c565b156115db5760405162461bcd60e51b815260040161050690613a03565b60008a815260ca60205260409020548a90156116095760405162461bcd60e51b8152600401610506906139e0565b8382146116285760405162461bcd60e51b815260040161050690613abd565b6116348b8b8b8b612445565b6116468b8835883560208a01356124df565b61165e8b6020890135604089013560608a013561254c565b604087013561166c57611152565b6116848b600060408a013560808a01358a6005611148565b60005b84811015611554576116cd8c8787848181106116b357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116c89190612ec6565b6125c4565b6117328c8787848181106116f157634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117069190612ec6565b86868581811061172657634e487b7160e01b600052603260045260246000fd5b9050602002013561261b565b61173b81613c3b565b9050611687565b600054610100900460ff168061175b575060005460ff16155b6117775760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff161580156117a2576000805460ff1961ff0019909116610100171660011790555b6117aa6126c4565b6117b2612749565b6117bb826127b9565b80156117cd576000805461ff00191690555b5050565b600081815260ca602052604090205460609082906118015760405162461bcd60e51b8152600401610506906139b9565b600083815260ca6020526040812090600682019061181e82611d0a565b9050806001600160401b0381111561184657634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561187f57816020015b61186c612d1e565b8152602001906001900390816118645790505b50945060005b818110156119595760006118998483611d15565b905060006118a78983611362565b9050818884815181106118ca57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b039092169091526000828152600d880182526040908190208151606081018352815481526001820154938101939093526002015490820152885189908590811061193757634e487b7160e01b600052603260045260246000fd5b60200260200101516020018190525050508061195290613c3b565b9050611885565b5050505050919050565b600081815260ca60205260408120548190819084906119945760405162461bcd60e51b8152600401610506906139b9565b600085815260ca60205260408120906119ad8789611362565b6000908152600d92909201602052506040902080546001820154600290920154909891975095509350505050565b600081815260ca60205260409020546060908290611a0b5760405162461bcd60e51b8152600401610506906139b9565b600083815260ca60205260408120906006820190611a2882611d0a565b9050806001600160401b03811115611a5057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611a8957816020015b611a76612d46565b815260200190600190039081611a6e5790505b50945060005b81811015611959576000611aa38483611d15565b90506000611ab18983611362565b6000818152600a88016020526040812054919250816001600160401b03811115611aeb57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611b14578160200160208202803683370190505b50905060005b82811015611baf576000611b2f8d8784612091565b6000818152600c8c0160205260408120805492935091158015611b5457506001820154155b8015611b655750600282015460ff16155b15905080858581518110611b8957634e487b7160e01b600052603260045260246000fd5b60200260200101901515908115158152505050505080611ba890613c3b565b9050611b1a565b50838a8681518110611bd157634e487b7160e01b600052603260045260246000fd5b6020026020010151600001906001600160a01b031690816001600160a01b031681525050808a8681518110611c1657634e487b7160e01b600052603260045260246000fd5b6020026020010151602001819052505050505080611c3390613c3b565b9050611a8f565b611c42611cfb565b6001600160a01b0316611c536111d1565b6001600160a01b031614611c795760405162461bcd60e51b815260040161050690613ae1565b6001600160a01b038116611c9f5760405162461bcd60e51b8152600401610506906138c3565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b6000611d0561282a565b905090565b600061084382612858565b6000611d21838361285c565b9392505050565b600085815260ca602052604090208480611d4b57611d488761042a611cfb565b90505b6000818152600d8301602052604090208054611db35787611d6a611cfb565b6001600160a01b03167feb985c01bab973c54934764ec4c2fc453186ce180e85e01c1b1c093b206f37c8888888604051611da69392919061370e565b60405180910390a3611e01565b87611dbc611cfb565b6001600160a01b03167f22049745e0f7b5221f94172e9b75593c2f630d6ad0e4506895bd1b0ab80511f8888888604051611df89392919061370e565b60405180910390a35b948555505060018301919091556002909101555050565b611e20610d9c565b15611e3d5760405162461bcd60e51b815260040161050690613a03565b600081815260ca60205260409020548190611e6a5760405162461bcd60e51b8152600401610506906139b9565b81611e73611cfb565b6001600160a01b03167f54107b567da50cdebaf69ee19d6f9ef3fa8804610199a0df31336824dcffdd5360405160405180910390a35050565b600081604051602001611ebf91906134b3565b604051602081830303815290604052805190602001209050919050565b6000611ee7846128b5565b15611f8857604051630b135d3f60e11b81526001600160a01b03851690631626ba7e90611f1a908690869060040161373d565b60206040518083038186803b158015611f3257600080fd5b505afa925050508015611f62575060408051601f3d908101601f19168201909252611f5f9181019061323d565b60015b611f6e57506000611d21565b6001600160e01b031916630b135d3f60e11b149050611d21565b836001600160a01b0316611f9c84846128bb565b6001600160a01b031614949350505050565b6000611d21836001600160a01b038416612941565b611fcb610d9c565b611fe75760405162461bcd60e51b815260040161050690613839565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61201a611cfb565b60405161202791906134e4565b60405180910390a1565b600081815260ca6020526040812054829061205e5760405162461bcd60e51b8152600401610506906139b9565b600061206a8486611362565b600085815260ca60209081526040808320938352600a909301905220549250505092915050565b6000826001600160a01b0381166120ba5760405162461bcd60e51b815260040161050690613867565b600085815260ca6020526040812090600382019060088301816120dc8a611562565b81526020019081526020016000209050878260000154836001015484600201548460000154856001015486600201548d8d60405160200161212599989796959493929190613454565b604051602081830303815290604052805190602001209450505050509392505050565b600085815260ca60205260408120906121618787611362565b905061216f82600601611d0a565b8260020154146121915760405162461bcd60e51b815260040161050690613b3e565b6000818152600a8301602052604090205485106121c05760405162461bcd60e51b8152600401610506906137ab565b6121d6866121cf898989612091565b868661067c565b6121f25760405162461bcd60e51b815260040161050690613b16565b600087815260d460209081526040808320848452909152902084908490876014811061222e57634e487b7160e01b600052603260045260246000fd5b61223a93910191612d5e565b50856001600160a01b0316877fb74fad578e7e488d93ea7238e9fee4930a5259c62ab371c6ee30c0f72bf1747d8760405161227591906136ee565b60405180910390a3600087815260d460209081526040808320848452600101909152902085601481106122b857634e487b7160e01b600052603260045260246000fd5b602081049091015460ff601f9092166101000a9004166123e157600087815260d4602090815260408083208484526001908101909252909120866014811061231057634e487b7160e01b600052603260045260246000fd5b602091828204019190066101000a81548160ff02191690831515021790555081600b0160008281526020019081526020016000206000815461235190613c3b565b909155506000818152600a83016020908152604080832054600b86019092529091205414156123e1576123a98683600901600061238d8b611261565b815260200190815260200160002061295990919063ffffffff16565b506040516001600160a01b0387169088907f63d9e78f3de81345ee9874b2b4e1d0f7c4323be3f5ff7787c03fc1ffcf677fba90600090a35b50505050505050565b6123f2610d9c565b1561240f5760405162461bcd60e51b815260040161050690613a03565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861201a611cfb565b600084815260ca60205260409020600f81018490554381556001810183905561246c611cfb565b600e820180546001600160a01b0319166001600160a01b03928316179081905560028301849055600f8301546040519092889216907f72edcd2156e970aa43901df5e48391d1d9fe1ffe6693052084440fe437dfdcf8906124d09087908990613bb4565b60405180910390a45050505050565b600084815260ca602052604090819020600381018581556004820185905560058201849055915190919086907ffbaee527feeadce62b5d1ba1bee6b23038f06a9f2ff96fdd3a23fc41d34539959061253c9088908890889061370e565b60405180910390a2505050505050565b600084815260ca6020526040812090600882018161256988611562565b8152602081019190915260409081016000208681556001810186905560028101859055905190915086907f8223269179a9832eb423b8f67bb2936c256eb6c42f0732ee7634b5c43f0922a19061253c9088908890889061370e565b600082815260ca602052604090206125df6006820183612959565b5060405183906001600160a01b038416907f8f6b843022496dfaa45bea46560133c63403c8f31b150d0a62c4b6f6a1c7a58790600090a3505050565b600083815260ca60205260408120906126348585611362565b6000818152600a84016020526040902054909150156126655760405162461bcd60e51b81526004016105069061394f565b6000818152600a8301602052604090819020849055516001600160a01b0385169086907fd0cfd4caf220754d14c3071b35e09bd382b93a8e5ac43fb710fe68b128df7d16906126b59087906136ee565b60405180910390a35050505050565b600054610100900460ff16806126dd575060005460ff16155b6126f95760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612724576000805460ff1961ff0019909116610100171660011790555b61272c61296e565b6127346129e1565b8015612746576000805461ff00191690555b50565b600054610100900460ff1680612762575060005460ff16155b61277e5760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff161580156127a9576000805460ff1961ff0019909116610100171660011790555b6127b161296e565b612734612aad565b600054610100900460ff16806127d2575060005460ff16155b6127ee5760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612819576000805460ff1961ff0019909116610100171660011790555b61282161296e565b6117bb82612b2b565b600061283533610d2e565b15612849575060131936013560601c610da3565b612851612bbb565b9050610da3565b5490565b8154600090821061287f5760405162461bcd60e51b8152600401610506906137d2565b8260000182815481106128a257634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b3b151590565b6000806000808451604114156128e55750505060208201516040830151606084015160001a61292b565b8451604014156129135750505060408201516020830151906001600160ff1b0381169060ff1c601b0161292b565b60405162461bcd60e51b81526004016105069061388c565b61293786828585612bbf565b9695505050505050565b60009081526001919091016020526040902054151590565b6000611d21836001600160a01b038416612cac565b600054610100900460ff1680612987575060005460ff16155b6129a35760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612734576000805460ff1961ff0019909116610100171660011790558015612746576000805461ff001916905550565b600054610100900460ff16806129fa575060005460ff16155b612a165760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612a41576000805460ff1961ff0019909116610100171660011790555b6000612a4b611cfb565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612746576000805461ff001916905550565b600054610100900460ff1680612ac6575060005460ff16155b612ae25760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612b0d576000805460ff1961ff0019909116610100171660011790555b6065805460ff191690558015612746576000805461ff001916905550565b600054610100900460ff1680612b44575060005460ff16155b612b605760405162461bcd60e51b815260040161050690613a2d565b600054610100900460ff16158015612b8b576000805460ff1961ff0019909116610100171660011790555b609780546001600160a01b0319166001600160a01b03841617905580156117cd576000805461ff00191690555050565b3390565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115612c015760405162461bcd60e51b815260040161050690613977565b8360ff16601b1480612c1657508360ff16601c145b612c325760405162461bcd60e51b815260040161050690613a7b565b600060018686868660405160008152602001604052604051612c579493929190613756565b6020604051602081039080840390855afa158015612c79573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166106c75760405162461bcd60e51b815260040161050690613774565b6000612cb88383612941565b612cee57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610843565b506000610843565b6040518061028001604052806014905b6060815260200190600190039081612d065790505090565b604051806040016040528060006001600160a01b03168152602001612d41612de2565b905290565b60408051808201909152600081526060602082015290565b828054612d6a90613c06565b90600052602060002090601f016020900481019282612d8c5760008555612dd2565b82601f10612da55782800160ff19823516178555612dd2565b82800160010185558215612dd2579182015b82811115612dd2578235825591602001919060010190612db7565b50612dde929150612e02565b5090565b604080516060810182526000808252602082018190529181019190915290565b5b80821115612dde5760008155600101612e03565b80356001600160a01b0381168114610d4057600080fd5b60008083601f840112612e3f578081fd5b5081356001600160401b03811115612e55578182fd5b6020830191508360208083028501011115612e6f57600080fd5b9250929050565b806060810183101561084357600080fd5b60008083601f840112612e98578182fd5b5081356001600160401b03811115612eae578182fd5b602083019150836020828501011115612e6f57600080fd5b600060208284031215612ed7578081fd5b611d2182612e17565b60008060408385031215612ef2578081fd5b612efb83612e17565b946020939093013593505050565b60008060008060608587031215612f1e578182fd5b612f2785612e17565b93506020850135925060408501356001600160401b03811115612f48578283fd5b612f5487828801612e87565b95989497509550505050565b60008060208385031215612f72578182fd5b82356001600160401b03811115612f87578283fd5b612f9385828601612e2e565b90969095509350505050565b600060208284031215612fb0578081fd5b5035919050565b60008060408385031215612fc9578182fd5b82359150612fd960208401612e17565b90509250929050565b60008060008060008060808789031215612ffa578182fd5b8635955061300a60208801612e17565b945060408701356001600160401b0380821115613025578384fd5b6130318a838b01612e2e565b90965094506060890135915080821115613049578384fd5b5061305689828a01612e2e565b979a9699509497509295939492505050565b6000806000806060858703121561307d578384fd5b8435935061308d60208601612e17565b925060408501356001600160401b03811115612f48578283fd5b60008060008060008060c087890312156130bf578182fd5b8635955060208701356001600160401b03808211156130dc578384fd5b6130e88a838b01612e2e565b90975095506040890135915080821115613100578384fd5b5061310d89828a01612e2e565b909450925061312190508860608901612e76565b90509295509295509295565b60008060008060808587031215613142578182fd5b5050823594602084013594506040840135936060013592509050565b6000806000806000806000806000806101e08b8d03121561317d578788fd5b8a35995060208b0135985060408b0135975060608b013596506131a38c60808d01612e76565b95506101a08b018c8111156131b6578485fd5b60e08c019550356001600160401b03808211156131d1578586fd5b6131dd8e838f01612e2e565b90965094506101c08d01359150808211156131f6578384fd5b506132038d828e01612e2e565b915080935050809150509295989b9194979a5092959850565b6000806040838503121561322e578182fd5b50508035926020909101359150565b60006020828403121561324e578081fd5b81516001600160e01b031981168114611d21578182fd5b60006020808385031215613277578182fd5b82356001600160401b038082111561328d578384fd5b818501915085601f8301126132a0578384fd5b8135818111156132b2576132b2613c62565b604051601f8201601f19168101850183811182821017156132d5576132d5613c62565b60405281815283820185018810156132eb578586fd5b818585018683013790810190930193909352509392505050565b60008060208385031215613317578182fd5b82356001600160401b0381111561332c578283fd5b612f9385828601612e87565b6000815180845260208085019450808401835b838110156133675781518752958201959082019060010161334b565b509495945050505050565b60008151808452815b818110156133975760208185018101518683018201520161337b565b818111156133a85782602083870101525b50601f01601f19169290920160200192915050565b93845260208401929092526040830152606082015260800190565b968752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b97885260208801969096526040870194909452606080870193909352608086019190915260a085015260c08401919091521b6bffffffffffffffffffffffff191660e082015260f40190565b98895260208901979097526040880195909552606080880194909452608087019290925260a086015260c08501521b6bffffffffffffffffffffffff191660e083015260f48201526101140190565b6000828483379101908152919050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b6001600160a01b0391909116815260200190565b6001600160a01b03959095168552602085019390935260408401919091526060830152608082015260a00190565b6000606082526135396060830186613338565b60208382038185015261354c8287613338565b84810360408601528551808252828701935090820190845b8181101561358357845160ff1683529383019391830191600101613564565b509098975050505050505050565b60208082526000906102a0830183820185845b60148110156135d357601f198785030183526135c1848351613372565b935091840191908401906001016135a4565b50919695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561363e57815180516001600160a01b0316855286015180518786015280870151868601528501516060850152608090930192908501906001016135fc565b5091979650505050505050565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561358357888303603f19018552815180516001600160a01b03168452870151878401879052805187850181905290880190899060608601905b808310156136ce57835115158252928a019260019290920191908a01906136ac565b5096890196945050509086019060010161366f565b901515815260200190565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526020830191909152604082015260600190565b928352602083019190915260ff16604082015260600190565b60008382526040602083015261080d6040830184613372565b93845260ff9290921660208401526040830152606082015260800190565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b6020808252600d908201526c4f55545f4f465f424f554e445360981b604082015260600190565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b6020808252600b908201526a4e4f545f4e45575f444f4360a81b604082015260600190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6020808252600b908201526a2d22a927afa9a2a72222a960a91b604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252600790820152664241445f53494760c81b604082015260600190565b6020808252600b908201526a1113d0d7d156141254915160aa1b604082015260600190565b6020808252600e908201526d4e554d5f5349475f45584953545360901b604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b6020808252600d908201526c1113d0d7d393d517d1561254d5609a1b604082015260600190565b6020808252600990820152681113d0d7d1561254d560ba1b604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b6020808252600a90820152694241445f41525241595360b01b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d24a72b20a624a22fa9a4a3a722a960911b604082015260600190565b60208082526015908201527414d251d3915494d7d393d517d19253905312569151605a1b604082015260600190565b6020808252600d908201526c0a692b48abe9a92a69a82a8869609b1b604082015260600190565b6020808252600690820152650aa9c82aaa8960d31b604082015260600190565b918252602082015260400190565b6000808335601e19843603018112613bd8578283fd5b8301803591506001600160401b03821115613bf1578283fd5b602001915036819003821315612e6f57600080fd5b600281046001821680613c1a57607f821691505b6020821081141561089357634e487b7160e01b600052602260045260246000fd5b6000600019821415613c5b57634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220f07ce1d801f658bf694a7d08e5dde4bb9893b2cdeb05366eb321ef037616784664736f6c63430008000033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:30493:15",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:15",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "65:124:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "75:29:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "97:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "84:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "84:20:15"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "75:5:15"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "167:16:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "176:1:15",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "179:1:15",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "169:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "169:12:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "169:12:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "126:5:15"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "137:5:15"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "152:3:15",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "157:1:15",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "148:3:15"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "148:11:15"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "161:1:15",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "144:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "144:19:15"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "133:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "133:31:15"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "123:2:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "123:42:15"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "116:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "116:50:15"
                  },
                  "nodeType": "YulIf",
                  "src": "113:2:15"
                }
              ]
            },
            "name": "abi_decode_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "44:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "55:5:15",
                "type": ""
              }
            ],
            "src": "14:175:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "284:310:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "333:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "342:6:15"
                            },
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "350:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "335:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "335:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "335:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "312:6:15"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "320:4:15",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "308:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "308:17:15"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "327:3:15"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "304:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "304:27:15"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "297:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "297:35:15"
                  },
                  "nodeType": "YulIf",
                  "src": "294:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "368:30:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "391:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "378:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "378:20:15"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "368:6:15"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "441:30:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "450:8:15"
                            },
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "460:8:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "443:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "443:26:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "443:26:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "413:6:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "421:18:15",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "410:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "410:30:15"
                  },
                  "nodeType": "YulIf",
                  "src": "407:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "480:29:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "496:6:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "504:4:15",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "492:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "492:17:15"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "480:8:15"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "572:16:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "581:1:15",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "584:1:15",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "574:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "574:12:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "574:12:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "532:6:15"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "544:6:15"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "552:4:15",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:17:15"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "528:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "528:30:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "560:4:15",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "524:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "524:41:15"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "567:3:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "521:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "521:50:15"
                  },
                  "nodeType": "YulIf",
                  "src": "518:2:15"
                }
              ]
            },
            "name": "abi_decode_t_array$_t_address_$dyn_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "247:6:15",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "255:3:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "263:8:15",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "273:6:15",
                "type": ""
              }
            ],
            "src": "194:400:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "676:87:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "686:18:15",
                  "value": {
                    "name": "offset",
                    "nodeType": "YulIdentifier",
                    "src": "698:6:15"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "686:8:15"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "741:16:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "750:1:15",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "753:1:15",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "743:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "743:12:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "743:12:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "723:6:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "731:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "719:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "719:15:15"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "736:3:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "716:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "716:24:15"
                  },
                  "nodeType": "YulIf",
                  "src": "713:2:15"
                }
              ]
            },
            "name": "abi_decode_t_array$_t_bytes32_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "647:6:15",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "655:3:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "663:8:15",
                "type": ""
              }
            ],
            "src": "599:164:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "842:303:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "891:30:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "900:8:15"
                            },
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "910:8:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "893:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "893:26:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "893:26:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "870:6:15"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "878:4:15",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "866:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "866:17:15"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "885:3:15"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "862:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "862:27:15"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "855:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "855:35:15"
                  },
                  "nodeType": "YulIf",
                  "src": "852:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "930:30:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "953:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "940:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "940:20:15"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "930:6:15"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1003:30:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "1012:8:15"
                            },
                            {
                              "name": "arrayPos",
                              "nodeType": "YulIdentifier",
                              "src": "1022:8:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1005:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1005:26:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1005:26:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "975:6:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "983:18:15",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "972:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "972:30:15"
                  },
                  "nodeType": "YulIf",
                  "src": "969:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1042:29:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1058:6:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1066:4:15",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1054:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1054:17:15"
                  },
                  "variableNames": [
                    {
                      "name": "arrayPos",
                      "nodeType": "YulIdentifier",
                      "src": "1042:8:15"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1123:16:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1132:1:15",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1135:1:15",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1125:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1125:12:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1125:12:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1094:6:15"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1102:6:15"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1090:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1090:19:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1111:4:15",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1086:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1086:30:15"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "1118:3:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1083:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1083:39:15"
                  },
                  "nodeType": "YulIf",
                  "src": "1080:2:15"
                }
              ]
            },
            "name": "abi_decode_t_bytes_calldata",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "805:6:15",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "813:3:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "arrayPos",
                "nodeType": "YulTypedName",
                "src": "821:8:15",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "831:6:15",
                "type": ""
              }
            ],
            "src": "768:377:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1220:128:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1266:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1275:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "1283:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1268:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1268:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1268:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1241:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1250:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1237:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1237:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1262:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1233:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1233:32:15"
                  },
                  "nodeType": "YulIf",
                  "src": "1230:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1301:41:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1332:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "1311:20:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1311:31:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1301:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1186:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1197:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1209:6:15",
                "type": ""
              }
            ],
            "src": "1150:198:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1440:179:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1486:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "1495:6:15"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "1503:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1488:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1488:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1488:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1461:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1470:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1457:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1457:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1482:2:15",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1453:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1453:32:15"
                  },
                  "nodeType": "YulIf",
                  "src": "1450:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1521:41:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1552:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "1531:20:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1531:31:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1521:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1571:42:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1598:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1609:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1594:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1594:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1581:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1581:32:15"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1571:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_bytes32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1398:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1409:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1421:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1429:6:15",
                "type": ""
              }
            ],
            "src": "1353:266:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1747:452:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1793:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "1802:6:15"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "1810:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1795:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1795:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1795:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1768:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1777:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1764:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1764:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1789:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1760:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1760:32:15"
                  },
                  "nodeType": "YulIf",
                  "src": "1757:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1828:41:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "1859:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "1838:20:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1838:31:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "1828:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1878:42:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1905:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1916:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1901:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1901:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1888:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1888:32:15"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "1878:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1929:46:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1960:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "1971:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1956:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1956:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1943:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1943:32:15"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "1933:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2018:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "2027:6:15"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "2035:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2020:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2020:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2020:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1990:6:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1998:18:15",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1987:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1987:30:15"
                  },
                  "nodeType": "YulIf",
                  "src": "1984:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2053:86:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2111:9:15"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2122:6:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2107:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2107:22:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "2131:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "2079:27:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2079:60:15"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "2057:8:15",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "2067:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2148:18:15",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "2158:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "2148:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2175:18:15",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "2185:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "2175:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_bytes32t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1689:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1700:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1712:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1720:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "1728:6:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "1736:6:15",
                "type": ""
              }
            ],
            "src": "1624:575:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2309:358:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2355:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2364:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2372:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2357:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2357:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2357:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2330:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2339:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2326:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2326:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2351:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2322:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2322:32:15"
                  },
                  "nodeType": "YulIf",
                  "src": "2319:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2390:37:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2417:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2404:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2404:23:15"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "2394:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2470:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2479:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2487:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2472:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2472:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2472:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2442:6:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2450:18:15",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2439:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2439:30:15"
                  },
                  "nodeType": "YulIf",
                  "src": "2436:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2505:102:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2579:9:15"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2590:6:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2575:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2575:22:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "2599:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_address_$dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "2531:43:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2531:76:15"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nodeType": "YulTypedName",
                      "src": "2509:8:15",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "2519:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2616:18:15",
                  "value": {
                    "name": "value0_1",
                    "nodeType": "YulIdentifier",
                    "src": "2626:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2616:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2643:18:15",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "2653:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "2643:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_bytes32_$dyn_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2267:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2278:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2290:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2298:6:15",
                "type": ""
              }
            ],
            "src": "2204:463:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2742:120:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2788:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2797:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "2805:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2790:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2790:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2790:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2763:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2772:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2759:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2759:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2784:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2755:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2755:32:15"
                  },
                  "nodeType": "YulIf",
                  "src": "2752:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2823:33:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "2846:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2833:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2833:23:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "2823:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2708:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2719:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2731:6:15",
                "type": ""
              }
            ],
            "src": "2672:190:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2954:179:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3000:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3009:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3017:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3002:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3002:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3002:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2975:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2984:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2971:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2971:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2996:2:15",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2967:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2967:32:15"
                  },
                  "nodeType": "YulIf",
                  "src": "2964:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3035:33:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3058:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3045:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3045:23:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3035:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3077:50:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3112:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3123:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3108:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3108:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "3087:20:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3087:40:15"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3077:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2912:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2923:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2935:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2943:6:15",
                "type": ""
              }
            ],
            "src": "2867:266:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3340:769:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3387:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3396:6:15"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3404:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3389:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3389:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3389:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3361:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3370:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3357:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3357:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3382:3:15",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3353:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3353:33:15"
                  },
                  "nodeType": "YulIf",
                  "src": "3350:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3422:33:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3445:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3432:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3432:23:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3422:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3464:50:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3499:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3510:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3495:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3495:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "3474:20:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3474:40:15"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3464:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3523:46:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3554:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3565:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3550:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3550:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3537:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3537:32:15"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "3527:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3578:28:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "3588:18:15",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "3582:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3633:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3642:6:15"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3650:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3635:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3635:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3635:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3621:6:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3629:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3618:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3618:14:15"
                  },
                  "nodeType": "YulIf",
                  "src": "3615:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3668:102:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3742:9:15"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3753:6:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3738:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3738:22:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3762:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_address_$dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "3694:43:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3694:76:15"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "3672:8:15",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "3682:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3779:18:15",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "3789:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "3779:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3806:18:15",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "3816:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "3806:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3833:48:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3866:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3877:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3862:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3862:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3849:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3849:32:15"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "3837:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3910:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3919:6:15"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "3927:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3912:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3912:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3912:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "3896:8:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "3906:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3893:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3893:16:15"
                  },
                  "nodeType": "YulIf",
                  "src": "3890:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3945:104:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4019:9:15"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "4030:8:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4015:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4015:24:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4041:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_address_$dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "3971:43:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3971:78:15"
                  },
                  "variables": [
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "3949:8:15",
                      "type": ""
                    },
                    {
                      "name": "value5_1",
                      "nodeType": "YulTypedName",
                      "src": "3959:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4058:18:15",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "4068:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "4058:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4085:18:15",
                  "value": {
                    "name": "value5_1",
                    "nodeType": "YulIdentifier",
                    "src": "4095:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "4085:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3266:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3277:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3289:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3297:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "3305:6:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "3313:6:15",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "3321:6:15",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "3329:6:15",
                "type": ""
              }
            ],
            "src": "3138:971:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4237:452:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4283:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4292:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4300:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4285:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4285:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4285:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4258:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4267:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4254:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4254:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4279:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4250:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4250:32:15"
                  },
                  "nodeType": "YulIf",
                  "src": "4247:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4318:33:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4341:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4328:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4328:23:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4318:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4360:50:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4395:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4406:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4391:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4391:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "4370:20:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4370:40:15"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4360:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4419:46:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4450:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4461:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4446:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4446:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4433:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4433:32:15"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "4423:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4508:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "4517:6:15"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "4525:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4510:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4510:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4510:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4480:6:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4488:18:15",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4477:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4477:30:15"
                  },
                  "nodeType": "YulIf",
                  "src": "4474:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4543:86:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4601:9:15"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "4612:6:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4597:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4597:22:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4621:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "4569:27:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4569:60:15"
                  },
                  "variables": [
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "4547:8:15",
                      "type": ""
                    },
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "4557:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4638:18:15",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "4648:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "4638:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4665:18:15",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "4675:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "4665:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_addresst_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4179:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4190:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4202:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4210:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "4218:6:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "4226:6:15",
                "type": ""
              }
            ],
            "src": "4114:575:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4921:796:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4968:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "4977:6:15"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "4985:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4970:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4970:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4970:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4942:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4951:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4938:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4938:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4963:3:15",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4934:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4934:33:15"
                  },
                  "nodeType": "YulIf",
                  "src": "4931:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5003:33:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5026:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5013:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5013:23:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5003:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5045:46:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5076:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5087:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5072:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5072:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5059:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5059:32:15"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "5049:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5100:28:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5110:18:15",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5104:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5155:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5164:6:15"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5172:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5157:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5157:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5157:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "5143:6:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5151:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5140:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5140:14:15"
                  },
                  "nodeType": "YulIf",
                  "src": "5137:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5190:102:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5264:9:15"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "5275:6:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5260:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5260:22:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5284:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_address_$dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "5216:43:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5216:76:15"
                  },
                  "variables": [
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "5194:8:15",
                      "type": ""
                    },
                    {
                      "name": "value2_1",
                      "nodeType": "YulTypedName",
                      "src": "5204:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5301:18:15",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "5311:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "5301:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5328:18:15",
                  "value": {
                    "name": "value2_1",
                    "nodeType": "YulIdentifier",
                    "src": "5338:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "5328:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5355:48:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5388:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5399:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5384:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5384:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5371:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5371:32:15"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "5359:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5432:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5441:6:15"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "5449:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5434:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5434:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5434:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "5418:8:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5428:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5415:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5415:16:15"
                  },
                  "nodeType": "YulIf",
                  "src": "5412:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5467:104:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5541:9:15"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "5552:8:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5537:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5537:24:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5563:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_address_$dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "5493:43:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5493:78:15"
                  },
                  "variables": [
                    {
                      "name": "value3_1",
                      "nodeType": "YulTypedName",
                      "src": "5471:8:15",
                      "type": ""
                    },
                    {
                      "name": "value4_1",
                      "nodeType": "YulTypedName",
                      "src": "5481:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5580:18:15",
                  "value": {
                    "name": "value3_1",
                    "nodeType": "YulIdentifier",
                    "src": "5590:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "5580:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5607:18:15",
                  "value": {
                    "name": "value4_1",
                    "nodeType": "YulIdentifier",
                    "src": "5617:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "5607:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5634:77:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5687:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5698:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5683:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5683:18:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5703:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_bytes32_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "5644:38:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5644:67:15"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "5634:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_array$_t_uint256_$dyn_calldata_ptrt_array$_t_bytes_calldata_ptr_$dyn_calldata_ptrt_array$_t_bytes32_$3_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4847:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4858:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4870:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4878:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "4886:6:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "4894:6:15",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "4902:6:15",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "4910:6:15",
                "type": ""
              }
            ],
            "src": "4694:1023:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5843:274:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5890:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "5899:6:15"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "5907:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5892:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5892:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5892:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5864:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5873:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5860:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5860:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5885:3:15",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5856:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5856:33:15"
                  },
                  "nodeType": "YulIf",
                  "src": "5853:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5925:33:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5948:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5935:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5935:23:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5925:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5967:42:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5994:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6005:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5990:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5990:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5977:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5977:32:15"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "5967:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6018:42:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6045:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6056:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6041:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6041:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6028:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6028:32:15"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "6018:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6069:42:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6096:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6107:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6092:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6092:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6079:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6079:32:15"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "6069:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_bytes32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5785:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5796:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5808:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5816:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5824:6:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "5832:6:15",
                "type": ""
              }
            ],
            "src": "5722:395:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6431:1065:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6478:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "6487:6:15"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "6495:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6480:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6480:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6480:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6452:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6461:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6448:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6448:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6473:3:15",
                        "type": "",
                        "value": "480"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6444:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6444:33:15"
                  },
                  "nodeType": "YulIf",
                  "src": "6441:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6513:33:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6536:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6523:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6523:23:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6513:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6555:42:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6582:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6593:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6578:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6578:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6565:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6565:32:15"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "6555:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6606:42:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6633:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6644:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6629:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6629:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6616:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6616:32:15"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "6606:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6657:42:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6684:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6695:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6680:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6680:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6667:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6667:32:15"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "6657:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6708:78:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6761:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6772:3:15",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6757:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6757:19:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6778:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_bytes32_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "6718:38:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6718:68:15"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "6708:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6795:29:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6809:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6820:3:15",
                        "type": "",
                        "value": "416"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6805:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6805:19:15"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "6799:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6852:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "6861:6:15"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "6869:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6854:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6854:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6854:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6839:2:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6843:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6836:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6836:15:15"
                  },
                  "nodeType": "YulIf",
                  "src": "6833:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6887:29:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6901:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6912:3:15",
                        "type": "",
                        "value": "224"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6897:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6897:19:15"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "6887:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6925:30:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6952:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6939:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6939:16:15"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "6929:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6964:28:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "6974:18:15",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "6968:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7019:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "7028:6:15"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "7036:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7021:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7021:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7021:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "7007:6:15"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "7015:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7004:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7004:14:15"
                  },
                  "nodeType": "YulIf",
                  "src": "7001:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7054:102:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7128:9:15"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "7139:6:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7124:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7124:22:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7148:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_address_$dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "7080:43:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7080:76:15"
                  },
                  "variables": [
                    {
                      "name": "value6_1",
                      "nodeType": "YulTypedName",
                      "src": "7058:8:15",
                      "type": ""
                    },
                    {
                      "name": "value7_1",
                      "nodeType": "YulTypedName",
                      "src": "7068:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7165:18:15",
                  "value": {
                    "name": "value6_1",
                    "nodeType": "YulIdentifier",
                    "src": "7175:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nodeType": "YulIdentifier",
                      "src": "7165:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7192:18:15",
                  "value": {
                    "name": "value7_1",
                    "nodeType": "YulIdentifier",
                    "src": "7202:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value7",
                      "nodeType": "YulIdentifier",
                      "src": "7192:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7219:49:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7252:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7263:3:15",
                            "type": "",
                            "value": "448"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7248:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7248:19:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7235:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7235:33:15"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "7223:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7297:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value8",
                              "nodeType": "YulIdentifier",
                              "src": "7306:6:15"
                            },
                            {
                              "name": "value8",
                              "nodeType": "YulIdentifier",
                              "src": "7314:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7299:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7299:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7299:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "7283:8:15"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "7293:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7280:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7280:16:15"
                  },
                  "nodeType": "YulIf",
                  "src": "7277:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7332:104:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7406:9:15"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "7417:8:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7402:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7402:24:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7428:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_array$_t_address_$dyn_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "7358:43:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7358:78:15"
                  },
                  "variables": [
                    {
                      "name": "value8_1",
                      "nodeType": "YulTypedName",
                      "src": "7336:8:15",
                      "type": ""
                    },
                    {
                      "name": "value9_1",
                      "nodeType": "YulTypedName",
                      "src": "7346:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7445:18:15",
                  "value": {
                    "name": "value8_1",
                    "nodeType": "YulIdentifier",
                    "src": "7455:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value8",
                      "nodeType": "YulIdentifier",
                      "src": "7445:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7472:18:15",
                  "value": {
                    "name": "value9_1",
                    "nodeType": "YulIdentifier",
                    "src": "7482:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value9",
                      "nodeType": "YulIdentifier",
                      "src": "7472:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_bytes32t_uint256t_uint256t_array$_t_bytes32_$3_calldata_ptrt_array$_t_bytes32_$6_calldata_ptrt_array$_t_address_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6325:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6336:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6348:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6356:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "6364:6:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "6372:6:15",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "6380:6:15",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "6388:6:15",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "6396:6:15",
                "type": ""
              },
              {
                "name": "value7",
                "nodeType": "YulTypedName",
                "src": "6404:6:15",
                "type": ""
              },
              {
                "name": "value8",
                "nodeType": "YulTypedName",
                "src": "6412:6:15",
                "type": ""
              },
              {
                "name": "value9",
                "nodeType": "YulTypedName",
                "src": "6420:6:15",
                "type": ""
              }
            ],
            "src": "6122:1374:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7588:171:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7634:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7643:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7651:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7636:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7636:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7636:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7609:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7618:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7605:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7605:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7630:2:15",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7601:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7601:32:15"
                  },
                  "nodeType": "YulIf",
                  "src": "7598:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7669:33:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7692:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7679:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7679:23:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7669:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7711:42:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7738:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7749:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7734:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7734:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7721:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7721:32:15"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "7711:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7546:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7557:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7569:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "7577:6:15",
                "type": ""
              }
            ],
            "src": "7501:258:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7844:230:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7890:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7899:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7907:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7892:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7892:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7892:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7865:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7874:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7861:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7861:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7886:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7857:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7857:32:15"
                  },
                  "nodeType": "YulIf",
                  "src": "7854:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7925:29:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7944:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "7938:5:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7938:16:15"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "7929:5:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8018:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8027:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8035:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8020:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8020:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8020:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "7976:5:15"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7987:5:15"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7998:3:15",
                                    "type": "",
                                    "value": "224"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8003:10:15",
                                    "type": "",
                                    "value": "0xffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "7994:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7994:20:15"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "7983:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7983:32:15"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "7973:2:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7973:43:15"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "7966:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7966:51:15"
                  },
                  "nodeType": "YulIf",
                  "src": "7963:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8053:15:15",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "8063:5:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8053:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes4_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7810:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7821:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7833:6:15",
                "type": ""
              }
            ],
            "src": "7764:310:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8158:878:15",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8168:12:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "8178:2:15",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "8172:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8225:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8234:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8242:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8227:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8227:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8227:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8200:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8209:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8196:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8196:23:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8221:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8192:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8192:32:15"
                  },
                  "nodeType": "YulIf",
                  "src": "8189:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8260:37:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8287:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8274:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8274:23:15"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "8264:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8306:28:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "8316:18:15",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "8310:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8361:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8370:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8378:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8363:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8363:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8363:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8349:6:15"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "8357:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8346:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8346:14:15"
                  },
                  "nodeType": "YulIf",
                  "src": "8343:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8396:32:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8410:9:15"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8421:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8406:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8406:22:15"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "8400:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8476:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8485:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8493:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8478:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8478:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8478:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "8455:2:15"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8459:4:15",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "8451:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8451:13:15"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8466:7:15"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "8447:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8447:27:15"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "8440:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8440:35:15"
                  },
                  "nodeType": "YulIf",
                  "src": "8437:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8511:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "8534:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8521:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8521:16:15"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "8515:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8560:22:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "8562:16:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8562:18:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8562:18:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "8552:2:15"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "8556:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8549:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8549:10:15"
                  },
                  "nodeType": "YulIf",
                  "src": "8546:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8591:23:15",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8611:2:15",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "8605:5:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8605:9:15"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "8595:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8623:67:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "8649:6:15"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "8665:2:15"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8669:4:15",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8661:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8661:13:15"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8680:2:15",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "8676:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8676:7:15"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "8657:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8657:27:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8645:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8645:40:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8687:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8641:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8641:49:15"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "8627:10:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8749:22:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "8751:16:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8751:18:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8751:18:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "8708:10:15"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "8720:2:15"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "8705:2:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8705:18:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "8728:10:15"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "8740:6:15"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "8725:2:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8725:22:15"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "8702:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8702:46:15"
                  },
                  "nodeType": "YulIf",
                  "src": "8699:2:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8787:2:15",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "8791:10:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8780:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8780:22:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8780:22:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "8818:6:15"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "8826:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8811:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8811:18:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8811:18:15"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8875:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8884:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "8892:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8877:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8877:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8877:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_3",
                                "nodeType": "YulIdentifier",
                                "src": "8852:2:15"
                              },
                              {
                                "name": "_4",
                                "nodeType": "YulIdentifier",
                                "src": "8856:2:15"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "8848:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8848:11:15"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "8861:2:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8844:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8844:20:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8866:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8841:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8841:33:15"
                  },
                  "nodeType": "YulIf",
                  "src": "8838:2:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "8927:6:15"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "8935:2:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8923:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8923:15:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "8944:2:15"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "8948:2:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8940:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8940:11:15"
                      },
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "8953:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "8910:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8910:46:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8910:46:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "8980:6:15"
                              },
                              {
                                "name": "_4",
                                "nodeType": "YulIdentifier",
                                "src": "8988:2:15"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "8976:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "8976:15:15"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "8993:2:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8972:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8972:24:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "8998:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8965:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8965:40:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8965:40:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9014:16:15",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "9024:6:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9014:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8124:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8135:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8147:6:15",
                "type": ""
              }
            ],
            "src": "8079:957:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9131:342:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9177:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9186:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9194:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9179:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9179:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9179:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9152:7:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9161:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9148:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9148:23:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9173:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9144:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9144:32:15"
                  },
                  "nodeType": "YulIf",
                  "src": "9141:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9212:37:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9239:9:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9226:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9226:23:15"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "9216:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9292:26:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9301:6:15"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "9309:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9294:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9294:22:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9294:22:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9264:6:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9272:18:15",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9261:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9261:30:15"
                  },
                  "nodeType": "YulIf",
                  "src": "9258:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9327:86:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9385:9:15"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "9396:6:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9381:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9381:22:15"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9405:7:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_t_bytes_calldata",
                      "nodeType": "YulIdentifier",
                      "src": "9353:27:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9353:60:15"
                  },
                  "variables": [
                    {
                      "name": "value0_1",
                      "nodeType": "YulTypedName",
                      "src": "9331:8:15",
                      "type": ""
                    },
                    {
                      "name": "value1_1",
                      "nodeType": "YulTypedName",
                      "src": "9341:8:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9422:18:15",
                  "value": {
                    "name": "value0_1",
                    "nodeType": "YulIdentifier",
                    "src": "9432:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9422:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9449:18:15",
                  "value": {
                    "name": "value1_1",
                    "nodeType": "YulIdentifier",
                    "src": "9459:8:15"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "9449:6:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9089:9:15",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9100:7:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9112:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9120:6:15",
                "type": ""
              }
            ],
            "src": "9041:432:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9545:376:15",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9555:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "9575:5:15"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "9569:5:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9569:12:15"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "9559:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9597:3:15"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "9602:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9590:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9590:19:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9590:19:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9618:14:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "9628:4:15",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "9622:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9641:19:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9652:3:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9657:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9648:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9648:12:15"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "9641:3:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9669:28:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "9687:5:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9694:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9683:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9683:14:15"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "9673:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9706:12:15",
                  "value": {
                    "name": "end",
                    "nodeType": "YulIdentifier",
                    "src": "9715:3:15"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "9710:1:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9776:120:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "9797:3:15"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "9808:6:15"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "9802:5:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "9802:13:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "9790:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9790:26:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9790:26:15"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "9829:19:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "9840:3:15"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "9845:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "9836:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9836:12:15"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9829:3:15"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "9861:25:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "9875:6:15"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "9883:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "9871:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9871:15:15"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "9861:6:15"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "9738:1:15"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "9741:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "9735:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9735:13:15"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "9749:18:15",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "9751:14:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "9760:1:15"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "9763:1:15",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "9756:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9756:9:15"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "9751:1:15"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "9731:3:15",
                    "statements": []
                  },
                  "src": "9727:169:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9905:10:15",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "9912:3:15"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "9905:3:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_array$_t_bytes32_$dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "9522:5:15",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "9529:3:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "9537:3:15",
                "type": ""
              }
            ],
            "src": "9478:443:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9977:426:15",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9987:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "10007:5:15"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "10001:5:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10001:12:15"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "9991:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10029:3:15"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10034:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10022:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10022:19:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10022:19:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10050:12:15",
                  "value": {
                    "name": "end",
                    "nodeType": "YulIdentifier",
                    "src": "10059:3:15"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "10054:1:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10123:110:15",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "10137:14:15",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "10147:4:15",
                          "type": "",
                          "value": "0x20"
                        },
                        "variables": [
                          {
                            "name": "_1",
                            "nodeType": "YulTypedName",
                            "src": "10141:2:15",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nodeType": "YulIdentifier",
                                      "src": "10179:3:15"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "10184:1:15"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "10175:3:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "10175:11:15"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10188:2:15"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "10171:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10171:20:15"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "10207:5:15"
                                        },
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "10214:1:15"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10203:3:15"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10203:13:15"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "10218:2:15"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "10199:3:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "10199:22:15"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "10193:5:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10193:29:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "10164:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10164:59:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10164:59:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "10082:1:15"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10085:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "10079:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10079:13:15"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "10093:21:15",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "10095:17:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "10104:1:15"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "10107:4:15",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "10100:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10100:12:15"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "10095:1:15"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "10075:3:15",
                    "statements": []
                  },
                  "src": "10071:162:15"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10267:64:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "pos",
                                      "nodeType": "YulIdentifier",
                                      "src": "10296:3:15"
                                    },
                                    {
                                      "name": "length",
                                      "nodeType": "YulIdentifier",
                                      "src": "10301:6:15"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "10292:3:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "10292:16:15"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "10310:4:15",
                                  "type": "",
                                  "value": "0x20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "10288:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "10288:27:15"
                            },
                            {
                              "name": "end",
                              "nodeType": "YulIdentifier",
                              "src": "10317:3:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "10281:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10281:40:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10281:40:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "10248:1:15"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "10251:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10245:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10245:13:15"
                  },
                  "nodeType": "YulIf",
                  "src": "10242:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10340:57:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "10355:3:15"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10368:6:15"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10376:2:15",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10364:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10364:15:15"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10385:2:15",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "10381:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10381:7:15"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "10360:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "10360:29:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10351:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10351:39:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10392:4:15",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10347:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10347:50:15"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "10340:3:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "9954:5:15",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "9961:3:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "9969:3:15",
                "type": ""
              }
            ],
            "src": "9926:477:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10611:175:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10628:3:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "10633:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10621:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10621:19:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10621:19:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "10660:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10665:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10656:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10656:12:15"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "10670:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10649:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10649:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10649:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "10697:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10702:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10693:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10693:12:15"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "10707:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10686:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10686:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10686:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "10734:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10739:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10730:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10730:12:15"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "10744:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10723:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10723:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10723:28:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10760:20:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10771:3:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10776:3:15",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10767:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10767:13:15"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "10760:3:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "10563:3:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "10568:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "10576:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "10584:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10592:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "10603:3:15",
                "type": ""
              }
            ],
            "src": "10408:378:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11078:289:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "11095:3:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "11100:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11088:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11088:19:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11088:19:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11127:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11132:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11123:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11123:12:15"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "11137:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11116:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11116:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11116:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11164:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11169:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11160:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11160:12:15"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "11174:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11153:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11153:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11153:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11201:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11206:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11197:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11197:12:15"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "11211:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11190:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11190:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11190:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11238:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11243:3:15",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11234:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11234:13:15"
                      },
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "11249:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11227:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11227:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11227:29:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11276:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11281:3:15",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11272:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11272:13:15"
                      },
                      {
                        "name": "value5",
                        "nodeType": "YulIdentifier",
                        "src": "11287:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11265:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11265:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11265:29:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11314:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11319:3:15",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11310:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11310:13:15"
                      },
                      {
                        "name": "value6",
                        "nodeType": "YulIdentifier",
                        "src": "11325:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11303:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11303:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11303:29:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11341:20:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "11352:3:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11357:3:15",
                        "type": "",
                        "value": "224"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11348:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11348:13:15"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "11341:3:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "11006:3:15",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "11011:6:15",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "11019:6:15",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "11027:6:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "11035:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "11043:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "11051:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "11059:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "11070:3:15",
                "type": ""
              }
            ],
            "src": "10791:576:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11687:374:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "11704:3:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "11709:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11697:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11697:19:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11697:19:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11736:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11741:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11732:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11732:12:15"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "11746:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11725:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11725:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11725:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11773:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11778:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11769:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11769:12:15"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "11783:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11762:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11762:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11762:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11810:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11815:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11806:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11806:12:15"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "11820:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11799:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11799:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11799:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11847:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11852:3:15",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11843:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11843:13:15"
                      },
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "11858:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11836:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11836:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11836:29:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11885:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11890:3:15",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11881:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11881:13:15"
                      },
                      {
                        "name": "value5",
                        "nodeType": "YulIdentifier",
                        "src": "11896:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11874:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11874:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11874:29:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11923:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11928:3:15",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11919:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11919:13:15"
                      },
                      {
                        "name": "value6",
                        "nodeType": "YulIdentifier",
                        "src": "11934:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11912:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11912:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11912:29:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11961:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11966:3:15",
                            "type": "",
                            "value": "224"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11957:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11957:13:15"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11980:2:15",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value7",
                                "nodeType": "YulIdentifier",
                                "src": "11984:6:15"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "11976:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "11976:15:15"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11997:26:15",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "11993:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "11993:31:15"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "11972:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11972:53:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11950:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11950:76:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11950:76:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12035:20:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12046:3:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12051:3:15",
                        "type": "",
                        "value": "244"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12042:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12042:13:15"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "12035:3:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_address__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "11607:3:15",
                "type": ""
              },
              {
                "name": "value7",
                "nodeType": "YulTypedName",
                "src": "11612:6:15",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "11620:6:15",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "11628:6:15",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "11636:6:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "11644:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "11652:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "11660:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "11668:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "11679:3:15",
                "type": ""
              }
            ],
            "src": "11372:689:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12409:412:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12426:3:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "12431:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12419:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12419:19:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12419:19:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12458:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12463:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12454:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12454:12:15"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "12468:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12447:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12447:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12447:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12495:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12500:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12491:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12491:12:15"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "12505:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12484:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12484:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12484:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12532:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12537:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12528:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12528:12:15"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "12542:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12521:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12521:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12521:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12569:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12574:3:15",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12565:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12565:13:15"
                      },
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "12580:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12558:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12558:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12558:29:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12607:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12612:3:15",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12603:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12603:13:15"
                      },
                      {
                        "name": "value5",
                        "nodeType": "YulIdentifier",
                        "src": "12618:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12596:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12596:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12596:29:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12645:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12650:3:15",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12641:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12641:13:15"
                      },
                      {
                        "name": "value6",
                        "nodeType": "YulIdentifier",
                        "src": "12656:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12634:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12634:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12634:29:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12683:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12688:3:15",
                            "type": "",
                            "value": "224"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12679:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12679:13:15"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12702:2:15",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value7",
                                "nodeType": "YulIdentifier",
                                "src": "12706:6:15"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "12698:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12698:15:15"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12719:26:15",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "12715:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12715:31:15"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "12694:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12694:53:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12672:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12672:76:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12672:76:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12768:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12773:3:15",
                            "type": "",
                            "value": "244"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12764:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12764:13:15"
                      },
                      {
                        "name": "value8",
                        "nodeType": "YulIdentifier",
                        "src": "12779:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12757:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12757:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12757:29:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12795:20:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12806:3:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12811:3:15",
                        "type": "",
                        "value": "276"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12802:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12802:13:15"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "12795:3:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_address_t_uint256__to_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_address_t_uint256__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "12321:3:15",
                "type": ""
              },
              {
                "name": "value8",
                "nodeType": "YulTypedName",
                "src": "12326:6:15",
                "type": ""
              },
              {
                "name": "value7",
                "nodeType": "YulTypedName",
                "src": "12334:6:15",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "12342:6:15",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "12350:6:15",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "12358:6:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "12366:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "12374:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "12382:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "12390:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "12401:3:15",
                "type": ""
              }
            ],
            "src": "12066:755:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12975:126:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12998:3:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "13003:6:15"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "13011:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "12985:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12985:33:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12985:33:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13027:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "13041:3:15"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "13046:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13037:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13037:16:15"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "13031:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "13069:2:15"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "13073:3:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13062:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13062:15:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13062:15:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13086:9:15",
                  "value": {
                    "name": "_1",
                    "nodeType": "YulIdentifier",
                    "src": "13093:2:15"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "13086:3:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_string_calldata_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "12943:3:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "12948:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "12956:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "12967:3:15",
                "type": ""
              }
            ],
            "src": "12826:275:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13326:160:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "13343:3:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13348:66:15",
                        "type": "",
                        "value": "0x19457468657265756d205369676e6564204d6573736167653a0a333200000000"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13336:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13336:79:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13336:79:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "13435:3:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13440:2:15",
                            "type": "",
                            "value": "28"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13431:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13431:12:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "13445:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13424:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13424:28:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13424:28:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13461:19:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "13472:3:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13477:2:15",
                        "type": "",
                        "value": "60"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13468:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13468:12:15"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "13461:3:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "13302:3:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13307:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "13318:3:15",
                "type": ""
              }
            ],
            "src": "13106:380:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13592:102:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "13602:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13614:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13625:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13610:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13610:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13602:4:15"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13644:9:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "13659:6:15"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13675:3:15",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13680:1:15",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "13671:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13671:11:15"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13684:1:15",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "13667:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13667:19:15"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13655:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13655:32:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13637:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13637:51:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13637:51:15"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13561:9:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13572:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13583:4:15",
                "type": ""
              }
            ],
            "src": "13491:203:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13912:276:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "13922:27:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13934:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13945:3:15",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13930:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13930:19:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "13922:4:15"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "13965:9:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "13980:6:15"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13996:3:15",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14001:1:15",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "13992:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13992:11:15"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14005:1:15",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "13988:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13988:19:15"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13976:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13976:32:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13958:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13958:51:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13958:51:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14029:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14040:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14025:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14025:18:15"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "14045:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14018:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14018:34:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14018:34:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14072:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14083:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14068:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14068:18:15"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "14088:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14061:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14061:34:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14061:34:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14115:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14126:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14111:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14111:18:15"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "14131:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14104:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14104:34:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14104:34:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14158:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14169:3:15",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14154:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14154:19:15"
                      },
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "14175:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14147:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14147:35:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14147:35:15"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_bytes32_t_uint256_t_uint256_t_uint256__to_t_address_t_bytes32_t_uint256_t_uint256_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13849:9:15",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "13860:6:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "13868:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "13876:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "13884:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13892:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "13903:4:15",
                "type": ""
              }
            ],
            "src": "13699:489:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14496:727:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14513:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14524:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14506:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14506:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14506:21:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14536:76:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "14585:6:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14597:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14608:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14593:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14593:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_array$_t_bytes32_$dyn",
                      "nodeType": "YulIdentifier",
                      "src": "14550:34:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14550:62:15"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "14540:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14621:12:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "14631:2:15",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "14625:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14653:9:15"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "14664:2:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14649:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14649:18:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "14673:6:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14681:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "14669:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14669:22:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14642:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14642:50:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14642:50:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14701:64:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "14750:6:15"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "14758:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_array$_t_bytes32_$dyn",
                      "nodeType": "YulIdentifier",
                      "src": "14715:34:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14715:50:15"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "14705:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14785:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14796:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14781:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14781:18:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "14805:6:15"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14813:9:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "14801:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14801:22:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14774:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14774:50:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14774:50:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14833:17:15",
                  "value": {
                    "name": "tail_2",
                    "nodeType": "YulIdentifier",
                    "src": "14844:6:15"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "14837:3:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14859:27:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "14879:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "14873:5:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14873:13:15"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "14863:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "14902:6:15"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "14910:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14895:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14895:22:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14895:22:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14926:22:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "14937:6:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "14945:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14933:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14933:15:15"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "14926:3:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14957:29:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "14975:6:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "14983:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14971:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14971:15:15"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "14961:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14995:13:15",
                  "value": {
                    "name": "tail",
                    "nodeType": "YulIdentifier",
                    "src": "15004:4:15"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "14999:1:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15066:131:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "15087:3:15"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "srcPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "15102:6:15"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "15096:5:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "15096:13:15"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "15111:4:15",
                                  "type": "",
                                  "value": "0xff"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "15092:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "15092:24:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "15080:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15080:37:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15080:37:15"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "15130:19:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "15141:3:15"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "15146:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "15137:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15137:12:15"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "15130:3:15"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "15162:25:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "15176:6:15"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "15184:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "15172:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15172:15:15"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "15162:6:15"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "15028:1:15"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "15031:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "15025:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15025:13:15"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "15039:18:15",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "15041:14:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "15050:1:15"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15053:1:15",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "15046:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15046:9:15"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "15041:1:15"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "15021:3:15",
                    "statements": []
                  },
                  "src": "15017:180:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15206:11:15",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "15214:3:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15206:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_uint8_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_uint8_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14449:9:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "14460:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "14468:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14476:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14487:4:15",
                "type": ""
              }
            ],
            "src": "14193:1030:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15395:526:15",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15405:12:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "15415:2:15",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "15409:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15426:32:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15444:9:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "15455:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15440:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15440:18:15"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "15430:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15474:9:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "15485:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15467:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15467:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15467:21:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15497:17:15",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "15508:6:15"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "15501:3:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15523:13:15",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "15530:6:15"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "15523:3:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15545:33:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15563:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15574:3:15",
                        "type": "",
                        "value": "672"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15559:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15559:19:15"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "15549:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15587:20:15",
                  "value": {
                    "name": "value0",
                    "nodeType": "YulIdentifier",
                    "src": "15601:6:15"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "15591:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15616:13:15",
                  "value": {
                    "name": "tail",
                    "nodeType": "YulIdentifier",
                    "src": "15625:4:15"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "15620:1:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15685:207:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "15706:3:15"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "tail_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "15719:6:15"
                                    },
                                    {
                                      "name": "headStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "15727:9:15"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nodeType": "YulIdentifier",
                                    "src": "15715:3:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "15715:22:15"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "15743:2:15",
                                      "type": "",
                                      "value": "31"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "15739:3:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "15739:7:15"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "15711:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "15711:36:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "15699:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15699:49:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15699:49:15"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "15761:51:15",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "15796:6:15"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "15790:5:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "15790:13:15"
                            },
                            {
                              "name": "tail_2",
                              "nodeType": "YulIdentifier",
                              "src": "15805:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "abi_encode_t_bytes",
                            "nodeType": "YulIdentifier",
                            "src": "15771:18:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15771:41:15"
                        },
                        "variableNames": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "15761:6:15"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "15825:25:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "15839:6:15"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "15847:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "15835:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15835:15:15"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "15825:6:15"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "15863:19:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "15874:3:15"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "15879:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "15870:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15870:12:15"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "15863:3:15"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "15649:1:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15652:4:15",
                        "type": "",
                        "value": "0x14"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "15646:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15646:11:15"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "15658:18:15",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "15660:14:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "15669:1:15"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15672:1:15",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "15665:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15665:9:15"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "15660:1:15"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "15642:3:15",
                    "statements": []
                  },
                  "src": "15638:254:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15901:14:15",
                  "value": {
                    "name": "tail_2",
                    "nodeType": "YulIdentifier",
                    "src": "15909:6:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "15901:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$20_memory_ptr__to_t_array$_t_bytes_memory_ptr_$20_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15364:9:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "15375:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15386:4:15",
                "type": ""
              }
            ],
            "src": "15228:693:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16149:796:15",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16159:12:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "16169:2:15",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "16163:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16180:32:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16198:9:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "16209:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16194:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16194:18:15"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "16184:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16228:9:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "16239:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16221:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16221:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16221:21:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16251:17:15",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "16262:6:15"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "16255:3:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16277:27:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "16297:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "16291:5:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16291:13:15"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "16281:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "16320:6:15"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "16328:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16313:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16313:22:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16313:22:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16344:12:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "16354:2:15",
                    "type": "",
                    "value": "64"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "16348:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16365:25:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16376:9:15"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "16387:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16372:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16372:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "16365:3:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16399:29:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "16417:6:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "16425:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16413:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16413:15:15"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "16403:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16437:13:15",
                  "value": {
                    "name": "tail",
                    "nodeType": "YulIdentifier",
                    "src": "16446:4:15"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "16441:1:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "16508:411:15",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "16522:23:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "16538:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "16532:5:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16532:13:15"
                        },
                        "variables": [
                          {
                            "name": "_3",
                            "nodeType": "YulTypedName",
                            "src": "16526:2:15",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "16565:3:15"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "_3",
                                      "nodeType": "YulIdentifier",
                                      "src": "16580:2:15"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "16574:5:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "16574:9:15"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16593:3:15",
                                          "type": "",
                                          "value": "160"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16598:1:15",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "16589:3:15"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16589:11:15"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "16602:1:15",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nodeType": "YulIdentifier",
                                    "src": "16585:3:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "16585:19:15"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "16570:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16570:35:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "16558:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16558:48:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16558:48:15"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "16619:38:15",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulIdentifier",
                                  "src": "16649:2:15"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "16653:2:15"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "16645:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16645:11:15"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "16639:5:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16639:18:15"
                        },
                        "variables": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulTypedName",
                            "src": "16623:12:15",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "16681:3:15"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "16686:2:15"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "16677:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16677:12:15"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "memberValue0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16697:12:15"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "16691:5:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16691:19:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "16670:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16670:41:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16670:41:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "16735:3:15"
                                },
                                {
                                  "name": "_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "16740:2:15"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "16731:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16731:12:15"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "memberValue0",
                                      "nodeType": "YulIdentifier",
                                      "src": "16755:12:15"
                                    },
                                    {
                                      "name": "_1",
                                      "nodeType": "YulIdentifier",
                                      "src": "16769:2:15"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "16751:3:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "16751:21:15"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "16745:5:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16745:28:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "16724:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16724:50:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16724:50:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "16798:3:15"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "16803:2:15",
                                  "type": "",
                                  "value": "96"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "16794:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16794:12:15"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "memberValue0",
                                      "nodeType": "YulIdentifier",
                                      "src": "16818:12:15"
                                    },
                                    {
                                      "name": "_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "16832:2:15"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "16814:3:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "16814:21:15"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "16808:5:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16808:28:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "16787:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16787:50:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "16787:50:15"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "16850:21:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "16861:3:15"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16866:4:15",
                              "type": "",
                              "value": "0x80"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "16857:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16857:14:15"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "16850:3:15"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "16884:25:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "16898:6:15"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "16906:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "16894:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16894:15:15"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "16884:6:15"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "16470:1:15"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "16473:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "16467:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16467:13:15"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "16481:18:15",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "16483:14:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "16492:1:15"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "16495:1:15",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "16488:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "16488:9:15"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "16483:1:15"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "16463:3:15",
                    "statements": []
                  },
                  "src": "16459:460:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16928:11:15",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "16936:3:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16928:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16118:9:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16129:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "16140:4:15",
                "type": ""
              }
            ],
            "src": "15926:1019:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17203:1325:15",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17213:12:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "17223:2:15",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "17217:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17234:32:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17252:9:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "17263:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17248:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17248:18:15"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "17238:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17282:9:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "17293:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17275:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17275:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17275:21:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17305:17:15",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "17316:6:15"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "17309:3:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17331:27:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "17351:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "17345:5:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17345:13:15"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "17335:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "17374:6:15"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "17382:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17367:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17367:22:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17367:22:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17398:12:15",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "17408:2:15",
                    "type": "",
                    "value": "64"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "17402:2:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17419:25:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17430:9:15"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "17441:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17426:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17426:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "17419:3:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17453:54:15",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17475:9:15"
                          },
                          {
                            "arguments": [
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "17490:6:15"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "17498:2:15"
                              }
                            ],
                            "functionName": {
                              "name": "mul",
                              "nodeType": "YulIdentifier",
                              "src": "17486:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "17486:15:15"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17471:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17471:31:15"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "17504:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17467:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17467:40:15"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "17457:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17516:29:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "17534:6:15"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "17542:2:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17530:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17530:15:15"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "17520:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17554:13:15",
                  "value": {
                    "name": "tail",
                    "nodeType": "YulIdentifier",
                    "src": "17563:4:15"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "17558:1:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "17625:874:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "17646:3:15"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "tail_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "17659:6:15"
                                    },
                                    {
                                      "name": "headStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "17667:9:15"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nodeType": "YulIdentifier",
                                    "src": "17655:3:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "17655:22:15"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "17683:2:15",
                                      "type": "",
                                      "value": "63"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "17679:3:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "17679:7:15"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "17651:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "17651:36:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "17639:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17639:49:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17639:49:15"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "17701:23:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "17717:6:15"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "17711:5:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17711:13:15"
                        },
                        "variables": [
                          {
                            "name": "_3",
                            "nodeType": "YulTypedName",
                            "src": "17705:2:15",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "17737:29:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "tail_2",
                              "nodeType": "YulIdentifier",
                              "src": "17755:6:15"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "17763:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "17751:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17751:15:15"
                        },
                        "variables": [
                          {
                            "name": "tail_3",
                            "nodeType": "YulTypedName",
                            "src": "17741:6:15",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "tail_2",
                              "nodeType": "YulIdentifier",
                              "src": "17786:6:15"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "_3",
                                      "nodeType": "YulIdentifier",
                                      "src": "17804:2:15"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "17798:5:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "17798:9:15"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17817:3:15",
                                          "type": "",
                                          "value": "160"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17822:1:15",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shl",
                                        "nodeType": "YulIdentifier",
                                        "src": "17813:3:15"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17813:11:15"
                                    },
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "17826:1:15",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nodeType": "YulIdentifier",
                                    "src": "17809:3:15"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "17809:19:15"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "17794:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "17794:35:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "17779:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17779:51:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17779:51:15"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "17843:38:15",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulIdentifier",
                                  "src": "17873:2:15"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "17877:2:15"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "17869:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "17869:11:15"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "17863:5:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17863:18:15"
                        },
                        "variables": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulTypedName",
                            "src": "17847:12:15",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "17905:6:15"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "17913:2:15"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "17901:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "17901:15:15"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "17918:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "17894:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17894:27:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17894:27:15"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "17934:19:15",
                        "value": {
                          "name": "tail_3",
                          "nodeType": "YulIdentifier",
                          "src": "17947:6:15"
                        },
                        "variables": [
                          {
                            "name": "pos_1",
                            "nodeType": "YulTypedName",
                            "src": "17938:5:15",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "17966:35:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "memberValue0",
                              "nodeType": "YulIdentifier",
                              "src": "17988:12:15"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "17982:5:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17982:19:15"
                        },
                        "variables": [
                          {
                            "name": "length_1",
                            "nodeType": "YulTypedName",
                            "src": "17970:8:15",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "tail_3",
                              "nodeType": "YulIdentifier",
                              "src": "18021:6:15"
                            },
                            {
                              "name": "length_1",
                              "nodeType": "YulIdentifier",
                              "src": "18029:8:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "18014:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18014:24:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "18014:24:15"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "18051:24:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "tail_2",
                              "nodeType": "YulIdentifier",
                              "src": "18064:6:15"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "18072:2:15",
                              "type": "",
                              "value": "96"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "18060:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18060:15:15"
                        },
                        "variableNames": [
                          {
                            "name": "pos_1",
                            "nodeType": "YulIdentifier",
                            "src": "18051:5:15"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "18088:37:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "memberValue0",
                              "nodeType": "YulIdentifier",
                              "src": "18108:12:15"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "18122:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "18104:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18104:21:15"
                        },
                        "variables": [
                          {
                            "name": "srcPtr_1",
                            "nodeType": "YulTypedName",
                            "src": "18092:8:15",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "18138:15:15",
                        "value": {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "18149:4:15"
                        },
                        "variables": [
                          {
                            "name": "i_1",
                            "nodeType": "YulTypedName",
                            "src": "18142:3:15",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18227:164:15",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18252:5:15"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "srcPtr_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "18279:8:15"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "18273:5:15"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "18273:15:15"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "18266:6:15"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18266:23:15"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "18259:6:15"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18259:31:15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18245:6:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18245:46:15"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18245:46:15"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18308:23:15",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18321:5:15"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18328:2:15"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18317:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18317:14:15"
                              },
                              "variableNames": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "18308:5:15"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18348:29:15",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "srcPtr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18364:8:15"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18374:2:15"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18360:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18360:17:15"
                              },
                              "variableNames": [
                                {
                                  "name": "srcPtr_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "18348:8:15"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "i_1",
                              "nodeType": "YulIdentifier",
                              "src": "18177:3:15"
                            },
                            {
                              "name": "length_1",
                              "nodeType": "YulIdentifier",
                              "src": "18182:8:15"
                            }
                          ],
                          "functionName": {
                            "name": "lt",
                            "nodeType": "YulIdentifier",
                            "src": "18174:2:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18174:17:15"
                        },
                        "nodeType": "YulForLoop",
                        "post": {
                          "nodeType": "YulBlock",
                          "src": "18192:22:15",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18194:18:15",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "i_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18205:3:15"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18210:1:15",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18201:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18201:11:15"
                              },
                              "variableNames": [
                                {
                                  "name": "i_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "18194:3:15"
                                }
                              ]
                            }
                          ]
                        },
                        "pre": {
                          "nodeType": "YulBlock",
                          "src": "18170:3:15",
                          "statements": []
                        },
                        "src": "18166:225:15"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "18404:15:15",
                        "value": {
                          "name": "pos_1",
                          "nodeType": "YulIdentifier",
                          "src": "18414:5:15"
                        },
                        "variableNames": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "18404:6:15"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "18432:25:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "18446:6:15"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "18454:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "18442:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18442:15:15"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "18432:6:15"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "18470:19:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "18481:3:15"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "18486:2:15"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "18477:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18477:12:15"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "18470:3:15"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "17587:1:15"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "17590:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "17584:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17584:13:15"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "17598:18:15",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "17600:14:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "17609:1:15"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17612:1:15",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "17605:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17605:9:15"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "17600:1:15"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "17580:3:15",
                    "statements": []
                  },
                  "src": "17576:923:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18508:14:15",
                  "value": {
                    "name": "tail_2",
                    "nodeType": "YulIdentifier",
                    "src": "18516:6:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18508:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17172:9:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "17183:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17194:4:15",
                "type": ""
              }
            ],
            "src": "16950:1578:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18628:92:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "18638:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18650:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18661:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18646:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18646:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18638:4:15"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18680:9:15"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "18705:6:15"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "18698:6:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "18698:14:15"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "18691:6:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18691:22:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18673:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18673:41:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18673:41:15"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18597:9:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "18608:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18619:4:15",
                "type": ""
              }
            ],
            "src": "18533:187:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18826:76:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "18836:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18848:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18859:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18844:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18844:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18836:4:15"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18878:9:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "18889:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18871:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18871:25:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18871:25:15"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18795:9:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "18806:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18817:4:15",
                "type": ""
              }
            ],
            "src": "18725:177:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19036:145:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "19046:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19058:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19069:2:15",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19054:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19054:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19046:4:15"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19088:9:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "19099:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19081:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19081:25:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19081:25:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19126:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19137:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19122:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19122:18:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "19146:6:15"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19162:3:15",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19167:1:15",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "19158:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19158:11:15"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19171:1:15",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "19154:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "19154:19:15"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "19142:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19142:32:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19115:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19115:60:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19115:60:15"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18997:9:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "19008:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "19016:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19027:4:15",
                "type": ""
              }
            ],
            "src": "18907:274:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19343:162:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "19353:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19365:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19376:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19361:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19361:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19353:4:15"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19395:9:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "19406:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19388:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19388:25:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19388:25:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19433:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19444:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19429:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19429:18:15"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "19449:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19422:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19422:34:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19422:34:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19476:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19487:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19472:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19472:18:15"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "19492:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19465:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19465:34:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19465:34:15"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32_t_bytes32__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19296:9:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "19307:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "19315:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "19323:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19334:4:15",
                "type": ""
              }
            ],
            "src": "19186:319:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19663:173:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "19673:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19685:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19696:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19681:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19681:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19673:4:15"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19715:9:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "19726:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19708:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19708:25:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19708:25:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19753:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19764:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19749:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19749:18:15"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "19769:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19742:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19742:34:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19742:34:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19796:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19807:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19792:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19792:18:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nodeType": "YulIdentifier",
                            "src": "19816:6:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19824:4:15",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "19812:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19812:17:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19785:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19785:45:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19785:45:15"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_uint8__to_t_bytes32_t_bytes32_t_uint8__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19616:9:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "19627:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "19635:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "19643:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19654:4:15",
                "type": ""
              }
            ],
            "src": "19510:326:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19988:143:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20005:9:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "20016:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19998:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19998:25:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19998:25:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20043:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20054:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20039:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20039:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20059:2:15",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20032:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20032:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20032:30:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20071:54:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "20098:6:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20110:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20121:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20106:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20106:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "20079:18:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20079:46:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20071:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19949:9:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "19960:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "19968:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19979:4:15",
                "type": ""
              }
            ],
            "src": "19841:290:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20317:217:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "20327:27:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20339:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20350:3:15",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20335:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20335:19:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20327:4:15"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20370:9:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "20381:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20363:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20363:25:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20363:25:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20408:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20419:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20404:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20404:18:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "20428:6:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20436:4:15",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "20424:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20424:17:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20397:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20397:45:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20397:45:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20462:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20473:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20458:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20458:18:15"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "20478:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20451:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20451:34:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20451:34:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20505:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20516:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20501:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20501:18:15"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "20521:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20494:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20494:34:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20494:34:15"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20262:9:15",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "20273:6:15",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "20281:6:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "20289:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "20297:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20308:4:15",
                "type": ""
              }
            ],
            "src": "20136:398:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20713:174:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20730:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20741:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20723:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20723:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20723:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20764:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20775:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20760:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20760:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20780:2:15",
                        "type": "",
                        "value": "24"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20753:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20753:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20753:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20803:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20814:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20799:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20799:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20819:26:15",
                        "type": "",
                        "value": "ECDSA: invalid signature"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20792:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20792:54:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20792:54:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20855:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20867:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20878:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20863:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20863:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20855:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20690:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20704:4:15",
                "type": ""
              }
            ],
            "src": "20539:348:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21066:163:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21083:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21094:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21076:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21076:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21076:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21117:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21128:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21113:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21113:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21133:2:15",
                        "type": "",
                        "value": "13"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21106:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21106:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21106:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21156:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21167:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21152:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21152:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21172:15:15",
                        "type": "",
                        "value": "OUT_OF_BOUNDS"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21145:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21145:43:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21145:43:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21197:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21209:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21220:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21205:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21205:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21197:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_01a63436c63f1d19f1f540ffbc42d170040b95f28e88d83e291ae055ac1ff22e__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "21043:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "21057:4:15",
                "type": ""
              }
            ],
            "src": "20892:337:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21408:224:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21425:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21436:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21418:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21418:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21418:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21459:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21470:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21455:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21455:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21475:2:15",
                        "type": "",
                        "value": "34"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21448:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21448:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21448:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21498:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21509:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21494:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21494:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21514:34:15",
                        "type": "",
                        "value": "EnumerableSet: index out of boun"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21487:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21487:62:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21487:62:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21569:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21580:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21565:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21565:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21585:4:15",
                        "type": "",
                        "value": "ds"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21558:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21558:32:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21558:32:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21599:27:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21611:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21622:3:15",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21607:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21607:19:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21599:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "21385:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "21399:4:15",
                "type": ""
              }
            ],
            "src": "21234:398:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21811:161:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21828:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21839:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21821:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21821:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21821:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21862:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21873:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21858:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21858:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21878:2:15",
                        "type": "",
                        "value": "11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21851:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21851:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21851:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21901:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21912:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21897:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21897:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21917:13:15",
                        "type": "",
                        "value": "NOT_NEW_DOC"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21890:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21890:41:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21890:41:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21940:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21952:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21963:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21948:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21948:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21940:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_0833b8da435b4774deaf9c0b8af2f02e44f922a8b0a66b9db19d730bab49c85d__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "21788:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "21802:4:15",
                "type": ""
              }
            ],
            "src": "21637:335:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22151:170:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22168:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22179:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22161:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22161:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22161:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22202:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22213:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22198:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22198:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22218:2:15",
                        "type": "",
                        "value": "20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22191:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22191:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22191:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22241:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22252:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22237:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22237:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22257:22:15",
                        "type": "",
                        "value": "Pausable: not paused"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22230:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22230:50:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22230:50:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22289:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22301:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22312:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22297:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22297:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22289:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22128:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "22142:4:15",
                "type": ""
              }
            ],
            "src": "21977:344:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22500:161:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22517:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22528:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22510:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22510:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22510:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22551:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22562:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22547:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22547:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22567:2:15",
                        "type": "",
                        "value": "11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22540:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22540:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22540:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22590:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22601:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22586:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22586:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22606:13:15",
                        "type": "",
                        "value": "ZERO_SENDER"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22579:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22579:41:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22579:41:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22629:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22641:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22652:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22637:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22637:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22629:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_0ecc5c4c83787e5ead386b554f1d80ee86ec5c3e55181722bfaca454dd8d8b73__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22477:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "22491:4:15",
                "type": ""
              }
            ],
            "src": "22326:335:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22840:181:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22857:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22868:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22850:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22850:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22850:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22891:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22902:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22887:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22887:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22907:2:15",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22880:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22880:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22880:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22930:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22941:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22926:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22926:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22946:33:15",
                        "type": "",
                        "value": "ECDSA: invalid signature length"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22919:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22919:61:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22919:61:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22989:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23001:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23012:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22997:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22997:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22989:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22817:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "22831:4:15",
                "type": ""
              }
            ],
            "src": "22666:355:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23200:228:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23217:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23228:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23210:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23210:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23210:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23251:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23262:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23247:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23247:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23267:2:15",
                        "type": "",
                        "value": "38"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23240:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23240:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23240:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23290:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23301:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23286:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23286:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23306:34:15",
                        "type": "",
                        "value": "Ownable: new owner is the zero a"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23279:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23279:62:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23279:62:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23361:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23372:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23357:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23357:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23377:8:15",
                        "type": "",
                        "value": "ddress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23350:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23350:36:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23350:36:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23395:27:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23407:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23418:3:15",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23403:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23403:19:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23395:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23177:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23191:4:15",
                "type": ""
              }
            ],
            "src": "23026:402:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23607:156:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23624:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23635:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23617:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23617:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23617:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23658:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23669:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23654:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23654:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23674:1:15",
                        "type": "",
                        "value": "7"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23647:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23647:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23647:29:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23696:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23707:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23692:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23692:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23712:9:15",
                        "type": "",
                        "value": "BAD_SIG"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23685:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23685:37:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23685:37:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23731:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23743:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23754:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23739:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23739:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23731:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_2f79dddb865e0424b8eb3c1efff01af8995554e47bceb5a06723511381ab40f9__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23584:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23598:4:15",
                "type": ""
              }
            ],
            "src": "23433:330:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23942:161:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23959:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23970:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23952:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23952:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23952:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23993:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24004:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23989:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23989:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24009:2:15",
                        "type": "",
                        "value": "11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23982:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23982:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23982:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24032:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24043:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24028:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24028:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24048:13:15",
                        "type": "",
                        "value": "DOC_EXPIRED"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24021:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24021:41:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24021:41:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24071:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24083:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24094:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24079:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24079:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "24071:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_493e5ade42c32a124e93282ff005992938018b2d72f8b454c7acd4deaf376d78__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23919:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23933:4:15",
                "type": ""
              }
            ],
            "src": "23768:335:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24282:164:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24299:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24310:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24292:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24292:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24292:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24333:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24344:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24329:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24329:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24349:2:15",
                        "type": "",
                        "value": "14"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24322:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24322:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24322:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24372:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24383:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24368:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24368:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24388:16:15",
                        "type": "",
                        "value": "NUM_SIG_EXISTS"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24361:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24361:44:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24361:44:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24414:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24426:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24437:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24422:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24422:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "24414:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_4caa10563f3964f7d3c9b94751dc759015856f997e1a275c1cc7fe40afcd7ba8__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "24259:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "24273:4:15",
                "type": ""
              }
            ],
            "src": "24108:338:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24625:224:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24642:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24653:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24635:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24635:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24635:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24676:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24687:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24672:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24672:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24692:2:15",
                        "type": "",
                        "value": "34"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24665:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24665:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24665:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24715:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24726:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24711:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24711:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24731:34:15",
                        "type": "",
                        "value": "ECDSA: invalid signature 's' val"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24704:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24704:62:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24704:62:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24786:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24797:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24782:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24782:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24802:4:15",
                        "type": "",
                        "value": "ue"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24775:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24775:32:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24775:32:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24816:27:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24828:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24839:3:15",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24824:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24824:19:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "24816:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "24602:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "24616:4:15",
                "type": ""
              }
            ],
            "src": "24451:398:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25028:163:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25045:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25056:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25038:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25038:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25038:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25079:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25090:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25075:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25075:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25095:2:15",
                        "type": "",
                        "value": "13"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25068:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25068:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25068:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25118:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25129:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25114:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25114:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "25134:15:15",
                        "type": "",
                        "value": "DOC_NOT_EXIST"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25107:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25107:43:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25107:43:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25159:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25171:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25182:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25167:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25167:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "25159:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_58ffa454849853d091744346ffbcdc75f8772d29d1fee2d8e96e697a94adf3a1__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "25005:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "25019:4:15",
                "type": ""
              }
            ],
            "src": "24854:337:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25370:158:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25387:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25398:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25380:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25380:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25380:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25421:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25432:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25417:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25417:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25437:1:15",
                        "type": "",
                        "value": "9"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25410:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25410:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25410:29:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25459:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25470:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25455:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25455:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "25475:11:15",
                        "type": "",
                        "value": "DOC_EXIST"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25448:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25448:39:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25448:39:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25496:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25508:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25519:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25504:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25504:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "25496:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_652d71e7cfa99a2fd999f81f04982f86741a9e17b41f3b591be88a9047e420b1__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "25347:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "25361:4:15",
                "type": ""
              }
            ],
            "src": "25196:332:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25707:166:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25724:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25735:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25717:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25717:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25717:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25758:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25769:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25754:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25754:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25774:2:15",
                        "type": "",
                        "value": "16"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25747:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25747:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25747:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "25797:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25808:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "25793:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25793:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "25813:18:15",
                        "type": "",
                        "value": "Pausable: paused"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25786:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25786:46:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25786:46:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25841:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "25853:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25864:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25849:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25849:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "25841:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "25684:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "25698:4:15",
                "type": ""
              }
            ],
            "src": "25533:340:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26052:236:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "26069:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26080:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26062:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26062:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26062:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "26103:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26114:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26099:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26099:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26119:2:15",
                        "type": "",
                        "value": "46"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26092:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26092:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26092:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "26142:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26153:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26138:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26138:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "26158:34:15",
                        "type": "",
                        "value": "Initializable: contract is alrea"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26131:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26131:62:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26131:62:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "26213:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26224:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26209:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26209:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "26229:16:15",
                        "type": "",
                        "value": "dy initialized"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26202:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26202:44:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26202:44:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "26255:27:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "26267:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26278:3:15",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "26263:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26263:19:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "26255:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "26029:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "26043:4:15",
                "type": ""
              }
            ],
            "src": "25878:410:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26467:224:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "26484:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26495:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26477:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26477:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26477:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "26518:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26529:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26514:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26514:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26534:2:15",
                        "type": "",
                        "value": "34"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26507:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26507:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26507:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "26557:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26568:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26553:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26553:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "26573:34:15",
                        "type": "",
                        "value": "ECDSA: invalid signature 'v' val"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26546:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26546:62:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26546:62:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "26628:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26639:2:15",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26624:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26624:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "26644:4:15",
                        "type": "",
                        "value": "ue"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26617:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26617:32:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26617:32:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "26658:27:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "26670:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26681:3:15",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "26666:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26666:19:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "26658:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "26444:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "26458:4:15",
                "type": ""
              }
            ],
            "src": "26293:398:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26870:160:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "26887:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26898:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26880:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26880:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26880:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "26921:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26932:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26917:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26917:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26937:2:15",
                        "type": "",
                        "value": "10"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26910:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26910:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26910:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "26960:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26971:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26956:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26956:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "26976:12:15",
                        "type": "",
                        "value": "BAD_ARRAYS"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26949:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26949:40:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26949:40:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "26998:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "27010:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27021:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "27006:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27006:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "26998:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_8d3abf6957467ba1296751ef18ad93f3af995856323280442481f13ba501b7fd__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "26847:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "26861:4:15",
                "type": ""
              }
            ],
            "src": "26696:334:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27209:182:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "27226:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27237:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27219:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27219:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27219:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "27260:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27271:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27256:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27256:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27276:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27249:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27249:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27249:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "27299:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27310:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27295:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27295:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "27315:34:15",
                        "type": "",
                        "value": "Ownable: caller is not the owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27288:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27288:62:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27288:62:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "27359:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "27371:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27382:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "27367:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27367:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "27359:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "27186:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "27200:4:15",
                "type": ""
              }
            ],
            "src": "27035:356:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27570:164:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "27587:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27598:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27580:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27580:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27580:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "27621:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27632:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27617:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27617:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27637:2:15",
                        "type": "",
                        "value": "14"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27610:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27610:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27610:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "27660:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27671:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27656:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27656:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "27676:16:15",
                        "type": "",
                        "value": "INVALID_SIGNER"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27649:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27649:44:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27649:44:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "27702:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "27714:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27725:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "27710:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27710:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "27702:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "27547:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "27561:4:15",
                "type": ""
              }
            ],
            "src": "27396:338:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27913:171:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "27930:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27941:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27923:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27923:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27923:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "27964:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27975:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27960:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27960:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27980:2:15",
                        "type": "",
                        "value": "21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27953:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27953:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27953:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "28003:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28014:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27999:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27999:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "28019:23:15",
                        "type": "",
                        "value": "SIGNERS_NOT_FINALIZED"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27992:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27992:51:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27992:51:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "28052:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "28064:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28075:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "28060:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28060:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "28052:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_c9649649b538c488892778461d94528c2432c82381666c9bc88b793e71eb8daa__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "27890:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "27904:4:15",
                "type": ""
              }
            ],
            "src": "27739:345:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28263:163:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "28280:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28291:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28273:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28273:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28273:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "28314:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28325:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28310:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28310:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28330:2:15",
                        "type": "",
                        "value": "13"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28303:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28303:30:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28303:30:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "28353:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28364:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28349:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28349:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "28369:15:15",
                        "type": "",
                        "value": "SIZE_MISMATCH"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28342:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28342:43:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28342:43:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "28394:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "28406:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28417:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "28402:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28402:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "28394:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_c97495c692b355e48c58442067cc6751cfbb74c936e2925634aac300cf5246f7__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "28240:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "28254:4:15",
                "type": ""
              }
            ],
            "src": "28089:337:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28605:155:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "28622:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28633:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28615:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28615:21:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28615:21:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "28656:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28667:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28652:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28652:18:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28672:1:15",
                        "type": "",
                        "value": "6"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28645:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28645:29:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28645:29:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "28694:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "28705:2:15",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "28690:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "28690:18:15"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "28710:8:15",
                        "type": "",
                        "value": "UNAUTH"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28683:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28683:36:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28683:36:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "28728:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "28740:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28751:2:15",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "28736:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28736:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "28728:4:15"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ce0ba59a655f51dc843a115da8488d87ac5d8d03f36cc45b85be6fc2d3e3be36__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "28582:9:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "28596:4:15",
                "type": ""
              }
            ],
            "src": "28431:329:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "28866:76:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "28876:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "28888:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "28899:2:15",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "28884:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28884:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "28876:4:15"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "28918:9:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "28929:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "28911:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "28911:25:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "28911:25:15"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "28835:9:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "28846:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "28857:4:15",
                "type": ""
              }
            ],
            "src": "28765:177:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "29076:119:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "29086:26:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "29098:9:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29109:2:15",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "29094:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29094:18:15"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "29086:4:15"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "29128:9:15"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "29139:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "29121:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29121:25:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29121:25:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "29166:9:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "29177:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "29162:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29162:18:15"
                      },
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "29182:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "29155:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29155:34:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "29155:34:15"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "29037:9:15",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "29048:6:15",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "29056:6:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "29067:4:15",
                "type": ""
              }
            ],
            "src": "28947:248:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "29294:439:15",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "29304:51:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr_to_tail",
                        "nodeType": "YulIdentifier",
                        "src": "29343:11:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "29330:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29330:25:15"
                  },
                  "variables": [
                    {
                      "name": "rel_offset_of_tail",
                      "nodeType": "YulTypedName",
                      "src": "29308:18:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "29444:22:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "addr",
                              "nodeType": "YulIdentifier",
                              "src": "29453:4:15"
                            },
                            {
                              "name": "addr",
                              "nodeType": "YulIdentifier",
                              "src": "29459:4:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "29446:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "29446:18:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "29446:18:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "rel_offset_of_tail",
                            "nodeType": "YulIdentifier",
                            "src": "29378:18:15"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "29406:12:15"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29406:14:15"
                                  },
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "29422:8:15"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "29402:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29402:29:15"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29437:2:15",
                                    "type": "",
                                    "value": "30"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "29433:3:15"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29433:7:15"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "29398:3:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "29398:43:15"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "29374:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29374:68:15"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "29367:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29367:76:15"
                  },
                  "nodeType": "YulIf",
                  "src": "29364:2:15"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "29475:47:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "base_ref",
                        "nodeType": "YulIdentifier",
                        "src": "29493:8:15"
                      },
                      {
                        "name": "rel_offset_of_tail",
                        "nodeType": "YulIdentifier",
                        "src": "29503:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "29489:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29489:33:15"
                  },
                  "variables": [
                    {
                      "name": "addr_1",
                      "nodeType": "YulTypedName",
                      "src": "29479:6:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "29531:30:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nodeType": "YulIdentifier",
                        "src": "29554:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "29541:12:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29541:20:15"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "29531:6:15"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "29604:22:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "addr",
                              "nodeType": "YulIdentifier",
                              "src": "29613:4:15"
                            },
                            {
                              "name": "addr",
                              "nodeType": "YulIdentifier",
                              "src": "29619:4:15"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "29606:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "29606:18:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "29606:18:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "29576:6:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29584:18:15",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "29573:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29573:30:15"
                  },
                  "nodeType": "YulIf",
                  "src": "29570:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "29635:25:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "addr_1",
                        "nodeType": "YulIdentifier",
                        "src": "29647:6:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29655:4:15",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "29643:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29643:17:15"
                  },
                  "variableNames": [
                    {
                      "name": "addr",
                      "nodeType": "YulIdentifier",
                      "src": "29635:4:15"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "29711:16:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "29720:1:15",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "29723:1:15",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "29713:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "29713:12:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "29713:12:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "addr",
                        "nodeType": "YulIdentifier",
                        "src": "29676:4:15"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "calldatasize",
                              "nodeType": "YulIdentifier",
                              "src": "29686:12:15"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "29686:14:15"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "29702:6:15"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "29682:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29682:27:15"
                      }
                    ],
                    "functionName": {
                      "name": "sgt",
                      "nodeType": "YulIdentifier",
                      "src": "29672:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29672:38:15"
                  },
                  "nodeType": "YulIf",
                  "src": "29669:2:15"
                }
              ]
            },
            "name": "access_calldata_tail_t_bytes_calldata_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "base_ref",
                "nodeType": "YulTypedName",
                "src": "29251:8:15",
                "type": ""
              },
              {
                "name": "ptr_to_tail",
                "nodeType": "YulTypedName",
                "src": "29261:11:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "addr",
                "nodeType": "YulTypedName",
                "src": "29277:4:15",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "29283:6:15",
                "type": ""
              }
            ],
            "src": "29200:533:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "29793:325:15",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "29803:22:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "29817:4:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29823:1:15",
                        "type": "",
                        "value": "2"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nodeType": "YulIdentifier",
                      "src": "29813:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29813:12:15"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "29803:6:15"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "29834:38:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "29864:4:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "29870:1:15",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "29860:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29860:12:15"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "29838:18:15",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "29911:31:15",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "29913:27:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "29927:6:15"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "29935:4:15",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "29923:3:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "29923:17:15"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "29913:6:15"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "29891:18:15"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "29884:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29884:26:15"
                  },
                  "nodeType": "YulIf",
                  "src": "29881:2:15"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "30001:111:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "30022:1:15",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "30029:3:15",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "30034:10:15",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "30025:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "30025:20:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "30015:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "30015:31:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "30015:31:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "30066:1:15",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "30069:4:15",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "30059:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "30059:15:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "30059:15:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "30094:1:15",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "30097:4:15",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "30087:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "30087:15:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "30087:15:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "29957:18:15"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "29980:6:15"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "29988:2:15",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "29977:2:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "29977:14:15"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "29954:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "29954:38:15"
                  },
                  "nodeType": "YulIf",
                  "src": "29951:2:15"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "29773:4:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "29782:6:15",
                "type": ""
              }
            ],
            "src": "29738:380:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "30170:189:15",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "30209:115:15",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "ret",
                              "nodeType": "YulIdentifier",
                              "src": "30230:3:15"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "30239:3:15",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "30244:10:15",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "30235:3:15"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "30235:20:15"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "30223:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "30223:33:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "30223:33:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "30276:1:15",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "30279:4:15",
                              "type": "",
                              "value": "0x11"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "30269:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "30269:15:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "30269:15:15"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "ret",
                              "nodeType": "YulIdentifier",
                              "src": "30304:3:15"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "30309:4:15",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "30297:6:15"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "30297:17:15"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "30297:17:15"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "30186:5:15"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "30197:1:15",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "30193:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "30193:6:15"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "30183:2:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30183:17:15"
                  },
                  "nodeType": "YulIf",
                  "src": "30180:2:15"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "30333:20:15",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "30344:5:15"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "30351:1:15",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "30340:3:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30340:13:15"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "30333:3:15"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "30152:5:15",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "30162:3:15",
                "type": ""
              }
            ],
            "src": "30123:236:15"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "30396:95:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "30413:1:15",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "30420:3:15",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "30425:10:15",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "30416:3:15"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "30416:20:15"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "30406:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30406:31:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "30406:31:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "30453:1:15",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "30456:4:15",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "30446:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30446:15:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "30446:15:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "30477:1:15",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "30480:4:15",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "30470:6:15"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "30470:15:15"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "30470:15:15"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "30364:127:15"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_t_array$_t_address_$dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(length, length) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(arrayPos, arrayPos) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, mul(length, 0x20)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_t_array$_t_bytes32_calldata(offset, end) -> arrayPos\n    {\n        arrayPos := offset\n        if gt(add(offset, 96), end) { revert(0, 0) }\n    }\n    function abi_decode_t_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(arrayPos, arrayPos) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(arrayPos, arrayPos) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(value2, value2) }\n        let value2_1, value3_1 := abi_decode_t_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_array$_t_bytes32_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let value0_1, value1_1 := abi_decode_t_array$_t_address_$dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value4, value4) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        let value2_1, value3_1 := abi_decode_t_array$_t_address_$dyn_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        let value4_1, value5_1 := abi_decode_t_array$_t_address_$dyn_calldata(add(headStart, offset_1), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(value2, value2) }\n        let value2_1, value3_1 := abi_decode_t_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_bytes32t_array$_t_uint256_$dyn_calldata_ptrt_array$_t_bytes_calldata_ptr_$dyn_calldata_ptrt_array$_t_bytes32_$3_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value4, value4) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        let value1_1, value2_1 := abi_decode_t_array$_t_address_$dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        let value3_1, value4_1 := abi_decode_t_array$_t_address_$dyn_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n        value5 := abi_decode_t_array$_t_bytes32_calldata(add(headStart, 96), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32t_uint256t_uint256t_array$_t_bytes32_$3_calldata_ptrt_array$_t_bytes32_$6_calldata_ptrt_array$_t_address_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9\n    {\n        if slt(sub(dataEnd, headStart), 480) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := abi_decode_t_array$_t_bytes32_calldata(add(headStart, 128), dataEnd)\n        let _1 := add(headStart, 416)\n        if gt(_1, dataEnd) { revert(value6, value6) }\n        value5 := add(headStart, 224)\n        let offset := calldataload(_1)\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(value6, value6) }\n        let value6_1, value7_1 := abi_decode_t_array$_t_address_$dyn_calldata(add(headStart, offset), dataEnd)\n        value6 := value6_1\n        value7 := value7_1\n        let offset_1 := calldataload(add(headStart, 448))\n        if gt(offset_1, _2) { revert(value8, value8) }\n        let value8_1, value9_1 := abi_decode_t_array$_t_address_$dyn_calldata(add(headStart, offset_1), dataEnd)\n        value8 := value8_1\n        value9 := value9_1\n    }\n    function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(value0, value0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _4 := calldataload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(add(memPtr, and(add(_4, 0x1f), not(31))), _1)\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(value0, value0) }\n        calldatacopy(add(memPtr, _1), add(_3, _1), _4)\n        mstore(add(add(memPtr, _4), _1), value0)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_string_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let value0_1, value1_1 := abi_decode_t_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_encode_t_array$_t_bytes32_$dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := end\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_t_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := end\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), end)\n        }\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        mstore(add(pos, 64), value2)\n        mstore(add(pos, 96), value3)\n        end := add(pos, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value6, value5, value4, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        mstore(add(pos, 64), value2)\n        mstore(add(pos, 96), value3)\n        mstore(add(pos, 128), value4)\n        mstore(add(pos, 160), value5)\n        mstore(add(pos, 192), value6)\n        end := add(pos, 224)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_address__nonPadded_inplace_fromStack_reversed(pos, value7, value6, value5, value4, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        mstore(add(pos, 64), value2)\n        mstore(add(pos, 96), value3)\n        mstore(add(pos, 128), value4)\n        mstore(add(pos, 160), value5)\n        mstore(add(pos, 192), value6)\n        mstore(add(pos, 224), and(shl(96, value7), not(0xffffffffffffffffffffffff)))\n        end := add(pos, 244)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_address_t_uint256__to_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_bytes32_t_address_t_uint256__nonPadded_inplace_fromStack_reversed(pos, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        mstore(add(pos, 64), value2)\n        mstore(add(pos, 96), value3)\n        mstore(add(pos, 128), value4)\n        mstore(add(pos, 160), value5)\n        mstore(add(pos, 192), value6)\n        mstore(add(pos, 224), and(shl(96, value7), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 244), value8)\n        end := add(pos, 276)\n    }\n    function abi_encode_tuple_packed_t_string_calldata_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, end)\n        end := _1\n    }\n    function abi_encode_tuple_packed_t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73_t_bytes32__to_t_string_memory_ptr_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000)\n        mstore(add(pos, 28), value0)\n        end := add(pos, 60)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address_t_bytes32_t_uint256_t_uint256_t_uint256__to_t_address_t_bytes32_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_uint8_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_uint8_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let tail_1 := abi_encode_t_array$_t_bytes32_$dyn(value0, add(headStart, 96))\n        let _1 := 32\n        mstore(add(headStart, _1), sub(tail_1, headStart))\n        let tail_2 := abi_encode_t_array$_t_bytes32_$dyn(value1, tail_1)\n        mstore(add(headStart, 64), sub(tail_2, headStart))\n        let pos := tail_2\n        let length := mload(value2)\n        mstore(tail_2, length)\n        pos := add(tail_2, _1)\n        let srcPtr := add(value2, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$20_memory_ptr__to_t_array$_t_bytes_memory_ptr_$20_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        pos := tail_1\n        let tail_2 := add(headStart, 672)\n        let srcPtr := value0\n        let i := tail\n        for { } lt(i, 0x14) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(31)))\n            tail_2 := abi_encode_t_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, and(mload(_3), sub(shl(160, 1), 1)))\n            let memberValue0 := mload(add(_3, _1))\n            mstore(add(pos, _1), mload(memberValue0))\n            mstore(add(pos, _2), mload(add(memberValue0, _1)))\n            mstore(add(pos, 96), mload(add(memberValue0, _2)))\n            pos := add(pos, 0x80)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let tail_2 := add(add(headStart, mul(length, _1)), _2)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            let _3 := mload(srcPtr)\n            let tail_3 := add(tail_2, _2)\n            mstore(tail_2, and(mload(_3), sub(shl(160, 1), 1)))\n            let memberValue0 := mload(add(_3, _1))\n            mstore(add(tail_2, _1), _2)\n            let pos_1 := tail_3\n            let length_1 := mload(memberValue0)\n            mstore(tail_3, length_1)\n            pos_1 := add(tail_2, 96)\n            let srcPtr_1 := add(memberValue0, _1)\n            let i_1 := tail\n            for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n            {\n                mstore(pos_1, iszero(iszero(mload(srcPtr_1))))\n                pos_1 := add(pos_1, _1)\n                srcPtr_1 := add(srcPtr_1, _1)\n            }\n            tail_2 := pos_1\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32_t_bytes32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_uint8__to_t_bytes32_t_bytes32_t_uint8__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xff))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_t_bytes(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_stringliteral_00043f6bf76368aa97c21698e9b9d4779e31902453daccf3525ddfb36e53e2be__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_01a63436c63f1d19f1f540ffbc42d170040b95f28e88d83e291ae055ac1ff22e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"OUT_OF_BOUNDS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"EnumerableSet: index out of boun\")\n        mstore(add(headStart, 96), \"ds\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0833b8da435b4774deaf9c0b8af2f02e44f922a8b0a66b9db19d730bab49c85d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"NOT_NEW_DOC\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Pausable: not paused\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_0ecc5c4c83787e5ead386b554f1d80ee86ec5c3e55181722bfaca454dd8d8b73__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"ZERO_SENDER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1669ff3ba3cdf64474e1193492d05b8434e29b0b495e60095eb5f5c8ec14ce77__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_2f79dddb865e0424b8eb3c1efff01af8995554e47bceb5a06723511381ab40f9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 7)\n        mstore(add(headStart, 64), \"BAD_SIG\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_493e5ade42c32a124e93282ff005992938018b2d72f8b454c7acd4deaf376d78__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"DOC_EXPIRED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_4caa10563f3964f7d3c9b94751dc759015856f997e1a275c1cc7fe40afcd7ba8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"NUM_SIG_EXISTS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_520d1f787dbcafbbfc007fd2c4ecf3d2711ec587f3ee9a1215c0b646c3e530bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 's' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_58ffa454849853d091744346ffbcdc75f8772d29d1fee2d8e96e697a94adf3a1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"DOC_NOT_EXIST\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_652d71e7cfa99a2fd999f81f04982f86741a9e17b41f3b591be88a9047e420b1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"DOC_EXIST\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Pausable: paused\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8522ee1b53216f595394db8e80a64d9e7d9bd512c0811c18debe9f40858597e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ECDSA: invalid signature 'v' val\")\n        mstore(add(headStart, 96), \"ue\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8d3abf6957467ba1296751ef18ad93f3af995856323280442481f13ba501b7fd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 10)\n        mstore(add(headStart, 64), \"BAD_ARRAYS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"INVALID_SIGNER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c9649649b538c488892778461d94528c2432c82381666c9bc88b793e71eb8daa__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"SIGNERS_NOT_FINALIZED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c97495c692b355e48c58442067cc6751cfbb74c936e2925634aac300cf5246f7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"SIZE_MISMATCH\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ce0ba59a655f51dc843a115da8488d87ac5d8d03f36cc45b85be6fc2d3e3be36__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 6)\n        mstore(add(headStart, 64), \"UNAUTH\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(addr, addr) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(addr, addr) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := div(data, 2)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(ret, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(ret, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n}",
      "id": 15,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "487:27936:10:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "487:27936:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22422:663;;;;;;:::i;:::-;;:::i;:::-;;24506:221;;;;;;:::i;:::-;;:::i;2046:357:11:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21893:523:10;;;;;;:::i;:::-;;:::i;10758:262::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1656:162:11:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10504:248:10:-;;;;;;:::i;:::-;;:::i;1302:101:11:-;;;:::i;27707:714:10:-;;;;;;:::i;:::-;;:::i;9814:684::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2690:356:11:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;11479:1123:10:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;649:135:2:-;;;;;;:::i;:::-;;:::i;9304:504:10:-;;;;;;:::i;:::-;;:::i;1310:84:4:-;;;:::i;12608:337:10:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1965:145:0:-;;;:::i;7858:850:10:-;;;;;;:::i;:::-;;:::i;26768:905::-;;;;;;:::i;:::-;;:::i;1201:95:11:-;;;:::i;1333:85:0:-;;;:::i;8746:552:10:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;5332:776::-;;;;;;:::i;:::-;;:::i;13605:593::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;6114:846::-;;;;;;:::i;:::-;;:::i;26137:625::-;;;;;;:::i;:::-;;:::i;4855:471::-;;;;;;:::i;:::-;;:::i;24771:1360::-;;;;;;:::i;:::-;;:::i;1035:160:11:-;;;;;;:::i;:::-;;:::i;15998:868:10:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12951:648::-;;;;;;:::i;:::-;;:::i;14204:1788::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2259:240:0:-;;;;;;:::i;:::-;;:::i;22422:663:10:-;1624:8:4;:6;:8::i;:::-;1623:9;1615:38;;;;-1:-1:-1;;;1615:38:4;;;;;;;:::i;:::-;;;;;;;;;3498:22:10::1;::::0;;;:9:::1;:22;::::0;;;;:28;22567:11;;3490:59:::1;;;;-1:-1:-1::0;;;3490:59:10::1;;;;;;;:::i;:::-;3972:22:::2;::::0;;;:9:::2;:22;::::0;;;;:33:::2;;::::0;22610:11;;3972:38;3968:188:::2;;4051:22;::::0;;;:9:::2;:22;::::0;;;;:33:::2;;::::0;4088:12:::2;-1:-1:-1::0;4051:49:10::2;4026:119;;;;-1:-1:-1::0;;;4026:119:10::2;;;;;;;:::i;:::-;4241:20:::3;4264:22:::0;;;:9:::3;:22;::::0;;;;22653:11;;4321:12:::3;:10;:12::i;:::-;4304:13;::::0;::::3;::::0;-1:-1:-1;;;;;4304:13:10;;::::3;:29:::0;::::3;;4296:48;;;;-1:-1:-1::0;;;4296:48:10::3;;;;;;;:::i;:::-;22680:20:::4;22703:22:::0;;;:9:::4;:22;::::0;;;;;22761:23:::4;:14;::::0;::::4;:21;:23::i;:::-;22735:49;;22799:9;22794:285;22818:15;22814:1;:19;22794:285;;;22854:214;22900:11:::0;22929:62:::4;22900:11:::0;22970:20:::4;:14;::::0;::::4;22988:1:::0;22970:17:::4;:20::i;22929:62::-;23009:3;::::0;;22854:28:::4;:214::i;:::-;22835:3;::::0;::::4;:::i;:::-;;;22794:285;;;;4354:1;;4165::::3;;3559::::2;1663::4::1;22422:663:10::0;:::o;24506:221::-;24618:9;24613:108;24633:23;;;24613:108;;;24677:33;24694:12;;24707:1;24694:15;;;;;-1:-1:-1;;;24694:15:10;;;;;;;;;;;;;;;24677:16;:33::i;:::-;24658:3;;;:::i;:::-;;;24613:108;;;;24506:221;;:::o;2046:357:11:-;2186:4;2221:175;2286:6;2310:45;2350:4;2310:39;:45::i;:::-;2373:9;;2221:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2221:47:11;;-1:-1:-1;;;2221:175:11:i;:::-;2202:194;2046:357;-1:-1:-1;;;;;2046:357:11:o;21893:523:10:-;1624:8:4;:6;:8::i;:::-;1623:9;1615:38;;;;-1:-1:-1;;;1615:38:4;;;;;;;:::i;:::-;3498:22:10::1;::::0;;;:9:::1;:22;::::0;;;;:28;22131:11;;3490:59:::1;;;;-1:-1:-1::0;;;3490:59:10::1;;;;;;;:::i;:::-;3972:22:::2;::::0;;;:9:::2;:22;::::0;;;;:33:::2;;::::0;22174:11;;3972:38;3968:188:::2;;4051:22;::::0;;;:9:::2;:22;::::0;;;;:33:::2;;::::0;4088:12:::2;-1:-1:-1::0;4051:49:10::2;4026:119;;;;-1:-1:-1::0;;;4026:119:10::2;;;;;;;:::i;:::-;22216:11:::3;22229:12;:10;:12::i;:::-;4445:20;4468:22:::0;;;:9:::3;:22;::::0;;;;4508:31:::3;:14;::::0;::::3;4532:6:::0;4508:23:::3;:31::i;:::-;4500:50;;;;-1:-1:-1::0;;;4500:50:10::3;;;;;;;:::i;:::-;22257:152:::4;22299:11:::0;22324:3:::4;22341:8:::0;22363:11;22388;22257:28:::4;:152::i;:::-;4165:1:::3;;;3559::::2;1663::4::1;21893:523:10::0;;;;:::o;10758:262::-;10931:14;3498:22;;;:9;:22;;;;;:28;10901:11;;3490:59;;;;-1:-1:-1;;;3490:59:10;;;;;;;:::i;:::-;10970:22:::1;::::0;;;:9:::1;:22;::::0;;;;:43:::1;::::0;:33:::1;;11007:5:::0;10970:36:::1;:43::i;:::-;10961:52:::0;10758:262;-1:-1:-1;;;;10758:262:10:o;1656:162:11:-;1748:7;1805:4;;1788:22;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1778:33;;;;;;1771:40;;1656:162;;;;;:::o;10504:248:10:-;10667:13;3498:22;;;:9;:22;;;;;:28;10637:11;;3490:59;;;;-1:-1:-1;;;3490:59:10;;;;;;;:::i;:::-;10703:22:::1;::::0;;;:9:::1;:22;::::0;;;;:42:::1;::::0;:33:::1;;:40;:42::i;:::-;10696:49;;3559:1;10504:248:::0;;;;:::o;1302:101:11:-;1556:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1545:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1545:23:0;;1537:68;;;;-1:-1:-1;;;1537:68:0;;;;;;;:::i;:::-;1350:10:11::1;:8;:10::i;:::-;1375:21;::::0;::::1;::::0;;;::::1;1302:101::o:0;27707:714:10:-;1624:8:4;:6;:8::i;:::-;1623:9;1615:38;;;;-1:-1:-1;;;1615:38:4;;;;;;;:::i;:::-;3498:22:10::1;::::0;;;:9:::1;:22;::::0;;;;:28;27913:11;;3490:59:::1;;;;-1:-1:-1::0;;;3490:59:10::1;;;;;;;:::i;:::-;3972:22:::2;::::0;;;:9:::2;:22;::::0;;;;:33:::2;;::::0;27956:11;;3972:38;3968:188:::2;;4051:22;::::0;;;:9:::2;:22;::::0;;;;:33:::2;;::::0;4088:12:::2;-1:-1:-1::0;4051:49:10::2;4026:119;;;;-1:-1:-1::0;;;4026:119:10::2;;;;;;;:::i;:::-;27983:20:::3;28006:22:::0;;;:9:::3;:22;::::0;;;;28046:23:::3;:14;::::0;::::3;:21;:23::i;:::-;:28:::0;28038:52:::3;;;;-1:-1:-1::0;;;28038:52:10::3;;;;;;;:::i;:::-;28162:13;::::0;::::3;::::0;28203:37:::3;::::0;28121:161:::3;::::0;-1:-1:-1;;;;;28162:13:10::3;::::0;28203:37:::3;::::0;28214:11;;28227:12;;28203:37:::3;;;:::i;:::-;;;;;;;;;;;;;28193:48;;;;;;28259:9;;28121:23;:161::i;:::-;28100:215;;;;-1:-1:-1::0;;;28100:215:10::3;;;;;;;:::i;:::-;28325:13;::::0;::::3;:28:::0;;-1:-1:-1;;;;;;28325:28:10::3;-1:-1:-1::0;;;;;28325:28:10;::::3;::::0;;::::3;::::0;;;28368:46:::3;::::0;28402:11;;28325:28;28368:46:::3;::::0;-1:-1:-1;;28368:46:10::3;4165:1;3559::::2;1663::4::1;27707:714:10::0;;;;:::o;9814:684::-;9987:27;3498:22;;;:9;:22;;;;;:28;9987:27;;;;9944:11;;3490:59;;;;-1:-1:-1;;;3490:59:10;;;;;;;:::i;:::-;10113:32:::1;10148:63;10190:11;10148:28;:63::i;:::-;10221:27;10251:22:::0;;;:9:::1;:22;::::0;;;;;;;:98;;;:72:::1;::::0;;::::1;:98:::0;;;;;10381:16;;10425:19:::1;::::0;::::1;::::0;10472::::1;::::0;;::::1;::::0;10381:16;;10425:19;;-1:-1:-1;10472:19:10;-1:-1:-1;9814:684:10;-1:-1:-1;;;9814:684:10:o;2690:356:11:-;2925:4;2910:20;;2904:27;2970:4;2955:20;;2949:27;3023:4;3008:20;;;3002:27;2904;;2798:9;2994:36;;;;;2885:155::o;11479:1123:10:-;11731:20;11754:22;;;:9;:22;;;;;11632:16;;;;;;11815:88;11862:6;11764:11;11815:33;:88::i;:::-;11786:117;;11913:22;11952:18;-1:-1:-1;;;;;11938:33:10;;;;;-1:-1:-1;;;11938:33:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11938:33:10;;11913:58;;11981:22;12020:18;-1:-1:-1;;;;;12006:33:10;;;;;-1:-1:-1;;;12006:33:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12006:33:10;;11981:58;;12049:20;12084:18;-1:-1:-1;;;;;12072:31:10;;;;;-1:-1:-1;;;12072:31:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12072:31:10;;12049:54;;12118:9;12113:445;12137:18;12133:1;:22;12113:445;;;12176:23;12202:3;:60;;:255;12284:155;12347:11;12384:6;12416:1;12284:37;:155::i;:::-;12202:255;;;;;;;;;;;12176:281;;12482:3;:5;;;12471;12477:1;12471:8;;;;;;-1:-1:-1;;;12471:8:10;;;;;;;;;;;;;;:16;;;;;12512:3;:5;;;12501;12507:1;12501:8;;;;;;-1:-1:-1;;;12501:8:10;;;;;;;;;;;;;;;;;;:16;12542:5;;;;12531:8;;12542:5;;;;;12531;;12537:1;;12531:8;;;;-1:-1:-1;;;12531:8:10;;;;;;;;;:16;;;;:8;;;;;;;;;;;:16;-1:-1:-1;12157:3:10;;;:::i;:::-;;;12113:445;;;-1:-1:-1;12575:5:10;;-1:-1:-1;12582:5:10;-1:-1:-1;12589:5:10;-1:-1:-1;;;11479:1123:10;;;;;:::o;649:135:2:-;760:17;;-1:-1:-1;;;;;747:30:2;;;760:17;;747:30;649:135;;;;:::o;9304:504:10:-;9476:26;3498:22;;;:9;:22;;;;;:28;9476:26;;;;9433:11;;3490:59;;;;-1:-1:-1;;;3490:59:10;;;;;;;:::i;:::-;-1:-1:-1;;;9599:26:10::1;9628:22:::0;;;-1:-1:-1;9628:9:10::1;:22;::::0;;;;:37:::1;::::0;::::1;9696:15:::0;9738:18;;;;9783;;;;;9696:15;;9304:504::o;1310:84:4:-;1380:7;;;;1310:84;;:::o;12608:337:10:-;12744:27;;:::i;:::-;12806:30;;;;:17;:30;;;;;;12876:48;12824:11;12917:6;12876:27;:48::i;:::-;12806:132;;;;;;;;;;;12787:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12608:337;;;;:::o;1965:145:0:-;1556:12;:10;:12::i;:::-;-1:-1:-1;;;;;1545:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1545:23:0;;1537:68;;;;-1:-1:-1;;;1537:68:0;;;;;;;:::i;:::-;2055:6:::1;::::0;2034:40:::1;::::0;2071:1:::1;::::0;-1:-1:-1;;;;;2055:6:0::1;::::0;2034:40:::1;::::0;2071:1;;2034:40:::1;2084:6;:19:::0;;-1:-1:-1;;;;;;2084:19:0::1;::::0;;1965:145::o;7858:850:10:-;8000:7;8042:22;;;:9;:22;;;;;8103:18;;;8000:7;8161:40;;;8000:7;8215:41;8052:11;8215:28;:41::i;:::-;8161:105;;;;;;;;;;;8131:135;;8360:11;8393:6;:15;;;8430:6;:18;;;8470:6;:18;;;8510:7;:16;;;8548:7;:19;;;8589:7;:19;;;8630:12;:10;:12::i;:::-;8664:5;8322:365;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8295:406;;;;;;8276:425;;;;;7858:850;;;;:::o;26768:905::-;1624:8:4;:6;:8::i;:::-;1623:9;1615:38;;;;-1:-1:-1;;;1615:38:4;;;;;;;:::i;:::-;3498:22:10::1;::::0;;;:9:::1;:22;::::0;;;;:28;27049:11;;3490:59:::1;;;;-1:-1:-1::0;;;3490:59:10::1;;;;;;;:::i;:::-;3972:22:::2;::::0;;;:9:::2;:22;::::0;;;;:33:::2;;::::0;27092:11;;3972:38;3968:188:::2;;4051:22;::::0;;;:9:::2;:22;::::0;;;;:33:::2;;::::0;4088:12:::2;-1:-1:-1::0;4051:49:10::2;4026:119;;;;-1:-1:-1::0;;;4026:119:10::2;;;;;;;:::i;:::-;27134:11:::3;27147:12;:10;:12::i;:::-;4445:20;4468:22:::0;;;:9:::3;:22;::::0;;;;4508:31:::3;:14;::::0;::::3;4532:6:::0;4508:23:::3;:31::i;:::-;4500:50;;;;-1:-1:-1::0;;;4500:50:10::3;;;;;;;:::i;:::-;27183:35:::0;;::::4;27175:61;;;;-1:-1:-1::0;;;27175:61:10::4;;;;;;;:::i;:::-;27251:9;27246:247;27266:18:::0;;::::4;27246:247;;;27305:177;27368:11;27397:12;:10;:12::i;:::-;27427:7;;27435:1;27427:10;;;;;-1:-1:-1::0;;;27427:10:10::4;;;;;;;;;;;;;;;27455;;27466:1;27455:13;;;;;-1:-1:-1::0;;;27455:13:10::4;;;;;;;;;;;;;;;;;;;;:::i;:::-;27305:45;:177::i;:::-;27286:3;::::0;::::4;:::i;:::-;;;27246:247;;;-1:-1:-1::0;27502:164:10::4;27544:11:::0;27569:3:::4;27586:14:::0;::::4;;27614::::0;::::4;;27586:11:::0;27654:1:::4;27642:14;;;;;27502:28;:164::i;:::-;4165:1:::3;;;3559::::2;1663::4::1;26768:905:10::0;;;;;;:::o;1201:95:11:-;1556:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1545:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1545:23:0;;1537:68;;;;-1:-1:-1;;;1537:68:0;;;;;;;:::i;:::-;1247:8:11::1;:6;:8::i;:::-;1270:19;::::0;::::1;::::0;;;::::1;1201:95::o:0;1333:85:0:-;1405:6;;-1:-1:-1;;;;;1405:6:0;1333:85;:::o;8746:552:10:-;8913:17;3498:22;;;:9;:22;;;;;:28;8913:17;;;;;;;;8870:11;;3490:59;;;;-1:-1:-1;;;3490:59:10;;;;;;;:::i;:::-;9074:20:::1;9097:22:::0;;;:9:::1;:22;::::0;;;;9141:13:::1;::::0;::::1;::::0;9171:8:::1;::::0;::::1;::::0;9197:9;;9141:13;9229:14;::::1;::::0;-1:-1:-1;;;;;9141:13:10;;::::1;::::0;-1:-1:-1;9171:8:10;;-1:-1:-1;9197:9:10;-1:-1:-1;9229:14:10;-1:-1:-1;9268:23:10::1;:14;::::0;::::1;:21;:23::i;:::-;9253:38;;3559:1;8746:552:::0;;;;;;;;:::o;5332:776::-;5457:7;5503:22;;;:9;:22;;;;;5564:18;;;5457:7;5622:40;;;5457:7;5676:41;5513:11;5676:28;:41::i;:::-;5622:105;;;;;;;;;;;5592:135;;5821:11;5854:6;:15;;;5891:6;:18;;;5931:6;:18;;;5971:7;:16;;;6009:7;:19;;;6050:7;:19;;;5783:304;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5756:345;;;;;;5737:364;;;;;5332:776;;;:::o;13605:593::-;13756:20;3498:22;;;:9;:22;;;;;:28;13756:20;;13726:11;;3490:59;;;;-1:-1:-1;;;3490:59:10;;;;;;;:::i;:::-;13815:20:::1;13838:22:::0;;;:9:::1;:22;::::0;;;;;13909:67:::1;13848:11:::0;13909:32:::1;:67::i;:::-;13870:106;;14001:23;:3;:14;;:21;:23::i;:::-;14050:119;::::0;;;:59:::1;::::0;::::1;:119;::::0;;;;13986:38;;-1:-1:-1;14050:141:10::1;::::0;:139:::1;:141::i;:::-;14034:157;;3559:1;;13605:593:::0;;;;:::o;6114:846::-;6281:7;6256:6;-1:-1:-1;;;;;3369:23:10;;3361:47;;;;-1:-1:-1;;;3361:47:10;;;;;;;:::i;:::-;6304:20:::1;6327:22:::0;;;:9:::1;:22;::::0;;;;;6388:18:::1;::::0;::::1;::::0;6446:40:::1;::::0;::::1;6304:20:::0;6500:41:::1;6337:11:::0;6500:28:::1;:41::i;:::-;6446:105;;;;;;;;;;;6416:135;;6645:11;6678:6;:15;;;6715:6;:18;;;6755:6;:18;;;6795:7;:16;;;6833:7;:19;;;6874:7;:19;;;6915:6;6607:332;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6580:373;;;;;;6561:392;;;;;6114:846:::0;;;;;:::o;26137:625::-;1624:8:4;:6;:8::i;:::-;1623:9;1615:38;;;;-1:-1:-1;;;1615:38:4;;;;;;;:::i;:::-;3498:22:10::1;::::0;;;:9:::1;:22;::::0;;;;:28;26392:11;;3490:59:::1;;;;-1:-1:-1::0;;;3490:59:10::1;;;;;;;:::i;:::-;3972:22:::2;::::0;;;:9:::2;:22;::::0;;;;:33:::2;;::::0;26435:11;;3972:38;3968:188:::2;;4051:22;::::0;;;:9:::2;:22;::::0;;;;:33:::2;;::::0;4088:12:::2;-1:-1:-1::0;4051:49:10::2;4026:119;;;;-1:-1:-1::0;;;4026:119:10::2;;;;;;;:::i;:::-;4445:20:::3;4468:22:::0;;;:9:::3;:22;::::0;;;;26477:11;;26490:6;;4508:31:::3;:14;::::0;::::3;26490:6:::0;4508:23:::3;:31::i;:::-;4500:50;;;;-1:-1:-1::0;;;4500:50:10::3;;;;;;;:::i;:::-;26517:9:::4;26512:244;26532:21:::0;;::::4;26512:244;;;26574:171;26637:11;26666:6;26690:7;;26698:1;26690:10;;;;;-1:-1:-1::0;;;26690:10:10::4;;;;;;;;;;;;;;;26718;;26729:1;26718:13;;;;;-1:-1:-1::0;;;26718:13:10::4;;;;;;;;26574:171;26555:3;::::0;::::4;:::i;:::-;;;26512:244;;;;4165:1:::3;;;3559::::2;1663::4::1;26137:625:10::0;;;;;;:::o;4855:471::-;4976:7;5028:22;;;:9;:22;;;;;;;;:37;;;5192:15;;5229:18;;;;5269;;;;;5121:184;;5028:37;;5121:184;;5038:11;;5192:15;;5269:18;;5121:184;;:::i;:::-;;;;;;;;;;;;;5094:225;;;;;;5075:244;;;4855:471;;;:::o;24771:1360::-;1624:8:4;:6;:8::i;:::-;1623:9;1615:38;;;;-1:-1:-1;;;1615:38:4;;;;;;;:::i;:::-;3642:22:10::1;::::0;;;:9:::1;:22;::::0;;;;:28;25146:11;;3642:33;3634:55:::1;;;;-1:-1:-1::0;;;3634:55:10::1;;;;;;;:::i;:::-;25177:39:::0;;::::2;25169:62;;;;-1:-1:-1::0;;;25169:62:10::2;;;;;;;:::i;:::-;25241;25259:11;25272:4;25278:10;25290:12;25241:17;:62::i;:::-;25313:142;25352:11:::0;25377:12;::::2;25403:14:::0;::::2;25377:12;25431:14:::0;::::2;;25313:25;:142::i;:::-;25465:143;25505:11:::0;25530:12:::2;::::0;::::2;;25556:14:::0;;::::2;;25584::::0;;::::2;;25465:26;:143::i;:::-;25622:12:::0;;::::2;;25618:32;;25643:7;;25618:32;25659:162;25701:11:::0;25726:3:::2;25743:12:::0;;::::2;;25769:14:::0;;::::2;;:11:::0;25809:1:::2;25797:14;::::0;25659:162:::2;25836:9;25831:294;25851:18:::0;;::::2;25831:294;;;25890:46;25912:11;25925:7;;25933:1;25925:10;;;;;-1:-1:-1::0;;;25925:10:10::2;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25890:21;:46::i;:::-;25950:164;26026:11;26055:7;;26063:1;26055:10;;;;;-1:-1:-1::0;;;26055:10:10::2;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26083:14;;26098:1;26083:17;;;;;-1:-1:-1::0;;;26083:17:10::2;;;;;;;;;;;;;;;25950:58;:164::i;:::-;25871:3;::::0;::::2;:::i;:::-;;;25831:294;;1035:160:11::0;1456:13:3;;;;;;;;:30;;-1:-1:-1;1474:12:3;;;;1473:13;1456:30;1448:89;;;;-1:-1:-1;;;1448:89:3;;;;;;;:::i;:::-;1548:19;1571:13;;;;;;1570:14;1594:98;;;;1628:13;:20;;-1:-1:-1;;;;1628:20:3;;;;;1662:19;1644:4;1662:19;;;1594:98;1103:16:11::1;:14;:16::i;:::-;1129:17;:15;:17::i;:::-;1156:32;1178:9;1156:21;:32::i;:::-;1718:14:3::0;1714:66;;;1764:5;1748:21;;-1:-1:-1;;1748:21:3;;;1714:66;1035:160:11;;:::o;15998:868:10:-;3498:22;;;;:9;:22;;;;;:28;16167:31;;16137:11;;3490:59;;;;-1:-1:-1;;;3490:59:10;;;;;;;:::i;:::-;16214:20:::1;16237:22:::0;;;:9:::1;:22;::::0;;;;;16326:14:::1;::::0;::::1;::::0;16373:19:::1;16326:14:::0;16373:17:::1;:19::i;:::-;16350:42;;16433:12;-1:-1:-1::0;;;;;16408:38:10::1;;;;;-1:-1:-1::0;;;16408:38:10::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;16402:44;;16461:9;16456:404;16480:12;16476:1;:16;16456:404;;;16513:14;16530:16;:10:::0;16544:1;16530:13:::1;:16::i;:::-;16513:33;;16560:31;16594:94;16639:11;16668:6;16594:27;:94::i;:::-;16560:128;;16718:6;16702:3;16706:1;16702:6;;;;;;-1:-1:-1::0;;;16702:6:10::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;16702:22:10;;::::1;::::0;;;:13:::1;16766:83:::0;;;:28:::1;::::0;::::1;:83:::0;;;;;;;16738:111;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;;::::0;;;;;:6;;:3;;16742:1;;16738:6;::::1;;;-1:-1:-1::0;;;16738:6:10::1;;;;;;;;;;;;;;;:25;;:111;;;;16456:404;;16494:3;;;;:::i;:::-;;;16456:404;;;;3559:1;;;15998:868:::0;;;;:::o;12951:648::-;13142:16;3498:22;;;:9;:22;;;;;:28;13142:16;;;;13099:11;;3490:59;;;;-1:-1:-1;;;3490:59:10;;;;;;;:::i;:::-;13249:20:::1;13272:22:::0;;;:9:::1;:22;::::0;;;;;13338:82:::1;13282:11:::0;13404:6;13338:27:::1;:82::i;:::-;13430:22;13455:75:::0;;;:28:::1;::::0;;;::::1;:75;::::0;-1:-1:-1;13455:75:10;;;13548:11;;13561:14:::1;::::0;::::1;::::0;13577::::1;::::0;;::::1;::::0;13548:11;;13561:14;;-1:-1:-1;13577:14:10;-1:-1:-1;12951:648:10;-1:-1:-1;;;;12951:648:10:o;14204:1788::-;3498:22;;;;:9;:22;;;;;:28;14379:58;;14349:11;;3490:59;;;;-1:-1:-1;;;3490:59:10;;;;;;;:::i;:::-;14453:20:::1;14476:22:::0;;;:9:::1;:22;::::0;;;;;14565:14:::1;::::0;::::1;::::0;14612:19:::1;14565:14:::0;14612:17:::1;:19::i;:::-;14589:42;;14699:12;-1:-1:-1::0;;;;;14659:53:10::1;;;;;-1:-1:-1::0;;;14659:53:10::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;14641:71;;14727:9;14722:1264;14746:12;14742:1;:16;14722:1264;;;14779:14;14796:16;:10:::0;14810:1;14796:13:::1;:16::i;:::-;14779:33;;14826:31;14860:94;14905:11;14934:6;14860:27;:94::i;:::-;14968:37;15008:82:::0;;;:57:::1;::::0;::::1;:82;::::0;;;;;14826:128;;-1:-1:-1;15008:82:10;-1:-1:-1;;;;;15134:71:10;::::1;;;;-1:-1:-1::0;;;15134:71:10::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;15134:71:10::1;;15104:101;;15224:9;15219:649;15243:29;15239:1;:33;15219:649;;;15297:40;15340:155;15403:11;15440:6;15472:1;15340:37;:155::i;:::-;15513:23;15539:144:::0;;;:64:::1;::::0;::::1;:144;::::0;;;;15722:5;;15297:198;;-1:-1:-1;15539:144:10;15722:12;:48;::::1;;;-1:-1:-1::0;15758:5:10::1;::::0;::::1;::::0;:12;15722:48:::1;:82;;;;-1:-1:-1::0;15794:5:10::1;::::0;::::1;::::0;::::1;;:10:::0;15722:82:::1;15720:85;15701:104;;15842:11;15823:13;15837:1;15823:16;;;;;;-1:-1:-1::0;;;15823:16:10::1;;;;;;;;;;;;;;:30;;;;;;;;;::::0;::::1;15219:649;;;15274:3;;;;:::i;:::-;;;15219:649;;;;15909:6;15881:15;15897:1;15881:18;;;;;;-1:-1:-1::0;;;15881:18:10::1;;;;;;;;;;;;;;;:25;;:34;-1:-1:-1::0;;;;;15881:34:10::1;;;-1:-1:-1::0;;;;;15881:34:10::1;;;::::0;::::1;15962:13;15929:15;15945:1;15929:18;;;;;;-1:-1:-1::0;;;15929:18:10::1;;;;;;;;;;;;;;;:30;;:46;;;;14722:1264;;;;14760:3;;;;:::i;:::-;;;14722:1264;;2259:240:0::0;1556:12;:10;:12::i;:::-;-1:-1:-1;;;;;1545:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1545:23:0;;1537:68;;;;-1:-1:-1;;;1537:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2347:22:0;::::1;2339:73;;;;-1:-1:-1::0;;;2339:73:0::1;;;;;;;:::i;:::-;2448:6;::::0;2427:38:::1;::::0;-1:-1:-1;;;;;2427:38:0;;::::1;::::0;2448:6:::1;::::0;2427:38:::1;::::0;2448:6:::1;::::0;2427:38:::1;2475:6;:17:::0;;-1:-1:-1;;;;;;2475:17:0::1;-1:-1:-1::0;;;;;2475:17:0;;;::::1;::::0;;;::::1;::::0;;2259:240::o;605:211:11:-;754:14;791:18;:16;:18::i;:::-;784:25;;605:211;:::o;7242:115:9:-;7305:7;7331:19;7339:3;7331:7;:19::i;7689:156::-;7763:7;7813:22;7817:3;7829:5;7813:3;:22::i;:::-;7805:31;7689:156;-1:-1:-1;;;7689:156:9:o;23091:1206:10:-;23308:20;23331:22;;;:9;:22;;;;;23398:23;23435:31;23431:176;;23507:100;23552:11;23581:12;:10;:12::i;23507:100::-;23480:127;;23431:176;23617:22;23642:76;;;:28;;;:76;;;;;23732:11;;23728:455;;23844:11;23814:12;:10;:12::i;:::-;-1:-1:-1;;;;;23769:184:10;;23873:8;23899:11;23928;23769:184;;;;;;;;:::i;:::-;;;;;;;;23728:455;;;24063:11;24033:12;:10;:12::i;:::-;-1:-1:-1;;;;;23989:183:10;;24092:8;24118:11;24147;23989:183;;;;;;;;:::i;:::-;;;;;;;;23728:455;24192:22;;;-1:-1:-1;;24224:14:10;;;:28;;;;24262:14;;;;:28;-1:-1:-1;;23091:1206:10:o;24303:197::-;1624:8:4;:6;:8::i;:::-;1623:9;1615:38;;;;-1:-1:-1;;;1615:38:4;;;;;;;:::i;:::-;3498:22:10::1;::::0;;;:9:::1;:22;::::0;;;;:28;24415:11;;3490:59:::1;;;;-1:-1:-1::0;;;3490:59:10::1;;;;;;;:::i;:::-;24481:11:::2;24467:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;24447:46:10::2;;;;;;;;;;;1663:1:4::1;24303:197:10::0;:::o;4371:265:7:-;4440:7;4623:4;4570:58;;;;;;;;:::i;:::-;;;;;;;;;;;;;4560:69;;;;;;4553:76;;4371:265;;;:::o;760:537:8:-;866:4;886:37;916:6;886:29;:37::i;:::-;882:409;;;943:61;;-1:-1:-1;;;943:61:8;;-1:-1:-1;;;;;943:44:8;;;;;:61;;988:4;;994:9;;943:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;943:61:8;;;;;;;;-1:-1:-1;;943:61:8;;;;;;;;;;;;:::i;:::-;;;939:253;;-1:-1:-1;1172:5:8;1165:12;;939:253;-1:-1:-1;;;;;;1058:67:8;-1:-1:-1;;;1058:67:8;;-1:-1:-1;1051:74:8;;882:409;1274:6;-1:-1:-1;;;;;1229:51:8;:41;1254:4;1260:9;1229:24;:41::i;:::-;-1:-1:-1;;;;;1229:51:8;;;760:537;-1:-1:-1;;;;760:537:8:o;6996:165:9:-;7076:4;7099:55;7109:3;-1:-1:-1;;;;;7129:23:9;;7099:9;:55::i;2322:117:4:-;1889:8;:6;:8::i;:::-;1881:41;;;;-1:-1:-1;;;1881:41:4;;;;;;;:::i;:::-;2380:7:::1;:15:::0;;-1:-1:-1;;2380:15:4::1;::::0;;2410:22:::1;2419:12;:10;:12::i;:::-;2410:22;;;;;;:::i;:::-;;;;;;;;2322:117::o:0;11026:447:10:-;11182:13;3498:22;;;:9;:22;;;;;:28;11160:11;;3490:59;;;;-1:-1:-1;;;3490:59:10;;;;;;;:::i;:::-;11207:31:::1;11241:82;11282:11;11307:6;11241:27;:82::i;:::-;11352:22;::::0;;;:9:::1;:22;::::0;;;;;;;:114;;;:59:::1;::::0;;::::1;:114:::0;;;;;-1:-1:-1;;11026:447:10;;;;;:::o;6966:886::-;7150:7;7133:6;-1:-1:-1;;;;;3369:23:10;;3361:47;;;;-1:-1:-1;;;3361:47:10;;;;;;;:::i;:::-;7169:20:::1;7192:22:::0;;;:9:::1;:22;::::0;;;;;7253:18:::1;::::0;::::1;::::0;7311:40:::1;::::0;::::1;7169:20:::0;7365:41:::1;7202:11:::0;7365:28:::1;:41::i;:::-;7311:105;;;;;;;;;;;7281:135;;7510:11;7543:6;:15;;;7580:6;:18;;;7620:6;:18;;;7660:7;:16;;;7698:7;:19;;;7739:7;:19;;;7780:6;7808:5;7472:359;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7445:400;;;;;;7426:419;;;;;6966:886:::0;;;;;;:::o;19670:2217::-;19860:20;19883:22;;;:9;:22;;;;;;19949:82;19893:11;20015:6;19949:27;:82::i;:::-;19915:116;;20082:23;:3;:14;;:21;:23::i;:::-;20062:3;:16;;;:43;20041:111;;;;-1:-1:-1;;;20041:111:10;;;;;;;:::i;:::-;20207:103;;;;:40;;;:103;;;;;;20183:127;;20162:187;;;;-1:-1:-1;;;20162:187:10;;;;;;;:::i;:::-;20380:249;20421:6;20445:143;20504:11;20537:6;20565:5;20445:37;:143::i;:::-;20606:9;;20380:23;:249::i;:::-;20359:310;;;;-1:-1:-1;;;20359:310:10;;;;;;;:::i;:::-;20679:30;;;;:17;:30;;;;;;;;:99;;;;;;;;20788:9;;;;20779:5;20679:106;;;;;-1:-1:-1;;;20679:106:10;;;;;;;;;:118;;:106;;;:118;:::i;:::-;;20857:6;-1:-1:-1;;;;;20812:59:10;20844:11;20812:59;20865:5;20812:59;;;;;;:::i;:::-;;;;;;;;20899:30;;;;:17;:30;;;;;;;;:120;;;:65;;:120;;;;;21020:5;20899:127;;;;;-1:-1:-1;;;20899:127:10;;;;;;;;;;;;;;;;;;;;;;;;;;20881:1000;;21051:30;;;;:17;:30;;;;;;;;:120;;;21181:4;21051:65;;;:120;;;;;;21172:5;21051:127;;;;;-1:-1:-1;;;21051:127:10;;;;;;;;;;;;;;;;;;:134;;;;;;;;;;;;;;;;;;21201:3;:46;;:101;21265:23;21201:101;;;;;;;;;;;;21199:103;;;;;:::i;:::-;;;;-1:-1:-1;21466:103:10;;;;:40;;;:103;;;;;;;;;21337:46;;;:109;;;;;;;:232;21316:555;;;21602:193;21788:6;21602:3;:67;;:160;21695:45;21728:11;21695:32;:45::i;:::-;21602:160;;;;;;;;;;;:185;;:193;;;;:::i;:::-;-1:-1:-1;21818:38:10;;-1:-1:-1;;;;;21818:38:10;;;21836:11;;21818:38;;;;;21316:555;19670:2217;;;;;;;:::o;2075:115:4:-;1624:8;:6;:8::i;:::-;1623:9;1615:38;;;;-1:-1:-1;;;1615:38:4;;;;;;;:::i;:::-;2134:7:::1;:14:::0;;-1:-1:-1;;2134:14:4::1;2144:4;2134:14;::::0;;2163:20:::1;2170:12;:10;:12::i;16887:555:10:-:0;17048:20;17071:22;;;:9;:22;;;;;17103:8;;;:15;;;17140:12;17128:24;;17162:14;;;:27;;;17215:12;:10;:12::i;:::-;17199:13;;;:28;;-1:-1:-1;;;;;;17199:28:10;-1:-1:-1;;;;;17199:28:10;;;;;;;;17237:16;;;:31;;;17363:8;;;;17283:152;;17363:8;;17338:11;;17311:13;;17283:152;;;;17237:31;;17415:10;;17283:152;:::i;:::-;;;;;;;;16887:555;;;;;:::o;17705:549::-;17878:20;17901:22;;;:9;:22;;;;;;;17962:18;;;17990:26;;;18026:18;;;:32;;;18068:18;;;:32;;;18115:132;;17901:22;;17962:18;17911:11;;18115:132;;;;18008:8;;18047:11;;18089;;18115:132;:::i;:::-;;;;;;;;17705:549;;;;;;:::o;18260:641::-;18434:20;18457:22;;;:9;:22;;;;;;18519:40;;;18434:20;18573:41;18467:11;18573:28;:41::i;:::-;18519:105;;;;;;;;;;;;;-1:-1:-1;18519:105:10;18634:27;;;18671:19;;;:33;;;18714:19;;;:33;;;18762:132;;18519:105;;-1:-1:-1;18801:11:10;;18762:132;;;;18653:8;;18693:11;;18736;;18762:132;:::i;17448:251::-;17547:20;17570:22;;;:9;:22;;;;;17602:26;:14;;;17621:6;17602:18;:26::i;:::-;-1:-1:-1;17643:49:10;;17680:11;;-1:-1:-1;;;;;17643:49:10;;;;;;;;17448:251;;;:::o;18907:684::-;19077:20;19100:22;;;:9;:22;;;;;;19166:82;19110:11;19232:6;19166:27;:82::i;:::-;19279:65;;;;:40;;;:65;;;;;;19132:116;;-1:-1:-1;19279:86:10;19258:147;;;;-1:-1:-1;;;19258:147:10;;;;;;;:::i;:::-;19415:87;;;;:40;;;:87;;;;;;;:96;;;19526:58;-1:-1:-1;;;;;19526:58:10;;;19556:11;;19526:58;;;;19505:6;;19526:58;:::i;:::-;;;;;;;;18907:684;;;;;:::o;933:126:0:-;1456:13:3;;;;;;;;:30;;-1:-1:-1;1474:12:3;;;;1473:13;1456:30;1448:89;;;;-1:-1:-1;;;1448:89:3;;;;;;;:::i;:::-;1548:19;1571:13;;;;;;1570:14;1594:98;;;;1628:13;:20;;-1:-1:-1;;;;1628:20:3;;;;;1662:19;1644:4;1662:19;;;1594:98;990:26:0::1;:24;:26::i;:::-;1026;:24;:26::i;:::-;1718:14:3::0;1714:66;;;1764:5;1748:21;;-1:-1:-1;;1748:21:3;;;1714:66;933:126:0;:::o;991:128:4:-;1456:13:3;;;;;;;;:30;;-1:-1:-1;1474:12:3;;;;1473:13;1456:30;1448:89;;;;-1:-1:-1;;;1448:89:3;;;;;;;:::i;:::-;1548:19;1571:13;;;;;;1570:14;1594:98;;;;1628:13;:20;;-1:-1:-1;;;;1628:20:3;;;;;1662:19;1644:4;1662:19;;;1594:98;1049:26:4::1;:24;:26::i;:::-;1085:27;:25;:27::i;316:180:2:-:0;1456:13:3;;;;;;;;:30;;-1:-1:-1;1474:12:3;;;;1473:13;1456:30;1448:89;;;;-1:-1:-1;;;1448:89:3;;;;;;;:::i;:::-;1548:19;1571:13;;;;;;1570:14;1594:98;;;;1628:13;:20;;-1:-1:-1;;;;1628:20:3;;;;;1662:19;1644:4;1662:19;;;1594:98;404:26:2::1;:24;:26::i;:::-;440:49;472:16;440:31;:49::i;790:373::-:0;852:14;882:30;901:10;882:18;:30::i;:::-;878:279;;;-1:-1:-1;;;1068:14:2;1064:23;1051:37;1047:2;1043:46;1031:60;;;1128:18;:16;:18::i;:::-;1121:25;;;;4025:107:9;4107:18;;4025:107::o;4464:201::-;4558:18;;4531:7;;4558:26;-1:-1:-1;4550:73:9;;;;-1:-1:-1;;;4550:73:9;;;;;;;:::i;:::-;4640:3;:11;;4652:5;4640:18;;;;;;-1:-1:-1;;;4640:18:9;;;;;;;;;;;;;;;;;4633:25;;4464:201;;;;:::o;729:413:5:-;1089:20;1127:8;;;729:413::o;1075:1459:7:-;1153:7;1228:9;1247;1266:7;1481:9;:16;1501:2;1481:22;1477:1011;;;-1:-1:-1;;;1763:4:7;1748:20;;1742:27;1812:4;1797:20;;1791:27;1869:4;1854:20;;1848:27;1845:1;1840:36;1719:171;;;1910:9;:16;1930:2;1910:22;1906:582;;;-1:-1:-1;;;2197:4:7;2182:20;;2176:27;2246:4;2231:20;;2225:27;;-1:-1:-1;;;;;2274:75:7;;;2379:3;2375:12;2389:2;2371:21;2148:258;;;2436:41;;-1:-1:-1;;;2436:41:7;;;;;;;:::i;1906:582::-;2505:22;2513:4;2519:1;2522;2525;2505:7;:22::i;:::-;2498:29;1075:1459;-1:-1:-1;;;;;;1075:1459:7:o;3817:127:9:-;3890:4;3913:19;;;:12;;;;;:19;;;;;;:24;;;3817:127::o;6441:150::-;6511:4;6534:50;6539:3;-1:-1:-1;;;;;6559:23:9;;6534:4;:50::i;753:64:6:-;1456:13:3;;;;;;;;:30;;-1:-1:-1;1474:12:3;;;;1473:13;1456:30;1448:89;;;;-1:-1:-1;;;1448:89:3;;;;;;;:::i;:::-;1548:19;1571:13;;;;;;1570:14;1594:98;;;;1628:13;:20;;-1:-1:-1;;;;1628:20:3;;;;;1662:19;1644:4;1662:19;;;1718:14;1714:66;;;1764:5;1748:21;;-1:-1:-1;;1748:21:3;;;753:64:6;:::o;1065:192:0:-;1456:13:3;;;;;;;;:30;;-1:-1:-1;1474:12:3;;;;1473:13;1456:30;1448:89;;;;-1:-1:-1;;;1448:89:3;;;;;;;:::i;:::-;1548:19;1571:13;;;;;;1570:14;1594:98;;;;1628:13;:20;;-1:-1:-1;;;;1628:20:3;;;;;1662:19;1644:4;1662:19;;;1594:98;1132:17:0::1;1152:12;:10;:12::i;:::-;1174:6;:18:::0;;-1:-1:-1;;;;;;1174:18:0::1;-1:-1:-1::0;;;;;1174:18:0;::::1;::::0;;::::1;::::0;;;1207:43:::1;::::0;1174:18;;-1:-1:-1;1174:18:0;-1:-1:-1;;1207:43:0::1;::::0;-1:-1:-1;;1207:43:0::1;1702:1:3;1718:14:::0;1714:66;;;1764:5;1748:21;;-1:-1:-1;;1748:21:3;;;1065:192:0;:::o;1125:90:4:-;1456:13:3;;;;;;;;:30;;-1:-1:-1;1474:12:3;;;;1473:13;1456:30;1448:89;;;;-1:-1:-1;;;1448:89:3;;;;;;;:::i;:::-;1548:19;1571:13;;;;;;1570:14;1594:98;;;;1628:13;:20;;-1:-1:-1;;;;1628:20:3;;;;;1662:19;1644:4;1662:19;;;1594:98;1193:7:4::1;:15:::0;;-1:-1:-1;;1193:15:4::1;::::0;;1714:66:3;;;;1764:5;1748:21;;-1:-1:-1;;1748:21:3;;;1125:90:4;:::o;502:141:2:-;1456:13:3;;;;;;;;:30;;-1:-1:-1;1474:12:3;;;;1473:13;1456:30;1448:89;;;;-1:-1:-1;;;1448:89:3;;;;;;;:::i;:::-;1548:19;1571:13;;;;;;1570:14;1594:98;;;;1628:13;:20;;-1:-1:-1;;;;1628:20:3;;;;;1662:19;1644:4;1662:19;;;1594:98;600:17:2::1;:36:::0;;-1:-1:-1;;;;;;600:36:2::1;-1:-1:-1::0;;;;;600:36:2;::::1;;::::0;;1714:66:3;;;;1764:5;1748:21;;-1:-1:-1;;1748:21:3;;;502:141:2;;:::o;822:96:6:-;901:10;822:96;:::o;2667:1414:7:-;2752:7;3667:66;3653:80;;;3645:127;;;;-1:-1:-1;;;3645:127:7;;;;;;;:::i;:::-;3790:1;:7;;3795:2;3790:7;:18;;;;3801:1;:7;;3806:2;3801:7;3790:18;3782:65;;;;-1:-1:-1;;;3782:65:7;;;;;;;:::i;:::-;3942:14;3959:24;3969:4;3975:1;3978;3981;3959:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3959:24:7;;-1:-1:-1;;3959:24:7;;;-1:-1:-1;;;;;;;4001:20:7;;3993:57;;;;-1:-1:-1;;;3993:57:7;;;;;;;:::i;1643:404:9:-;1706:4;1727:21;1737:3;1742:5;1727:9;:21::i;:::-;1722:319;;-1:-1:-1;1764:23:9;;;;;;;;:11;:23;;;;;;;;;;;;;1944:18;;1922:19;;;:12;;;:19;;;;;;:40;;;;1976:11;;1722:319;-1:-1:-1;2025:5:9;2018:12;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;14:175:15;84:20;;-1:-1:-1;;;;;133:31:15;;123:42;;113:2;;179:1;176;169:12;194:400;;;327:3;320:4;312:6;308:17;304:27;294:2;;350:6;342;335:22;294:2;-1:-1:-1;378:20:15;;-1:-1:-1;;;;;410:30:15;;407:2;;;460:8;450;443:26;407:2;504:4;496:6;492:17;480:29;;567:3;560:4;552;544:6;540:17;532:6;528:30;524:41;521:50;518:2;;;584:1;581;574:12;518:2;284:310;;;;;:::o;599:164::-;698:6;731:2;719:15;;716:24;-1:-1:-1;713:2:15;;;753:1;750;743:12;768:377;;;885:3;878:4;870:6;866:17;862:27;852:2;;910:8;900;893:26;852:2;-1:-1:-1;940:20:15;;-1:-1:-1;;;;;972:30:15;;969:2;;;1022:8;1012;1005:26;969:2;1066:4;1058:6;1054:17;1042:29;;1118:3;1111:4;1102:6;1094;1090:19;1086:30;1083:39;1080:2;;;1135:1;1132;1125:12;1150:198;;1262:2;1250:9;1241:7;1237:23;1233:32;1230:2;;;1283:6;1275;1268:22;1230:2;1311:31;1332:9;1311:31;:::i;1353:266::-;;;1482:2;1470:9;1461:7;1457:23;1453:32;1450:2;;;1503:6;1495;1488:22;1450:2;1531:31;1552:9;1531:31;:::i;:::-;1521:41;1609:2;1594:18;;;;1581:32;;-1:-1:-1;;;1440:179:15:o;1624:575::-;;;;;1789:2;1777:9;1768:7;1764:23;1760:32;1757:2;;;1810:6;1802;1795:22;1757:2;1838:31;1859:9;1838:31;:::i;:::-;1828:41;;1916:2;1905:9;1901:18;1888:32;1878:42;;1971:2;1960:9;1956:18;1943:32;-1:-1:-1;;;;;1990:6:15;1987:30;1984:2;;;2035:6;2027;2020:22;1984:2;2079:60;2131:7;2122:6;2111:9;2107:22;2079:60;:::i;:::-;1747:452;;;;-1:-1:-1;2158:8:15;-1:-1:-1;;;;1747:452:15:o;2204:463::-;;;2351:2;2339:9;2330:7;2326:23;2322:32;2319:2;;;2372:6;2364;2357:22;2319:2;2417:9;2404:23;-1:-1:-1;;;;;2442:6:15;2439:30;2436:2;;;2487:6;2479;2472:22;2436:2;2531:76;2599:7;2590:6;2579:9;2575:22;2531:76;:::i;:::-;2626:8;;2505:102;;-1:-1:-1;2309:358:15;-1:-1:-1;;;;2309:358:15:o;2672:190::-;;2784:2;2772:9;2763:7;2759:23;2755:32;2752:2;;;2805:6;2797;2790:22;2752:2;-1:-1:-1;2833:23:15;;2742:120;-1:-1:-1;2742:120:15:o;2867:266::-;;;2996:2;2984:9;2975:7;2971:23;2967:32;2964:2;;;3017:6;3009;3002:22;2964:2;3058:9;3045:23;3035:33;;3087:40;3123:2;3112:9;3108:18;3087:40;:::i;:::-;3077:50;;2954:179;;;;;:::o;3138:971::-;;;;;;;3382:3;3370:9;3361:7;3357:23;3353:33;3350:2;;;3404:6;3396;3389:22;3350:2;3445:9;3432:23;3422:33;;3474:40;3510:2;3499:9;3495:18;3474:40;:::i;:::-;3464:50;;3565:2;3554:9;3550:18;3537:32;-1:-1:-1;;;;;3629:2:15;3621:6;3618:14;3615:2;;;3650:6;3642;3635:22;3615:2;3694:76;3762:7;3753:6;3742:9;3738:22;3694:76;:::i;:::-;3789:8;;-1:-1:-1;3668:102:15;-1:-1:-1;3877:2:15;3862:18;;3849:32;;-1:-1:-1;3893:16:15;;;3890:2;;;3927:6;3919;3912:22;3890:2;;3971:78;4041:7;4030:8;4019:9;4015:24;3971:78;:::i;:::-;3340:769;;;;-1:-1:-1;3340:769:15;;-1:-1:-1;3340:769:15;;4068:8;;3340:769;-1:-1:-1;;;3340:769:15:o;4114:575::-;;;;;4279:2;4267:9;4258:7;4254:23;4250:32;4247:2;;;4300:6;4292;4285:22;4247:2;4341:9;4328:23;4318:33;;4370:40;4406:2;4395:9;4391:18;4370:40;:::i;:::-;4360:50;;4461:2;4450:9;4446:18;4433:32;-1:-1:-1;;;;;4480:6:15;4477:30;4474:2;;;4525:6;4517;4510:22;4694:1023;;;;;;;4963:3;4951:9;4942:7;4938:23;4934:33;4931:2;;;4985:6;4977;4970:22;4931:2;5026:9;5013:23;5003:33;;5087:2;5076:9;5072:18;5059:32;-1:-1:-1;;;;;5151:2:15;5143:6;5140:14;5137:2;;;5172:6;5164;5157:22;5137:2;5216:76;5284:7;5275:6;5264:9;5260:22;5216:76;:::i;:::-;5311:8;;-1:-1:-1;5190:102:15;-1:-1:-1;5399:2:15;5384:18;;5371:32;;-1:-1:-1;5415:16:15;;;5412:2;;;5449:6;5441;5434:22;5412:2;;5493:78;5563:7;5552:8;5541:9;5537:24;5493:78;:::i;:::-;5590:8;;-1:-1:-1;5467:104:15;-1:-1:-1;5644:67:15;;-1:-1:-1;5703:7:15;5698:2;5683:18;;5644:67;:::i;:::-;5634:77;;4921:796;;;;;;;;:::o;5722:395::-;;;;;5885:3;5873:9;5864:7;5860:23;5856:33;5853:2;;;5907:6;5899;5892:22;5853:2;-1:-1:-1;;5935:23:15;;;6005:2;5990:18;;5977:32;;-1:-1:-1;6056:2:15;6041:18;;6028:32;;6107:2;6092:18;6079:32;;-1:-1:-1;5843:274:15;-1:-1:-1;5843:274:15:o;6122:1374::-;;;;;;;;;;;6473:3;6461:9;6452:7;6448:23;6444:33;6441:2;;;6495:6;6487;6480:22;6441:2;6536:9;6523:23;6513:33;;6593:2;6582:9;6578:18;6565:32;6555:42;;6644:2;6633:9;6629:18;6616:32;6606:42;;6695:2;6684:9;6680:18;6667:32;6657:42;;6718:68;6778:7;6772:3;6761:9;6757:19;6718:68;:::i;:::-;6708:78;;6820:3;6809:9;6805:19;6843:7;6839:2;6836:15;6833:2;;;6869:6;6861;6854:22;6833:2;6912:3;6897:19;;;-1:-1:-1;6939:16:15;-1:-1:-1;;;;;7004:14:15;;;7001:2;;;7036:6;7028;7021:22;7001:2;7080:76;7148:7;7139:6;7128:9;7124:22;7080:76;:::i;:::-;7175:8;;-1:-1:-1;7054:102:15;-1:-1:-1;7263:3:15;7248:19;;7235:33;;-1:-1:-1;7280:16:15;;;7277:2;;;7314:6;7306;7299:22;7277:2;;7358:78;7428:7;7417:8;7406:9;7402:24;7358:78;:::i;:::-;7332:104;;7455:8;7445:18;;;7482:8;7472:18;;;6431:1065;;;;;;;;;;;;;:::o;7501:258::-;;;7630:2;7618:9;7609:7;7605:23;7601:32;7598:2;;;7651:6;7643;7636:22;7598:2;-1:-1:-1;;7679:23:15;;;7749:2;7734:18;;;7721:32;;-1:-1:-1;7588:171:15:o;7764:310::-;;7886:2;7874:9;7865:7;7861:23;7857:32;7854:2;;;7907:6;7899;7892:22;7854:2;7938:16;;-1:-1:-1;;;;;;7983:32:15;;7973:43;;7963:2;;8035:6;8027;8020:22;8079:957;;8178:2;8221;8209:9;8200:7;8196:23;8192:32;8189:2;;;8242:6;8234;8227:22;8189:2;8287:9;8274:23;-1:-1:-1;;;;;8357:2:15;8349:6;8346:14;8343:2;;;8378:6;8370;8363:22;8343:2;8421:6;8410:9;8406:22;8396:32;;8466:7;8459:4;8455:2;8451:13;8447:27;8437:2;;8493:6;8485;8478:22;8437:2;8534;8521:16;8556:2;8552;8549:10;8546:2;;;8562:18;;:::i;:::-;8611:2;8605:9;8680:2;8661:13;;-1:-1:-1;;8657:27:15;8645:40;;8641:49;;8705:18;;;8725:22;;;8702:46;8699:2;;;8751:18;;:::i;:::-;8787:2;8780:22;8811:18;;;8848:11;;;8844:20;;8841:33;-1:-1:-1;8838:2:15;;;8892:6;8884;8877:22;8838:2;8953;8948;8944;8940:11;8935:2;8927:6;8923:15;8910:46;8976:15;;;8972:24;;;8965:40;;;;-1:-1:-1;8980:6:15;8158:878;-1:-1:-1;;;8158:878:15:o;9041:432::-;;;9173:2;9161:9;9152:7;9148:23;9144:32;9141:2;;;9194:6;9186;9179:22;9141:2;9239:9;9226:23;-1:-1:-1;;;;;9264:6:15;9261:30;9258:2;;;9309:6;9301;9294:22;9258:2;9353:60;9405:7;9396:6;9385:9;9381:22;9353:60;:::i;9478:443::-;;9575:5;9569:12;9602:6;9597:3;9590:19;9628:4;9657:2;9652:3;9648:12;9641:19;;9694:2;9687:5;9683:14;9715:3;9727:169;9741:6;9738:1;9735:13;9727:169;;;9802:13;;9790:26;;9836:12;;;;9871:15;;;;9763:1;9756:9;9727:169;;;-1:-1:-1;9912:3:15;;9545:376;-1:-1:-1;;;;;9545:376:15:o;9926:477::-;;10007:5;10001:12;10034:6;10029:3;10022:19;10059:3;10071:162;10085:6;10082:1;10079:13;10071:162;;;10147:4;10203:13;;;10199:22;;10193:29;10175:11;;;10171:20;;10164:59;10100:12;10071:162;;;10251:6;10248:1;10245:13;10242:2;;;10317:3;10310:4;10301:6;10296:3;10292:16;10288:27;10281:40;10242:2;-1:-1:-1;10385:2:15;10364:15;-1:-1:-1;;10360:29:15;10351:39;;;;10392:4;10347:50;;9977:426;-1:-1:-1;;9977:426:15:o;10408:378::-;10621:19;;;10665:2;10656:12;;10649:28;;;;10702:2;10693:12;;10686:28;10739:2;10730:12;;10723:28;10776:3;10767:13;;10611:175::o;10791:576::-;11088:19;;;11132:2;11123:12;;11116:28;;;;11169:2;11160:12;;11153:28;;;;11206:2;11197:12;;11190:28;;;;11243:3;11234:13;;11227:29;11281:3;11272:13;;11265:29;11319:3;11310:13;;11303:29;11357:3;11348:13;;11078:289::o;11372:689::-;11697:19;;;11741:2;11732:12;;11725:28;;;;11778:2;11769:12;;11762:28;;;;11815:2;11806:12;;;11799:28;;;;11852:3;11843:13;;11836:29;;;;11890:3;11881:13;;11874:29;11928:3;11919:13;;11912:29;;;;11976:15;-1:-1:-1;;11972:53:15;11966:3;11957:13;;11950:76;12051:3;12042:13;;11687:374::o;12066:755::-;12419:19;;;12463:2;12454:12;;12447:28;;;;12500:2;12491:12;;12484:28;;;;12537:2;12528:12;;;12521:28;;;;12574:3;12565:13;;12558:29;;;;12612:3;12603:13;;12596:29;12650:3;12641:13;;12634:29;12698:15;-1:-1:-1;;12694:53:15;12688:3;12679:13;;12672:76;12773:3;12764:13;;12757:29;12811:3;12802:13;;12409:412::o;12826:275::-;;13011:6;13003;12998:3;12985:33;13037:16;;13062:15;;;13037:16;12975:126;-1:-1:-1;12975:126:15:o;13106:380::-;13348:66;13336:79;;13440:2;13431:12;;13424:28;;;;13477:2;13468:12;;13326:160::o;13491:203::-;-1:-1:-1;;;;;13655:32:15;;;;13637:51;;13625:2;13610:18;;13592:102::o;13699:489::-;-1:-1:-1;;;;;13976:32:15;;;;13958:51;;14040:2;14025:18;;14018:34;;;;14083:2;14068:18;;14061:34;;;;14126:2;14111:18;;14104:34;14169:3;14154:19;;14147:35;13945:3;13930:19;;13912:276::o;14193:1030::-;;14524:2;14513:9;14506:21;14550:62;14608:2;14597:9;14593:18;14585:6;14550:62;:::i;:::-;14631:2;14681:9;14673:6;14669:22;14664:2;14653:9;14649:18;14642:50;14715;14758:6;14750;14715:50;:::i;:::-;14801:22;;;14796:2;14781:18;;14774:50;14873:13;;14895:22;;;14971:15;;;;-1:-1:-1;14933:15:15;;;;15004:4;15017:180;15031:6;15028:1;15025:13;15017:180;;;15096:13;;15111:4;15092:24;15080:37;;15172:15;;;;15137:12;;;;15053:1;15046:9;15017:180;;;-1:-1:-1;15214:3:15;;14496:727;-1:-1:-1;;;;;;;;14496:727:15:o;15228:693::-;15415:2;15467:21;;;15228:693;;15574:3;15559:19;;15440:18;;;15601:6;15228:693;15638:254;15652:4;15649:1;15646:11;15638:254;;;15743:2;15739:7;15727:9;15719:6;15715:22;15711:36;15706:3;15699:49;15771:41;15805:6;15796;15790:13;15771:41;:::i;:::-;15761:51;-1:-1:-1;15870:12:15;;;;15835:15;;;;15672:1;15665:9;15638:254;;;-1:-1:-1;15909:6:15;;15395:526;-1:-1:-1;;;;;;15395:526:15:o;15926:1019::-;16169:2;16221:21;;;16291:13;;16194:18;;;16313:22;;;15926:1019;;16169:2;16354;;16372:18;;;;16413:15;;;15926:1019;16459:460;16473:6;16470:1;16467:13;16459:460;;;16532:13;;16574:9;;-1:-1:-1;;;;;16570:35:15;16558:48;;16645:11;;16639:18;16691:19;;16677:12;;;16670:41;16751:21;;;16745:28;16731:12;;;16724:50;16814:21;;16808:28;16803:2;16794:12;;16787:50;16866:4;16857:14;;;;16894:15;;;;16602:1;16488:9;16459:460;;;-1:-1:-1;16936:3:15;;16149:796;-1:-1:-1;;;;;;;16149:796:15:o;16950:1578::-;17223:2;17275:21;;;17345:13;;17248:18;;;17367:22;;;16950:1578;;17223:2;17408;;17426:18;;;;17486:15;;;17471:31;;17467:40;;17530:15;;;16950:1578;17576:923;17590:6;17587:1;17584:13;17576:923;;;17655:22;;;-1:-1:-1;;17651:36:15;17639:49;;17711:13;;17798:9;;-1:-1:-1;;;;;17794:35:15;17779:51;;17869:11;;17863:18;17901:15;;;17894:27;;;17982:19;;17751:15;;;18014:24;;;18104:21;;;;18149:4;;18072:2;18060:15;;;18166:225;18182:8;18177:3;18174:17;18166:225;;;18273:15;;18266:23;18259:31;18245:46;;18360:17;;;;18210:1;18201:11;;;;;18317:14;;;;18166:225;;;-1:-1:-1;18477:12:15;;;;18414:5;-1:-1:-1;;;18442:15:15;;;;17612:1;17605:9;17576:923;;18533:187;18698:14;;18691:22;18673:41;;18661:2;18646:18;;18628:92::o;18725:177::-;18871:25;;;18859:2;18844:18;;18826:76::o;18907:274::-;19081:25;;;-1:-1:-1;;;;;19142:32:15;19137:2;19122:18;;19115:60;19069:2;19054:18;;19036:145::o;19186:319::-;19388:25;;;19444:2;19429:18;;19422:34;;;;19487:2;19472:18;;19465:34;19376:2;19361:18;;19343:162::o;19510:326::-;19708:25;;;19764:2;19749:18;;19742:34;;;;19824:4;19812:17;19807:2;19792:18;;19785:45;19696:2;19681:18;;19663:173::o;19841:290::-;;20016:6;20005:9;19998:25;20059:2;20054;20043:9;20039:18;20032:30;20079:46;20121:2;20110:9;20106:18;20098:6;20079:46;:::i;20136:398::-;20363:25;;;20436:4;20424:17;;;;20419:2;20404:18;;20397:45;20473:2;20458:18;;20451:34;20516:2;20501:18;;20494:34;20350:3;20335:19;;20317:217::o;20539:348::-;20741:2;20723:21;;;20780:2;20760:18;;;20753:30;20819:26;20814:2;20799:18;;20792:54;20878:2;20863:18;;20713:174::o;20892:337::-;21094:2;21076:21;;;21133:2;21113:18;;;21106:30;-1:-1:-1;;;21167:2:15;21152:18;;21145:43;21220:2;21205:18;;21066:163::o;21234:398::-;21436:2;21418:21;;;21475:2;21455:18;;;21448:30;21514:34;21509:2;21494:18;;21487:62;-1:-1:-1;;;21580:2:15;21565:18;;21558:32;21622:3;21607:19;;21408:224::o;21637:335::-;21839:2;21821:21;;;21878:2;21858:18;;;21851:30;-1:-1:-1;;;21912:2:15;21897:18;;21890:41;21963:2;21948:18;;21811:161::o;21977:344::-;22179:2;22161:21;;;22218:2;22198:18;;;22191:30;-1:-1:-1;;;22252:2:15;22237:18;;22230:50;22312:2;22297:18;;22151:170::o;22326:335::-;22528:2;22510:21;;;22567:2;22547:18;;;22540:30;-1:-1:-1;;;22601:2:15;22586:18;;22579:41;22652:2;22637:18;;22500:161::o;22666:355::-;22868:2;22850:21;;;22907:2;22887:18;;;22880:30;22946:33;22941:2;22926:18;;22919:61;23012:2;22997:18;;22840:181::o;23026:402::-;23228:2;23210:21;;;23267:2;23247:18;;;23240:30;23306:34;23301:2;23286:18;;23279:62;-1:-1:-1;;;23372:2:15;23357:18;;23350:36;23418:3;23403:19;;23200:228::o;23433:330::-;23635:2;23617:21;;;23674:1;23654:18;;;23647:29;-1:-1:-1;;;23707:2:15;23692:18;;23685:37;23754:2;23739:18;;23607:156::o;23768:335::-;23970:2;23952:21;;;24009:2;23989:18;;;23982:30;-1:-1:-1;;;24043:2:15;24028:18;;24021:41;24094:2;24079:18;;23942:161::o;24108:338::-;24310:2;24292:21;;;24349:2;24329:18;;;24322:30;-1:-1:-1;;;24383:2:15;24368:18;;24361:44;24437:2;24422:18;;24282:164::o;24451:398::-;24653:2;24635:21;;;24692:2;24672:18;;;24665:30;24731:34;24726:2;24711:18;;24704:62;-1:-1:-1;;;24797:2:15;24782:18;;24775:32;24839:3;24824:19;;24625:224::o;24854:337::-;25056:2;25038:21;;;25095:2;25075:18;;;25068:30;-1:-1:-1;;;25129:2:15;25114:18;;25107:43;25182:2;25167:18;;25028:163::o;25196:332::-;25398:2;25380:21;;;25437:1;25417:18;;;25410:29;-1:-1:-1;;;25470:2:15;25455:18;;25448:39;25519:2;25504:18;;25370:158::o;25533:340::-;25735:2;25717:21;;;25774:2;25754:18;;;25747:30;-1:-1:-1;;;25808:2:15;25793:18;;25786:46;25864:2;25849:18;;25707:166::o;25878:410::-;26080:2;26062:21;;;26119:2;26099:18;;;26092:30;26158:34;26153:2;26138:18;;26131:62;-1:-1:-1;;;26224:2:15;26209:18;;26202:44;26278:3;26263:19;;26052:236::o;26293:398::-;26495:2;26477:21;;;26534:2;26514:18;;;26507:30;26573:34;26568:2;26553:18;;26546:62;-1:-1:-1;;;26639:2:15;26624:18;;26617:32;26681:3;26666:19;;26467:224::o;26696:334::-;26898:2;26880:21;;;26937:2;26917:18;;;26910:30;-1:-1:-1;;;26971:2:15;26956:18;;26949:40;27021:2;27006:18;;26870:160::o;27035:356::-;27237:2;27219:21;;;27256:18;;;27249:30;27315:34;27310:2;27295:18;;27288:62;27382:2;27367:18;;27209:182::o;27396:338::-;27598:2;27580:21;;;27637:2;27617:18;;;27610:30;-1:-1:-1;;;27671:2:15;27656:18;;27649:44;27725:2;27710:18;;27570:164::o;27739:345::-;27941:2;27923:21;;;27980:2;27960:18;;;27953:30;-1:-1:-1;;;28014:2:15;27999:18;;27992:51;28075:2;28060:18;;27913:171::o;28089:337::-;28291:2;28273:21;;;28330:2;28310:18;;;28303:30;-1:-1:-1;;;28364:2:15;28349:18;;28342:43;28417:2;28402:18;;28263:163::o;28431:329::-;28633:2;28615:21;;;28672:1;28652:18;;;28645:29;-1:-1:-1;;;28705:2:15;28690:18;;28683:36;28751:2;28736:18;;28605:155::o;28947:248::-;29121:25;;;29177:2;29162:18;;29155:34;29109:2;29094:18;;29076:119::o;29200:533::-;;;29343:11;29330:25;29437:2;29433:7;29422:8;29406:14;29402:29;29398:43;29378:18;29374:68;29364:2;;29459:4;29453;29446:18;29364:2;29489:33;;29541:20;;;-1:-1:-1;;;;;;29573:30:15;;29570:2;;;29619:4;29613;29606:18;29570:2;29655:4;29643:17;;-1:-1:-1;29686:14:15;29682:27;;;29672:38;;29669:2;;;29723:1;29720;29713:12;29738:380;29823:1;29813:12;;29870:1;29860:12;;;29881:2;;29935:4;29927:6;29923:17;29913:27;;29881:2;29988;29980:6;29977:14;29957:18;29954:38;29951:2;;;30034:10;30029:3;30025:20;30022:1;30015:31;30069:4;30066:1;30059:15;30097:4;30094:1;30087:15;30123:236;;-1:-1:-1;;30183:17:15;;30180:2;;;-1:-1:-1;;;30223:33:15;;30279:4;30276:1;30269:15;30309:4;30230:3;30297:17;30180:2;-1:-1:-1;30351:1:15;30340:13;;30170:189::o;30364:127::-;30425:10;30420:3;30416:20;30413:1;30406:31;30456:4;30453:1;30446:15;30480:4;30477:1;30470:15",
  "source": "//SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.0;\n\nimport \"./IEthSign.sol\";\nimport \"./EthSignUtils.sol\";\nimport \"./EthSignCommonFramework.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol\";\n\n// import \"hardhat/console.sol\";\n\n/**\n * @title EthSign 3.0\n * @dev EthSign 3.0 Smart Contract with ERC2771 compliance.\n * Please read this before modifying storage: https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable\n */\ncontract EthSign is IEthSign, EthSignUtils, EthSignCommonFramework {\n    using EnumerableSetUpgradeable for EnumerableSetUpgradeable.AddressSet;\n    using EnumerableSetUpgradeable for EnumerableSetUpgradeable.Bytes32Set;\n\n    struct ECSignature {\n        bytes32 r;\n        bytes32 s;\n        uint8 v;\n    }\n\n    struct Document {\n        uint256 birth;\n        uint256 expiration;\n        uint256 numOfSigners;\n        StorageInfo docStorageInfo;\n        EnumerableSetUpgradeable.AddressSet signersSet;\n        // Note:\n        // SaltedDocument = hash(doc.provider + doc.stroage_id0 + doc.storage_id1)\n        // SaltedMetaDocument = hash(doc.provider + doc.storage_id0 + doc.storage_id1 +\n        //                      meta.provider + meta.storage_id0 + meta.storage_id1)\n        // SaltedAddress = hash(doc.provider + doc.storage_id0 + doc.storage_id1 +\n        //                 meta.provider + meta.storage_id0 + meta.storage_id1 +\n        //                 address)\n        // SaltedAddressWithIndex: hash everything in SaltedAddress + count\n        mapping(bytes32 => StorageInfo) metadataStorageInfoForSaltedDocument;\n        mapping(bytes32 => EnumerableSetUpgradeable.AddressSet) numOfSignedSignersSetForSaltedMetaDocument;\n        mapping(bytes32 => uint256) numOfSignatureFieldsForSaltedAddress;\n        mapping(bytes32 => uint256) numOfSignedSignatureFieldsForSaltedAddress;\n        mapping(bytes32 => ECSignature) signatureFieldForSaltedAddressWithIndex;\n        mapping(bytes32 => StorageInfo) commentsForSaltedAddress;\n        address initiator;\n        bytes32 name;\n    }\n\n    mapping(bytes32 => Document) documents; // documentKey => Document object\n    // DEPRECATED\n    mapping(address => EnumerableSetUpgradeable.Bytes32Set) createdByMe; // address => documentKey\n    mapping(address => EnumerableSetUpgradeable.Bytes32Set) sharedWithMe; // address => documentKey\n    mapping(address => EnumerableSetUpgradeable.Bytes32Set) archived; // address => documentKey\n    // Reserved storage for future use\n    mapping(address => EnumerableSetUpgradeable.Bytes32Set) bytesBucket0;\n    mapping(address => EnumerableSetUpgradeable.Bytes32Set) bytesBucket1;\n    mapping(address => EnumerableSetUpgradeable.Bytes32Set) bytesBucket2;\n    mapping(address => EnumerableSetUpgradeable.AddressSet) addressBucket0;\n    mapping(address => EnumerableSetUpgradeable.AddressSet) addressBucket1;\n    mapping(address => EnumerableSetUpgradeable.AddressSet) addressBucket2;\n\n    // Upgraded Document storage is appended here\n    mapping(bytes32 => DocumentExtended) documentsExtended; // documentKey => DocumentExtended object\n    struct DocumentExtended {\n        mapping(bytes32 => bytes[20]) ecdsaForSaltedAddress;\n        mapping(bytes32 => bool[20]) ecdsaForSaltedAddressHasBeenFilled;\n    }\n\n    // Modifiers\n    modifier addressNonZero(address recipient) {\n        require(recipient != address(0), \"ZERO_SENDER\");\n        _;\n    }\n\n    modifier documentDoesExist(bytes32 documentKey) {\n        require(documents[documentKey].birth != 0, \"DOC_NOT_EXIST\");\n        _;\n    }\n\n    modifier documentDoesNotExist(bytes32 documentKey) {\n        require(documents[documentKey].birth == 0, \"DOC_EXIST\");\n        _;\n    }\n\n    modifier documentHasExpired(bytes32 documentKey) {\n        require(\n            documents[documentKey].expiration < block.number,\n            \"DOC_NOT_EXPIRED\"\n        );\n        _;\n    }\n\n    modifier documentHasNotExpired(bytes32 documentKey) {\n        if (documents[documentKey].expiration != 0) {\n            require(\n                documents[documentKey].expiration >= block.number,\n                \"DOC_EXPIRED\"\n            );\n        }\n        _;\n    }\n\n    modifier onlyDocumentInitiator(bytes32 documentKey) {\n        Document storage doc = documents[documentKey];\n        require(doc.initiator == _msgSender(), \"UNAUTH\");\n        _;\n    }\n\n    modifier onlyAuthorizedSigner(bytes32 documentKey, address signer) {\n        Document storage doc = documents[documentKey];\n        require(doc.signersSet.contains(signer), \"UNAUTH\");\n        _;\n    }\n\n    modifier signersNotFinalizedForDocument(bytes32 documentKey) {\n        Document storage doc = documents[documentKey];\n        require(\n            doc.numOfSigners > doc.signersSet.length(),\n            \"SIGNERS_FINALIZED\"\n        );\n        _;\n    }\n\n    // Utility functions\n    function hashSaltedDocumentMappingKey(bytes32 documentKey)\n        public\n        view\n        override\n        returns (bytes32)\n    {\n        StorageInfo storage doc_si = documents[documentKey].docStorageInfo;\n        return\n            keccak256(\n                abi.encodePacked(\n                    documentKey,\n                    doc_si.provider,\n                    doc_si.storage_id0,\n                    doc_si.storage_id1\n                )\n            );\n    }\n\n    function hashSaltedMetaDocumentMappingKey(bytes32 documentKey)\n        public\n        view\n        override\n        returns (bytes32)\n    {\n        Document storage doc = documents[documentKey];\n        StorageInfo storage doc_si = doc.docStorageInfo;\n        StorageInfo storage meta_si = doc.metadataStorageInfoForSaltedDocument[\n            hashSaltedDocumentMappingKey(documentKey)\n        ];\n        return\n            keccak256(\n                abi.encodePacked(\n                    documentKey,\n                    doc_si.provider,\n                    doc_si.storage_id0,\n                    doc_si.storage_id1,\n                    meta_si.provider,\n                    meta_si.storage_id0,\n                    meta_si.storage_id1\n                )\n            );\n    }\n\n    function hashSaltedAddressMappingKey(bytes32 documentKey, address signer)\n        public\n        view\n        override\n        addressNonZero(signer)\n        returns (bytes32)\n    {\n        Document storage doc = documents[documentKey];\n        StorageInfo storage doc_si = doc.docStorageInfo;\n        StorageInfo storage meta_si = doc.metadataStorageInfoForSaltedDocument[\n            hashSaltedDocumentMappingKey(documentKey)\n        ];\n        return\n            keccak256(\n                abi.encodePacked(\n                    documentKey,\n                    doc_si.provider,\n                    doc_si.storage_id0,\n                    doc_si.storage_id1,\n                    meta_si.provider,\n                    meta_si.storage_id0,\n                    meta_si.storage_id1,\n                    signer\n                )\n            );\n    }\n\n    function _hashSaltedAddressWithIndexMappingKey(\n        bytes32 documentKey,\n        address signer,\n        uint256 index\n    ) internal view override addressNonZero(signer) returns (bytes32) {\n        Document storage doc = documents[documentKey];\n        StorageInfo storage doc_si = doc.docStorageInfo;\n        StorageInfo storage meta_si = doc.metadataStorageInfoForSaltedDocument[\n            hashSaltedDocumentMappingKey(documentKey)\n        ];\n        return\n            keccak256(\n                abi.encodePacked(\n                    documentKey,\n                    doc_si.provider,\n                    doc_si.storage_id0,\n                    doc_si.storage_id1,\n                    meta_si.provider,\n                    meta_si.storage_id0,\n                    meta_si.storage_id1,\n                    signer,\n                    index\n                )\n            );\n    }\n\n    function hashSaltedAddressWithIndexMappingKeyAsSigner(\n        bytes32 documentKey,\n        uint256 index\n    ) public view override returns (bytes32) {\n        Document storage doc = documents[documentKey];\n        StorageInfo storage doc_si = doc.docStorageInfo;\n        StorageInfo storage meta_si = doc.metadataStorageInfoForSaltedDocument[\n            hashSaltedDocumentMappingKey(documentKey)\n        ];\n        return\n            keccak256(\n                abi.encodePacked(\n                    documentKey,\n                    doc_si.provider,\n                    doc_si.storage_id0,\n                    doc_si.storage_id1,\n                    meta_si.provider,\n                    meta_si.storage_id0,\n                    meta_si.storage_id1,\n                    _msgSender(),\n                    index\n                )\n            );\n    }\n\n    // Getters (view functions)\n    function getDocumentBasicInfo(bytes32 documentKey)\n        external\n        view\n        override\n        documentDoesExist(documentKey)\n        returns (\n            address initiator,\n            bytes32 name,\n            uint256 birth,\n            uint256 expiration,\n            uint256 numOfSigners\n        )\n    {\n        Document storage doc = documents[documentKey];\n        initiator = doc.initiator;\n        name = doc.name;\n        birth = doc.birth;\n        expiration = doc.expiration;\n        numOfSigners = doc.signersSet.length();\n    }\n\n    function getDocumentDocStorageInfo(bytes32 documentKey)\n        external\n        view\n        override\n        documentDoesExist(documentKey)\n        returns (\n            bytes32 docStorageProvider,\n            bytes32 docStorage_id0,\n            bytes32 docStorage_id1\n        )\n    {\n        StorageInfo storage doc_si = documents[documentKey].docStorageInfo;\n        docStorageProvider = doc_si.provider;\n        docStorage_id0 = doc_si.storage_id0;\n        docStorage_id1 = doc_si.storage_id1;\n    }\n\n    function getDocumentMetaStorageInfo(bytes32 documentKey)\n        external\n        view\n        override\n        documentDoesExist(documentKey)\n        returns (\n            bytes32 metaStorageProvider,\n            bytes32 metaStorage_id0,\n            bytes32 metaStorage_id1\n        )\n    {\n        bytes32 saltedDocumentMappingKey = hashSaltedDocumentMappingKey(\n            documentKey\n        );\n        StorageInfo storage meta_si = documents[documentKey]\n            .metadataStorageInfoForSaltedDocument[saltedDocumentMappingKey];\n        metaStorageProvider = meta_si.provider;\n        metaStorage_id0 = meta_si.storage_id0;\n        metaStorage_id1 = meta_si.storage_id1;\n    }\n\n    function getNumberOfSignersForDocument(bytes32 documentKey)\n        external\n        view\n        override\n        documentDoesExist(documentKey)\n        returns (uint256 count)\n    {\n        return documents[documentKey].signersSet.length();\n    }\n\n    function getDocumentSignerAtIndex(bytes32 documentKey, uint256 index)\n        external\n        view\n        override\n        documentDoesExist(documentKey)\n        returns (address signer)\n    {\n        signer = documents[documentKey].signersSet.at(index);\n    }\n\n    function getNumberOfDocumentECDSAForSigner(\n        address signer,\n        bytes32 documentKey\n    ) internal view documentDoesExist(documentKey) returns (uint256 count) {\n        bytes32 saltedAddressMappingKey = hashSaltedAddressMappingKey(\n            documentKey,\n            signer\n        );\n        return\n            documents[documentKey].numOfSignatureFieldsForSaltedAddress[\n                saltedAddressMappingKey\n            ];\n    }\n\n    function getDocumentRSVForLegacySigner(address signer, bytes32 documentKey)\n        external\n        view\n        override\n        returns (\n            bytes32[] memory,\n            bytes32[] memory,\n            uint8[] memory\n        )\n    {\n        Document storage doc = documents[documentKey];\n        uint256 numberOfSignatures = getNumberOfDocumentECDSAForSigner(\n            signer,\n            documentKey\n        );\n        bytes32[] memory r_ret = new bytes32[](numberOfSignatures);\n        bytes32[] memory s_ret = new bytes32[](numberOfSignatures);\n        uint8[] memory v_ret = new uint8[](numberOfSignatures);\n        for (uint256 i = 0; i < numberOfSignatures; ++i) {\n            ECSignature storage ecs = doc\n                .signatureFieldForSaltedAddressWithIndex[\n                    _hashSaltedAddressWithIndexMappingKey(\n                        documentKey,\n                        signer,\n                        i\n                    )\n                ];\n            r_ret[i] = ecs.r;\n            s_ret[i] = ecs.s;\n            v_ret[i] = ecs.v;\n        }\n        return (r_ret, s_ret, v_ret);\n    }\n\n    function getDocumentECDSAForSigner(address signer, bytes32 documentKey)\n        external\n        view\n        override\n        returns (bytes[20] memory signatures)\n    {\n        return\n            documentsExtended[documentKey].ecdsaForSaltedAddress[\n                hashSaltedAddressMappingKey(documentKey, signer)\n            ];\n    }\n\n    function getDocumentCommentsForSigner(address signer, bytes32 documentKey)\n        external\n        view\n        override\n        documentDoesExist(documentKey)\n        returns (\n            bytes32 provider,\n            bytes32 storage_id0,\n            bytes32 storage_id1\n        )\n    {\n        Document storage doc = documents[documentKey];\n        bytes32 saltedAddressMappingKey = hashSaltedAddressMappingKey(\n            documentKey,\n            signer\n        );\n        StorageInfo storage si = doc.commentsForSaltedAddress[\n            saltedAddressMappingKey\n        ];\n        return (si.provider, si.storage_id0, si.storage_id1);\n    }\n\n    function getDocumentStatus(bytes32 documentKey)\n        external\n        view\n        override\n        documentDoesExist(documentKey)\n        returns (uint256 totalSigners, uint256 signedSigners)\n    {\n        Document storage doc = documents[documentKey];\n        bytes32 saltedMetaDocumentMappingKey = hashSaltedMetaDocumentMappingKey(\n            documentKey\n        );\n        totalSigners = doc.signersSet.length();\n        signedSigners = doc\n            .numOfSignedSignersSetForSaltedMetaDocument[\n                saltedMetaDocumentMappingKey\n            ]\n            .length();\n    }\n\n    function aggregateGetIsSignedForAllSignatureFields(bytes32 documentKey)\n        external\n        view\n        override\n        documentDoesExist(documentKey)\n        returns (_HelperSignerSignatureFieldStatus[] memory fieldSignedInfo)\n    {\n        Document storage doc = documents[documentKey];\n        EnumerableSetUpgradeable.AddressSet storage signersSet = doc.signersSet;\n        uint256 numOfSigners = signersSet.length();\n        fieldSignedInfo = new _HelperSignerSignatureFieldStatus[](numOfSigners);\n        for (uint256 i = 0; i < numOfSigners; ++i) {\n            address signer = signersSet.at(i);\n            bytes32 saltedAddressMappingKey = hashSaltedAddressMappingKey(\n                documentKey,\n                signer\n            );\n            uint256 numOfSignatureFieldsForSigner = doc\n                .numOfSignatureFieldsForSaltedAddress[saltedAddressMappingKey];\n            bool[] memory nestedElement = new bool[](\n                numOfSignatureFieldsForSigner\n            );\n            for (uint256 j = 0; j < numOfSignatureFieldsForSigner; ++j) {\n                bytes32 saltedAddressWithIndexMappingKey = _hashSaltedAddressWithIndexMappingKey(\n                        documentKey,\n                        signer,\n                        j\n                    );\n                ECSignature storage ecs = doc\n                    .signatureFieldForSaltedAddressWithIndex[\n                        saltedAddressWithIndexMappingKey\n                    ];\n                bool fieldSigned = !(ecs.r == 0x0 &&\n                    ecs.s == 0x0 &&\n                    ecs.v == 0);\n                nestedElement[j] = fieldSigned;\n            }\n            fieldSignedInfo[i].signer = signer;\n            fieldSignedInfo[i].fieldSigned = nestedElement;\n        }\n    }\n\n    function aggregateGetAllCommentsOfAllSigners(bytes32 documentKey)\n        external\n        view\n        override\n        documentDoesExist(documentKey)\n        returns (_HelperCommentInfo[] memory hci)\n    {\n        Document storage doc = documents[documentKey];\n        EnumerableSetUpgradeable.AddressSet storage signersSet = doc.signersSet;\n        uint256 numOfSigners = signersSet.length();\n        hci = new _HelperCommentInfo[](numOfSigners);\n        for (uint256 i = 0; i < numOfSigners; ++i) {\n            address signer = signersSet.at(i);\n            bytes32 saltedAddressMappingKey = hashSaltedAddressMappingKey(\n                documentKey,\n                signer\n            );\n            hci[i].signer = signer;\n            hci[i].commentStorageInfo = doc.commentsForSaltedAddress[\n                saltedAddressMappingKey\n            ];\n        }\n    }\n\n    // Setters\n    function _newBasicDocument(\n        bytes32 documentKey,\n        bytes32 name,\n        uint256 expiration,\n        uint256 numOfSigners\n    ) internal {\n        Document storage doc = documents[documentKey];\n        doc.name = name;\n        doc.birth = block.number;\n        doc.expiration = expiration;\n        doc.initiator = _msgSender();\n        doc.numOfSigners = numOfSigners;\n        emit LogNewDocument(\n            doc.initiator,\n            documentKey,\n            doc.name,\n            doc.numOfSigners,\n            expiration\n        );\n    }\n\n    function _addSignerForDocument(bytes32 documentKey, address signer)\n        internal\n    {\n        Document storage doc = documents[documentKey];\n        doc.signersSet.add(signer);\n        emit LogAddedNewSignerForDocument(signer, documentKey);\n    }\n\n    function _setDocStorageForDocument(\n        bytes32 documentKey,\n        bytes32 provider,\n        bytes32 storage_id0,\n        bytes32 storage_id1\n    ) internal {\n        Document storage doc = documents[documentKey];\n        StorageInfo storage doc_si = doc.docStorageInfo;\n        doc_si.provider = provider;\n        doc_si.storage_id0 = storage_id0;\n        doc_si.storage_id1 = storage_id1;\n        emit LogChangedDocumentStorage(\n            documentKey,\n            provider,\n            storage_id0,\n            storage_id1\n        );\n    }\n\n    function _setMetaStorageForDocument(\n        bytes32 documentKey,\n        bytes32 provider,\n        bytes32 storage_id0,\n        bytes32 storage_id1\n    ) internal {\n        Document storage doc = documents[documentKey];\n        StorageInfo storage meta_si = doc.metadataStorageInfoForSaltedDocument[\n            hashSaltedDocumentMappingKey(documentKey)\n        ];\n        meta_si.provider = provider;\n        meta_si.storage_id0 = storage_id0;\n        meta_si.storage_id1 = storage_id1;\n        emit LogChangedMetadataStorage(\n            documentKey,\n            provider,\n            storage_id0,\n            storage_id1\n        );\n    }\n\n    function _setNumberOfSignatureFieldsAsInitiatorForSignerForDocument(\n        bytes32 documentKey,\n        address signer,\n        uint256 number\n    ) internal {\n        Document storage doc = documents[documentKey];\n        bytes32 saltedAddressMappingKey = hashSaltedAddressMappingKey(\n            documentKey,\n            signer\n        );\n        require(\n            doc.numOfSignatureFieldsForSaltedAddress[saltedAddressMappingKey] ==\n                0,\n            \"NUM_SIG_EXISTS\"\n        );\n        doc.numOfSignatureFieldsForSaltedAddress[\n            saltedAddressMappingKey\n        ] = number;\n        emit LogSetNumberOfSignatureFields(documentKey, signer, number);\n    }\n\n    // Returns true if the signer is not replacing an existing signature\n    function _setSignatureFieldAtIndexForSignerForDocument(\n        bytes32 documentKey,\n        address signer,\n        uint256 index,\n        bytes calldata signature\n    ) internal {\n        Document storage doc = documents[documentKey];\n        bytes32 saltedAddressMappingKey = hashSaltedAddressMappingKey(\n            documentKey,\n            signer\n        );\n        require(\n            doc.numOfSigners == doc.signersSet.length(),\n            \"SIGNERS_NOT_FINALIZED\"\n        );\n        require(\n            index <\n                doc.numOfSignatureFieldsForSaltedAddress[\n                    saltedAddressMappingKey\n                ],\n            \"OUT_OF_BOUNDS\"\n        );\n        require(\n            verifyECSignatureSigner(\n                signer,\n                _hashSaltedAddressWithIndexMappingKey(\n                    documentKey,\n                    signer,\n                    index\n                ),\n                signature\n            ),\n            \"INVALID_SIGNER\"\n        );\n        documentsExtended[documentKey].ecdsaForSaltedAddress[\n            saltedAddressMappingKey\n        ][index] = signature;\n        emit LogSignedDocumentSignatureField(documentKey, signer, index);\n        if (\n            !documentsExtended[documentKey].ecdsaForSaltedAddressHasBeenFilled[\n                saltedAddressMappingKey\n            ][index]\n        ) {\n            documentsExtended[documentKey].ecdsaForSaltedAddressHasBeenFilled[\n                saltedAddressMappingKey\n            ][index] = true;\n            ++doc.numOfSignedSignatureFieldsForSaltedAddress[\n                saltedAddressMappingKey\n            ];\n            if (\n                doc.numOfSignedSignatureFieldsForSaltedAddress[\n                    saltedAddressMappingKey\n                ] ==\n                doc.numOfSignatureFieldsForSaltedAddress[\n                    saltedAddressMappingKey\n                ]\n            ) {\n                doc\n                    .numOfSignedSignersSetForSaltedMetaDocument[\n                        hashSaltedMetaDocumentMappingKey(documentKey)\n                    ]\n                    .add(signer);\n                emit LogSignedDocument(documentKey, signer);\n            }\n        }\n    }\n\n    function setDocumentCommentsAsSigner(\n        bytes32 documentKey,\n        bytes32 provider,\n        bytes32 storage_id0,\n        bytes32 storage_id1\n    )\n        external\n        override\n        whenNotPaused\n        documentDoesExist(documentKey)\n        documentHasNotExpired(documentKey)\n        onlyAuthorizedSigner(documentKey, _msgSender())\n    {\n        _setDocumentCommentsAsSigner(\n            documentKey,\n            0x0,\n            provider,\n            storage_id0,\n            storage_id1\n        );\n    }\n\n    function clearDocumentCommentsAsInitiator(bytes32 documentKey)\n        external\n        override\n        whenNotPaused\n        documentDoesExist(documentKey)\n        documentHasNotExpired(documentKey)\n        onlyDocumentInitiator(documentKey)\n    {\n        Document storage doc = documents[documentKey];\n        uint256 numberOfSigners = doc.signersSet.length();\n        for (uint256 i = 0; i < numberOfSigners; ++i) {\n            _setDocumentCommentsAsSigner(\n                documentKey,\n                hashSaltedAddressMappingKey(documentKey, doc.signersSet.at(i)),\n                0x0,\n                0x0,\n                0x0\n            );\n        }\n    }\n\n    function _setDocumentCommentsAsSigner(\n        bytes32 documentKey,\n        bytes32 saltedAddressMappingKey,\n        bytes32 provider,\n        bytes32 storage_id0,\n        bytes32 storage_id1\n    ) internal {\n        Document storage doc = documents[documentKey];\n        bytes32 _saltedAddressMappingKey = saltedAddressMappingKey;\n        if (_saltedAddressMappingKey == 0x0)\n            _saltedAddressMappingKey = hashSaltedAddressMappingKey(\n                documentKey,\n                _msgSender()\n            );\n        StorageInfo storage si = doc.commentsForSaltedAddress[\n            _saltedAddressMappingKey\n        ];\n        if (si.provider == 0) {\n            emit LogLeftNewCommentOnDocument(\n                _msgSender(),\n                documentKey,\n                provider,\n                storage_id0,\n                storage_id1\n            );\n        } else {\n            emit LogEditedCommentOnDocument(\n                _msgSender(),\n                documentKey,\n                provider,\n                storage_id0,\n                storage_id1\n            );\n        }\n        si.provider = provider;\n        si.storage_id0 = storage_id0;\n        si.storage_id1 = storage_id1;\n    }\n\n    function _archiveDocument(bytes32 documentKey)\n        internal\n        whenNotPaused\n        documentDoesExist(documentKey)\n    {\n        emit LogArchivedDocument(_msgSender(), documentKey);\n    }\n\n    function archiveDocuments(bytes32[] calldata documentKeys)\n        external\n        override\n    {\n        for (uint256 i = 0; i < documentKeys.length; ++i) {\n            _archiveDocument(documentKeys[i]);\n        }\n    }\n\n    // Functions for call aggregation\n    function aggregateNewBasicDocumentAndSetStorage(\n        bytes32 documentKey,\n        bytes32 name,\n        uint256 expiration,\n        uint256 numOfSigners,\n        bytes32[3] calldata providers,\n        bytes32[6] calldata storage_ids,\n        address[] calldata signers,\n        uint256[] calldata numOfSigFields\n    ) external override whenNotPaused documentDoesNotExist(documentKey) {\n        require(signers.length == numOfSigFields.length, \"BAD_ARRAYS\");\n        _newBasicDocument(documentKey, name, expiration, numOfSigners);\n        _setDocStorageForDocument(\n            documentKey,\n            providers[0],\n            storage_ids[0],\n            storage_ids[1]\n        );\n        _setMetaStorageForDocument(\n            documentKey,\n            providers[1],\n            storage_ids[2],\n            storage_ids[3]\n        );\n        if (providers[2] == 0x0) return;\n        _setDocumentCommentsAsSigner(\n            documentKey,\n            0x0,\n            providers[2],\n            storage_ids[4],\n            storage_ids[5]\n        );\n        for (uint256 i = 0; i < signers.length; ++i) {\n            _addSignerForDocument(documentKey, signers[i]);\n            _setNumberOfSignatureFieldsAsInitiatorForSignerForDocument(\n                documentKey,\n                signers[i],\n                numOfSigFields[i]\n            );\n        }\n    }\n\n    function aggregateSetSigFieldForDocument(\n        bytes32 documentKey,\n        address signer,\n        uint256[] calldata indices,\n        bytes[] calldata signatures\n    )\n        external\n        override\n        whenNotPaused\n        documentDoesExist(documentKey)\n        documentHasNotExpired(documentKey)\n        onlyAuthorizedSigner(documentKey, signer)\n    {\n        for (uint256 i = 0; i < signatures.length; ++i) {\n            _setSignatureFieldAtIndexForSignerForDocument(\n                documentKey,\n                signer,\n                indices[i],\n                signatures[i]\n            );\n        }\n    }\n\n    function aggregateSetSigFieldsAndCommentsAsSigner(\n        bytes32 documentKey,\n        uint256[] calldata indices,\n        bytes[] calldata signatures,\n        bytes32[3] calldata storageInfo\n    )\n        external\n        override\n        whenNotPaused\n        documentDoesExist(documentKey)\n        documentHasNotExpired(documentKey)\n        onlyAuthorizedSigner(documentKey, _msgSender())\n    {\n        require(indices.length == signatures.length, \"SIZE_MISMATCH\");\n        for (uint256 i = 0; i < indices.length; ++i) {\n            _setSignatureFieldAtIndexForSignerForDocument(\n                documentKey,\n                _msgSender(),\n                indices[i],\n                signatures[i]\n            );\n        }\n        _setDocumentCommentsAsSigner(\n            documentKey,\n            0x0,\n            storageInfo[0],\n            storageInfo[1],\n            storageInfo[2]\n        );\n    }\n\n    // Functions for relays\n    function changeInitiator(\n        bytes32 documentKey,\n        address newInitiator,\n        bytes calldata signature\n    )\n        external\n        override\n        whenNotPaused\n        documentDoesExist(documentKey)\n        documentHasNotExpired(documentKey)\n    {\n        Document storage doc = documents[documentKey];\n        require(doc.signersSet.length() == 0, \"NOT_NEW_DOC\");\n        require(\n            verifyECSignatureSigner(\n                doc.initiator,\n                keccak256(abi.encode(documentKey, newInitiator)),\n                signature\n            ),\n            \"BAD_SIG\"\n        );\n        doc.initiator = newInitiator;\n        emit LogChangedInitiator(newInitiator, documentKey);\n    }\n}\n",
  "sourcePath": "/Users/boyuanxu/Documents/GitHub/EthSign-3.0-Smart-Contract/contracts/EthSign.sol",
  "ast": {
    "absolutePath": "project:/contracts/EthSign.sol",
    "exportedSymbols": {
      "AddressUpgradeable": [
        647
      ],
      "ContextUpgradeable": [
        692
      ],
      "ECDSAUpgradeable": [
        836
      ],
      "ERC2771ContextUpgradeable": [
        244
      ],
      "EnumerableSetUpgradeable": [
        1408
      ],
      "EthSign": [
        3561
      ],
      "EthSignCommonFramework": [
        3700
      ],
      "EthSignUtils": [
        3945
      ],
      "IERC1271Upgradeable": [
        144
      ],
      "IEthSign": [
        4286
      ],
      "Initializable": [
        290
      ],
      "OwnableUpgradeable": [
        130
      ],
      "PausableUpgradeable": [
        403
      ],
      "SignatureCheckerUpgradeable": [
        895
      ]
    },
    "id": 3562,
    "license": "UNLICENSED",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1410,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "38:23:10"
      },
      {
        "absolutePath": "project:/contracts/IEthSign.sol",
        "file": "./IEthSign.sol",
        "id": 1411,
        "nodeType": "ImportDirective",
        "scope": 3562,
        "sourceUnit": 4287,
        "src": "63:24:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/EthSignUtils.sol",
        "file": "./EthSignUtils.sol",
        "id": 1412,
        "nodeType": "ImportDirective",
        "scope": 3562,
        "sourceUnit": 3946,
        "src": "88:28:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/EthSignCommonFramework.sol",
        "file": "./EthSignCommonFramework.sol",
        "id": 1413,
        "nodeType": "ImportDirective",
        "scope": 3562,
        "sourceUnit": 3701,
        "src": "117:38:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol",
        "id": 1414,
        "nodeType": "ImportDirective",
        "scope": 3562,
        "sourceUnit": 1409,
        "src": "156:88:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 1416,
              "name": "IEthSign",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4286,
              "src": "507:8:10"
            },
            "id": 1417,
            "nodeType": "InheritanceSpecifier",
            "src": "507:8:10"
          },
          {
            "baseName": {
              "id": 1418,
              "name": "EthSignUtils",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 3945,
              "src": "517:12:10"
            },
            "id": 1419,
            "nodeType": "InheritanceSpecifier",
            "src": "517:12:10"
          },
          {
            "baseName": {
              "id": 1420,
              "name": "EthSignCommonFramework",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 3700,
              "src": "531:22:10"
            },
            "id": 1421,
            "nodeType": "InheritanceSpecifier",
            "src": "531:22:10"
          }
        ],
        "contractDependencies": [
          130,
          244,
          290,
          403,
          692,
          3700,
          3945,
          4286
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 1415,
          "nodeType": "StructuredDocumentation",
          "src": "280:206:10",
          "text": " @title EthSign 3.0\n @dev EthSign 3.0 Smart Contract with ERC2771 compliance.\n Please read this before modifying storage: https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable"
        },
        "fullyImplemented": true,
        "id": 3561,
        "linearizedBaseContracts": [
          3561,
          3700,
          244,
          403,
          130,
          692,
          290,
          3945,
          4286
        ],
        "name": "EthSign",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1425,
            "libraryName": {
              "id": 1422,
              "name": "EnumerableSetUpgradeable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 1408,
              "src": "566:24:10"
            },
            "nodeType": "UsingForDirective",
            "src": "560:71:10",
            "typeName": {
              "id": 1424,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 1423,
                "name": "EnumerableSetUpgradeable.AddressSet",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 1181,
                "src": "595:35:10"
              },
              "referencedDeclaration": 1181,
              "src": "595:35:10",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                "typeString": "struct EnumerableSetUpgradeable.AddressSet"
              }
            }
          },
          {
            "id": 1429,
            "libraryName": {
              "id": 1426,
              "name": "EnumerableSetUpgradeable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 1408,
              "src": "642:24:10"
            },
            "nodeType": "UsingForDirective",
            "src": "636:71:10",
            "typeName": {
              "id": 1428,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 1427,
                "name": "EnumerableSetUpgradeable.Bytes32Set",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 1090,
                "src": "671:35:10"
              },
              "referencedDeclaration": 1090,
              "src": "671:35:10",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
              }
            }
          },
          {
            "canonicalName": "EthSign.ECSignature",
            "id": 1436,
            "members": [
              {
                "constant": false,
                "id": 1431,
                "mutability": "mutable",
                "name": "r",
                "nodeType": "VariableDeclaration",
                "scope": 1436,
                "src": "742:9:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1430,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "742:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1433,
                "mutability": "mutable",
                "name": "s",
                "nodeType": "VariableDeclaration",
                "scope": 1436,
                "src": "761:9:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1432,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "761:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1435,
                "mutability": "mutable",
                "name": "v",
                "nodeType": "VariableDeclaration",
                "scope": 1436,
                "src": "780:7:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 1434,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "780:5:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "ECSignature",
            "nodeType": "StructDefinition",
            "scope": 3561,
            "src": "713:81:10",
            "visibility": "public"
          },
          {
            "canonicalName": "EthSign.Document",
            "id": 1481,
            "members": [
              {
                "constant": false,
                "id": 1438,
                "mutability": "mutable",
                "name": "birth",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "826:13:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1437,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "826:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1440,
                "mutability": "mutable",
                "name": "expiration",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "849:18:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1439,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "849:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1442,
                "mutability": "mutable",
                "name": "numOfSigners",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "877:20:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1441,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "877:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1445,
                "mutability": "mutable",
                "name": "docStorageInfo",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "907:26:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                  "typeString": "struct IEthSign.StorageInfo"
                },
                "typeName": {
                  "id": 1444,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 1443,
                    "name": "StorageInfo",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3955,
                    "src": "907:11:10"
                  },
                  "referencedDeclaration": 3955,
                  "src": "907:11:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                    "typeString": "struct IEthSign.StorageInfo"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1448,
                "mutability": "mutable",
                "name": "signersSet",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "943:46:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                },
                "typeName": {
                  "id": 1447,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 1446,
                    "name": "EnumerableSetUpgradeable.AddressSet",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1181,
                    "src": "943:35:10"
                  },
                  "referencedDeclaration": 1181,
                  "src": "943:35:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                    "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1453,
                "mutability": "mutable",
                "name": "metadataStorageInfoForSaltedDocument",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1548:68:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                  "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo)"
                },
                "typeName": {
                  "id": 1452,
                  "keyType": {
                    "id": 1449,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1556:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1548:31:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                    "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo)"
                  },
                  "valueType": {
                    "id": 1451,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 1450,
                      "name": "StorageInfo",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3955,
                      "src": "1567:11:10"
                    },
                    "referencedDeclaration": 3955,
                    "src": "1567:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                      "typeString": "struct IEthSign.StorageInfo"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1458,
                "mutability": "mutable",
                "name": "numOfSignedSignersSetForSaltedMetaDocument",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1626:98:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$1181_storage_$",
                  "typeString": "mapping(bytes32 => struct EnumerableSetUpgradeable.AddressSet)"
                },
                "typeName": {
                  "id": 1457,
                  "keyType": {
                    "id": 1454,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1634:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1626:55:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$1181_storage_$",
                    "typeString": "mapping(bytes32 => struct EnumerableSetUpgradeable.AddressSet)"
                  },
                  "valueType": {
                    "id": 1456,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 1455,
                      "name": "EnumerableSetUpgradeable.AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1181,
                      "src": "1645:35:10"
                    },
                    "referencedDeclaration": 1181,
                    "src": "1645:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                      "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1462,
                "mutability": "mutable",
                "name": "numOfSignatureFieldsForSaltedAddress",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1734:64:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 1461,
                  "keyType": {
                    "id": 1459,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1742:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1734:27:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 1460,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1753:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1466,
                "mutability": "mutable",
                "name": "numOfSignedSignatureFieldsForSaltedAddress",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1808:70:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 1465,
                  "keyType": {
                    "id": 1463,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1816:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1808:27:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 1464,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1827:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1471,
                "mutability": "mutable",
                "name": "signatureFieldForSaltedAddressWithIndex",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1888:71:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ECSignature_$1436_storage_$",
                  "typeString": "mapping(bytes32 => struct EthSign.ECSignature)"
                },
                "typeName": {
                  "id": 1470,
                  "keyType": {
                    "id": 1467,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1896:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1888:31:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ECSignature_$1436_storage_$",
                    "typeString": "mapping(bytes32 => struct EthSign.ECSignature)"
                  },
                  "valueType": {
                    "id": 1469,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 1468,
                      "name": "ECSignature",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1436,
                      "src": "1907:11:10"
                    },
                    "referencedDeclaration": 1436,
                    "src": "1907:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                      "typeString": "struct EthSign.ECSignature"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1476,
                "mutability": "mutable",
                "name": "commentsForSaltedAddress",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1969:56:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                  "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo)"
                },
                "typeName": {
                  "id": 1475,
                  "keyType": {
                    "id": 1472,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1977:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1969:31:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                    "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo)"
                  },
                  "valueType": {
                    "id": 1474,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 1473,
                      "name": "StorageInfo",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3955,
                      "src": "1988:11:10"
                    },
                    "referencedDeclaration": 3955,
                    "src": "1988:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                      "typeString": "struct IEthSign.StorageInfo"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1478,
                "mutability": "mutable",
                "name": "initiator",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "2035:17:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1477,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2035:7:10",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1480,
                "mutability": "mutable",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "2062:12:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1479,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "2062:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Document",
            "nodeType": "StructDefinition",
            "scope": 3561,
            "src": "800:1281:10",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1486,
            "mutability": "mutable",
            "name": "documents",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2087:38:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
              "typeString": "mapping(bytes32 => struct EthSign.Document)"
            },
            "typeName": {
              "id": 1485,
              "keyType": {
                "id": 1482,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "2095:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "2087:28:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                "typeString": "mapping(bytes32 => struct EthSign.Document)"
              },
              "valueType": {
                "id": 1484,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1483,
                  "name": "Document",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1481,
                  "src": "2106:8:10"
                },
                "referencedDeclaration": 1481,
                "src": "2106:8:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                  "typeString": "struct EthSign.Document"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1491,
            "mutability": "mutable",
            "name": "createdByMe",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2183:67:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1490,
              "keyType": {
                "id": 1487,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2191:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2183:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1489,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1488,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2202:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2202:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1496,
            "mutability": "mutable",
            "name": "sharedWithMe",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2282:68:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1495,
              "keyType": {
                "id": 1492,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2290:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2282:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1494,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1493,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2301:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2301:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1501,
            "mutability": "mutable",
            "name": "archived",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2382:64:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1500,
              "keyType": {
                "id": 1497,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2390:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2382:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1499,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1498,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2401:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2401:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1506,
            "mutability": "mutable",
            "name": "bytesBucket0",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2517:68:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1505,
              "keyType": {
                "id": 1502,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2525:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2517:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1504,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1503,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2536:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2536:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1511,
            "mutability": "mutable",
            "name": "bytesBucket1",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2591:68:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1510,
              "keyType": {
                "id": 1507,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2599:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2591:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1509,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1508,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2610:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2610:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1516,
            "mutability": "mutable",
            "name": "bytesBucket2",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2665:68:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1515,
              "keyType": {
                "id": 1512,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2673:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2665:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1514,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1513,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2684:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2684:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1521,
            "mutability": "mutable",
            "name": "addressBucket0",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2739:70:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
            },
            "typeName": {
              "id": 1520,
              "keyType": {
                "id": 1517,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2747:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2739:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
              },
              "valueType": {
                "id": 1519,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1518,
                  "name": "EnumerableSetUpgradeable.AddressSet",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1181,
                  "src": "2758:35:10"
                },
                "referencedDeclaration": 1181,
                "src": "2758:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1526,
            "mutability": "mutable",
            "name": "addressBucket1",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2815:70:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
            },
            "typeName": {
              "id": 1525,
              "keyType": {
                "id": 1522,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2823:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2815:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
              },
              "valueType": {
                "id": 1524,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1523,
                  "name": "EnumerableSetUpgradeable.AddressSet",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1181,
                  "src": "2834:35:10"
                },
                "referencedDeclaration": 1181,
                "src": "2834:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1531,
            "mutability": "mutable",
            "name": "addressBucket2",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2891:70:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
            },
            "typeName": {
              "id": 1530,
              "keyType": {
                "id": 1527,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2899:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2891:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
              },
              "valueType": {
                "id": 1529,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1528,
                  "name": "EnumerableSetUpgradeable.AddressSet",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1181,
                  "src": "2910:35:10"
                },
                "referencedDeclaration": 1181,
                "src": "2910:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1536,
            "mutability": "mutable",
            "name": "documentsExtended",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "3018:54:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
              "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended)"
            },
            "typeName": {
              "id": 1535,
              "keyType": {
                "id": 1532,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "3026:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "3018:36:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
                "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended)"
              },
              "valueType": {
                "id": 1534,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1533,
                  "name": "DocumentExtended",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1549,
                  "src": "3037:16:10"
                },
                "referencedDeclaration": 1549,
                "src": "3037:16:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_DocumentExtended_$1549_storage_ptr",
                  "typeString": "struct EthSign.DocumentExtended"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "canonicalName": "EthSign.DocumentExtended",
            "id": 1549,
            "members": [
              {
                "constant": false,
                "id": 1542,
                "mutability": "mutable",
                "name": "ecdsaForSaltedAddress",
                "nodeType": "VariableDeclaration",
                "scope": 1549,
                "src": "3154:51:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bytes_storage_$20_storage_$",
                  "typeString": "mapping(bytes32 => bytes[20])"
                },
                "typeName": {
                  "id": 1541,
                  "keyType": {
                    "id": 1537,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3162:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "3154:29:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bytes_storage_$20_storage_$",
                    "typeString": "mapping(bytes32 => bytes[20])"
                  },
                  "valueType": {
                    "baseType": {
                      "id": 1538,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "3173:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 1540,
                    "length": {
                      "hexValue": "3230",
                      "id": 1539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3179:2:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_20_by_1",
                        "typeString": "int_const 20"
                      },
                      "value": "20"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3173:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$20_storage_ptr",
                      "typeString": "bytes[20]"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1548,
                "mutability": "mutable",
                "name": "ecdsaForSaltedAddressHasBeenFilled",
                "nodeType": "VariableDeclaration",
                "scope": 1549,
                "src": "3215:63:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$20_storage_$",
                  "typeString": "mapping(bytes32 => bool[20])"
                },
                "typeName": {
                  "id": 1547,
                  "keyType": {
                    "id": 1543,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3223:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "3215:28:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$20_storage_$",
                    "typeString": "mapping(bytes32 => bool[20])"
                  },
                  "valueType": {
                    "baseType": {
                      "id": 1544,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "3234:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 1546,
                    "length": {
                      "hexValue": "3230",
                      "id": 1545,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3239:2:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_20_by_1",
                        "typeString": "int_const 20"
                      },
                      "value": "20"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3234:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$20_storage_ptr",
                      "typeString": "bool[20]"
                    }
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "DocumentExtended",
            "nodeType": "StructDefinition",
            "scope": 3561,
            "src": "3120:165:10",
            "visibility": "public"
          },
          {
            "body": {
              "id": 1564,
              "nodeType": "Block",
              "src": "3351:75:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1554,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1551,
                          "src": "3369:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 1557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3390:1:10",
                              "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": 1556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3382:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1555,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3382:7:10",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3382:10:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3369:23:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5a45524f5f53454e444552",
                        "id": 1560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3394:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0ecc5c4c83787e5ead386b554f1d80ee86ec5c3e55181722bfaca454dd8d8b73",
                          "typeString": "literal_string \"ZERO_SENDER\""
                        },
                        "value": "ZERO_SENDER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0ecc5c4c83787e5ead386b554f1d80ee86ec5c3e55181722bfaca454dd8d8b73",
                          "typeString": "literal_string \"ZERO_SENDER\""
                        }
                      ],
                      "id": 1553,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3361:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3361:47:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1562,
                  "nodeType": "ExpressionStatement",
                  "src": "3361:47:10"
                },
                {
                  "id": 1563,
                  "nodeType": "PlaceholderStatement",
                  "src": "3418:1:10"
                }
              ]
            },
            "id": 1565,
            "name": "addressNonZero",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1551,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 1565,
                  "src": "3332:17:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1550,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3332:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3331:19:10"
            },
            "src": "3308:118:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1580,
              "nodeType": "Block",
              "src": "3480:87:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 1570,
                              "name": "documents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "3498:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                              }
                            },
                            "id": 1572,
                            "indexExpression": {
                              "id": 1571,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1567,
                              "src": "3508:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3498:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage",
                              "typeString": "struct EthSign.Document storage ref"
                            }
                          },
                          "id": 1573,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "birth",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1438,
                          "src": "3498:28:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 1574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3530:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3498:33:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "444f435f4e4f545f4558495354",
                        "id": 1576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3533:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_58ffa454849853d091744346ffbcdc75f8772d29d1fee2d8e96e697a94adf3a1",
                          "typeString": "literal_string \"DOC_NOT_EXIST\""
                        },
                        "value": "DOC_NOT_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_58ffa454849853d091744346ffbcdc75f8772d29d1fee2d8e96e697a94adf3a1",
                          "typeString": "literal_string \"DOC_NOT_EXIST\""
                        }
                      ],
                      "id": 1569,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3490:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3490:59:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1578,
                  "nodeType": "ExpressionStatement",
                  "src": "3490:59:10"
                },
                {
                  "id": 1579,
                  "nodeType": "PlaceholderStatement",
                  "src": "3559:1:10"
                }
              ]
            },
            "id": 1581,
            "name": "documentDoesExist",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1567,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1581,
                  "src": "3459:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1566,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3459:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3458:21:10"
            },
            "src": "3432:135:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1596,
              "nodeType": "Block",
              "src": "3624:83:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 1586,
                              "name": "documents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "3642:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                              }
                            },
                            "id": 1588,
                            "indexExpression": {
                              "id": 1587,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1583,
                              "src": "3652:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3642:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage",
                              "typeString": "struct EthSign.Document storage ref"
                            }
                          },
                          "id": 1589,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "birth",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1438,
                          "src": "3642:28:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 1590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3674:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3642:33:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "444f435f4558495354",
                        "id": 1592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3677:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_652d71e7cfa99a2fd999f81f04982f86741a9e17b41f3b591be88a9047e420b1",
                          "typeString": "literal_string \"DOC_EXIST\""
                        },
                        "value": "DOC_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_652d71e7cfa99a2fd999f81f04982f86741a9e17b41f3b591be88a9047e420b1",
                          "typeString": "literal_string \"DOC_EXIST\""
                        }
                      ],
                      "id": 1585,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3634:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3634:55:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1594,
                  "nodeType": "ExpressionStatement",
                  "src": "3634:55:10"
                },
                {
                  "id": 1595,
                  "nodeType": "PlaceholderStatement",
                  "src": "3699:1:10"
                }
              ]
            },
            "id": 1597,
            "name": "documentDoesNotExist",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1583,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1597,
                  "src": "3603:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1582,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3603:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3602:21:10"
            },
            "src": "3573:134:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1613,
              "nodeType": "Block",
              "src": "3762:138:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 1602,
                              "name": "documents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "3793:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                              }
                            },
                            "id": 1604,
                            "indexExpression": {
                              "id": 1603,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1599,
                              "src": "3803:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3793:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage",
                              "typeString": "struct EthSign.Document storage ref"
                            }
                          },
                          "id": 1605,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "expiration",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1440,
                          "src": "3793:33:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 1606,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967292,
                            "src": "3829:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "src": "3829:12:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3793:48:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "444f435f4e4f545f45585049524544",
                        "id": 1609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3855:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cdd32c12456cada896eea407c0da2cd9beb9161535284ce31a4af7fd29c171eb",
                          "typeString": "literal_string \"DOC_NOT_EXPIRED\""
                        },
                        "value": "DOC_NOT_EXPIRED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cdd32c12456cada896eea407c0da2cd9beb9161535284ce31a4af7fd29c171eb",
                          "typeString": "literal_string \"DOC_NOT_EXPIRED\""
                        }
                      ],
                      "id": 1601,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3772:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3772:110:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1611,
                  "nodeType": "ExpressionStatement",
                  "src": "3772:110:10"
                },
                {
                  "id": 1612,
                  "nodeType": "PlaceholderStatement",
                  "src": "3892:1:10"
                }
              ]
            },
            "id": 1614,
            "name": "documentHasExpired",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1599,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1614,
                  "src": "3741:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1598,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3741:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3740:21:10"
            },
            "src": "3713:187:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1638,
              "nodeType": "Block",
              "src": "3958:215:10",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1618,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "3972:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                            "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                          }
                        },
                        "id": 1620,
                        "indexExpression": {
                          "id": 1619,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1616,
                          "src": "3982:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3972:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage",
                          "typeString": "struct EthSign.Document storage ref"
                        }
                      },
                      "id": 1621,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expiration",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1440,
                      "src": "3972:33:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1622,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4009:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3972:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1636,
                  "nodeType": "IfStatement",
                  "src": "3968:188:10",
                  "trueBody": {
                    "id": 1635,
                    "nodeType": "Block",
                    "src": "4012:144:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 1625,
                                    "name": "documents",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1486,
                                    "src": "4051:9:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                                      "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                                    }
                                  },
                                  "id": 1627,
                                  "indexExpression": {
                                    "id": 1626,
                                    "name": "documentKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1616,
                                    "src": "4061:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4051:22:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Document_$1481_storage",
                                    "typeString": "struct EthSign.Document storage ref"
                                  }
                                },
                                "id": 1628,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "expiration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1440,
                                "src": "4051:33:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 1629,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967292,
                                  "src": "4088:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1630,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "src": "4088:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4051:49:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "444f435f45585049524544",
                              "id": 1632,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4118:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_493e5ade42c32a124e93282ff005992938018b2d72f8b454c7acd4deaf376d78",
                                "typeString": "literal_string \"DOC_EXPIRED\""
                              },
                              "value": "DOC_EXPIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_493e5ade42c32a124e93282ff005992938018b2d72f8b454c7acd4deaf376d78",
                                "typeString": "literal_string \"DOC_EXPIRED\""
                              }
                            ],
                            "id": 1624,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "4026:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4026:119:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1634,
                        "nodeType": "ExpressionStatement",
                        "src": "4026:119:10"
                      }
                    ]
                  }
                },
                {
                  "id": 1637,
                  "nodeType": "PlaceholderStatement",
                  "src": "4165:1:10"
                }
              ]
            },
            "id": 1639,
            "name": "documentHasNotExpired",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1617,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1616,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1639,
                  "src": "3937:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1615,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3937:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3936:21:10"
            },
            "src": "3906:267:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1660,
              "nodeType": "Block",
              "src": "4231:131:10",
              "statements": [
                {
                  "assignments": [
                    1645
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1645,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1660,
                      "src": "4241:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1644,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1643,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "4241:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "4241:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1649,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1646,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "4264:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1648,
                    "indexExpression": {
                      "id": 1647,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1641,
                      "src": "4274:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4264:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4241:45:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 1651,
                            "name": "doc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1645,
                            "src": "4304:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                              "typeString": "struct EthSign.Document storage pointer"
                            }
                          },
                          "id": 1652,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "initiator",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1478,
                          "src": "4304:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1653,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3587
                            ],
                            "referencedDeclaration": 3587,
                            "src": "4321:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 1654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4321:12:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4304:29:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "554e41555448",
                        "id": 1656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4335:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ce0ba59a655f51dc843a115da8488d87ac5d8d03f36cc45b85be6fc2d3e3be36",
                          "typeString": "literal_string \"UNAUTH\""
                        },
                        "value": "UNAUTH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ce0ba59a655f51dc843a115da8488d87ac5d8d03f36cc45b85be6fc2d3e3be36",
                          "typeString": "literal_string \"UNAUTH\""
                        }
                      ],
                      "id": 1650,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4296:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4296:48:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1658,
                  "nodeType": "ExpressionStatement",
                  "src": "4296:48:10"
                },
                {
                  "id": 1659,
                  "nodeType": "PlaceholderStatement",
                  "src": "4354:1:10"
                }
              ]
            },
            "id": 1661,
            "name": "onlyDocumentInitiator",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1642,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1641,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1661,
                  "src": "4210:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1640,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4210:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4209:21:10"
            },
            "src": "4179:183:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1684,
              "nodeType": "Block",
              "src": "4435:133:10",
              "statements": [
                {
                  "assignments": [
                    1669
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1669,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1684,
                      "src": "4445:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1668,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1667,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "4445:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "4445:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1673,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1670,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "4468:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1672,
                    "indexExpression": {
                      "id": 1671,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1663,
                      "src": "4478:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4468:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4445:45:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1678,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1665,
                            "src": "4532:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "expression": {
                              "id": 1675,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1669,
                              "src": "4508:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 1676,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "signersSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1448,
                            "src": "4508:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                              "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                            }
                          },
                          "id": 1677,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "contains",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1262,
                          "src": "4508:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                            "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,address) view returns (bool)"
                          }
                        },
                        "id": 1679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4508:31:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "554e41555448",
                        "id": 1680,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4541:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ce0ba59a655f51dc843a115da8488d87ac5d8d03f36cc45b85be6fc2d3e3be36",
                          "typeString": "literal_string \"UNAUTH\""
                        },
                        "value": "UNAUTH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ce0ba59a655f51dc843a115da8488d87ac5d8d03f36cc45b85be6fc2d3e3be36",
                          "typeString": "literal_string \"UNAUTH\""
                        }
                      ],
                      "id": 1674,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4500:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1681,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4500:50:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1682,
                  "nodeType": "ExpressionStatement",
                  "src": "4500:50:10"
                },
                {
                  "id": 1683,
                  "nodeType": "PlaceholderStatement",
                  "src": "4560:1:10"
                }
              ]
            },
            "id": 1685,
            "name": "onlyAuthorizedSigner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1663,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1685,
                  "src": "4398:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4398:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1665,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1685,
                  "src": "4419:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1664,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4419:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4397:37:10"
            },
            "src": "4368:200:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1708,
              "nodeType": "Block",
              "src": "4635:189:10",
              "statements": [
                {
                  "assignments": [
                    1691
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1691,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1708,
                      "src": "4645:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1690,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1689,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "4645:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "4645:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1695,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1692,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "4668:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1694,
                    "indexExpression": {
                      "id": 1693,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1687,
                      "src": "4678:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4668:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4645:45:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 1697,
                            "name": "doc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1691,
                            "src": "4721:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                              "typeString": "struct EthSign.Document storage pointer"
                            }
                          },
                          "id": 1698,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numOfSigners",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1442,
                          "src": "4721:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 1699,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1691,
                                "src": "4740:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 1700,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "signersSet",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1448,
                              "src": "4740:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                                "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                              }
                            },
                            "id": 1701,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1277,
                            "src": "4740:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                              "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 1702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4740:23:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4721:42:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5349474e4552535f46494e414c495a4544",
                        "id": 1704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4777:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1732f68876d3924a40eaed0b17bd26185019a310d5ccc97c7308cae254d63c58",
                          "typeString": "literal_string \"SIGNERS_FINALIZED\""
                        },
                        "value": "SIGNERS_FINALIZED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1732f68876d3924a40eaed0b17bd26185019a310d5ccc97c7308cae254d63c58",
                          "typeString": "literal_string \"SIGNERS_FINALIZED\""
                        }
                      ],
                      "id": 1696,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4700:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4700:106:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1706,
                  "nodeType": "ExpressionStatement",
                  "src": "4700:106:10"
                },
                {
                  "id": 1707,
                  "nodeType": "PlaceholderStatement",
                  "src": "4816:1:10"
                }
              ]
            },
            "id": 1709,
            "name": "signersNotFinalizedForDocument",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1688,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1687,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1709,
                  "src": "4614:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1686,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4614:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4613:21:10"
            },
            "src": "4574:250:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              3904
            ],
            "body": {
              "id": 1738,
              "nodeType": "Block",
              "src": "4989:337:10",
              "statements": [
                {
                  "assignments": [
                    1719
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1719,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1738,
                      "src": "4999:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1718,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1717,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "4999:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "4999:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1724,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "id": 1720,
                        "name": "documents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1486,
                        "src": "5028:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                          "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                        }
                      },
                      "id": 1722,
                      "indexExpression": {
                        "id": 1721,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1711,
                        "src": "5038:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5028:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage",
                        "typeString": "struct EthSign.Document storage ref"
                      }
                    },
                    "id": 1723,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "5028:37:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4999:66:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1728,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1711,
                            "src": "5159:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1729,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1719,
                              "src": "5192:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1730,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "5192:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1731,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1719,
                              "src": "5229:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1732,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "5229:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1733,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1719,
                              "src": "5269:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1734,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "5269:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 1726,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "5121:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "5121:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5121:184:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1725,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "5094:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5094:225:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1716,
                  "id": 1737,
                  "nodeType": "Return",
                  "src": "5075:244:10"
                }
              ]
            },
            "functionSelector": "c054203f",
            "id": 1739,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hashSaltedDocumentMappingKey",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1713,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4950:8:10"
            },
            "parameters": {
              "id": 1712,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1711,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1739,
                  "src": "4893:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1710,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4893:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4892:21:10"
            },
            "returnParameters": {
              "id": 1716,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1715,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1739,
                  "src": "4976:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1714,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4976:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4975:9:10"
            },
            "scope": 3561,
            "src": "4855:471:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3912
            ],
            "body": {
              "id": 1789,
              "nodeType": "Block",
              "src": "5470:638:10",
              "statements": [
                {
                  "assignments": [
                    1749
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1749,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1789,
                      "src": "5480:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1748,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1747,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "5480:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "5480:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1753,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1750,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "5503:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1752,
                    "indexExpression": {
                      "id": 1751,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1741,
                      "src": "5513:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5503:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5480:45:10"
                },
                {
                  "assignments": [
                    1756
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1756,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1789,
                      "src": "5535:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1755,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1754,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "5535:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "5535:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1759,
                  "initialValue": {
                    "expression": {
                      "id": 1757,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1749,
                      "src": "5564:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 1758,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "5564:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5535:47:10"
                },
                {
                  "assignments": [
                    1762
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1762,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1789,
                      "src": "5592:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1761,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1760,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "5592:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "5592:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1769,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 1763,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1749,
                        "src": "5622:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1764,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "5622:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 1768,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 1766,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1741,
                          "src": "5705:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 1765,
                        "name": "hashSaltedDocumentMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1739
                        ],
                        "referencedDeclaration": 1739,
                        "src": "5676:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 1767,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5676:41:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5622:105:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5592:135:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1773,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1741,
                            "src": "5821:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1774,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1756,
                              "src": "5854:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1775,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "5854:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1776,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1756,
                              "src": "5891:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1777,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "5891:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1778,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1756,
                              "src": "5931:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1779,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "5931:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1780,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "5971:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1781,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "5971:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1782,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "6009:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1783,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "6009:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1784,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "6050:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1785,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "6050:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 1771,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "5783:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "5783:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5783:304:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1770,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "5756:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1787,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5756:345:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1746,
                  "id": 1788,
                  "nodeType": "Return",
                  "src": "5737:364:10"
                }
              ]
            },
            "functionSelector": "a2293119",
            "id": 1790,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hashSaltedMetaDocumentMappingKey",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1743,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5431:8:10"
            },
            "parameters": {
              "id": 1742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1741,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1790,
                  "src": "5374:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1740,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5374:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5373:21:10"
            },
            "returnParameters": {
              "id": 1746,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1745,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1790,
                  "src": "5457:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1744,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5457:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5456:9:10"
            },
            "scope": 3561,
            "src": "5332:776:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3922
            ],
            "body": {
              "id": 1846,
              "nodeType": "Block",
              "src": "6294:666:10",
              "statements": [
                {
                  "assignments": [
                    1805
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1805,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1846,
                      "src": "6304:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1804,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1803,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "6304:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "6304:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1809,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1806,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "6327:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1808,
                    "indexExpression": {
                      "id": 1807,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1792,
                      "src": "6337:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6327:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6304:45:10"
                },
                {
                  "assignments": [
                    1812
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1812,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1846,
                      "src": "6359:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1811,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1810,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "6359:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "6359:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1815,
                  "initialValue": {
                    "expression": {
                      "id": 1813,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1805,
                      "src": "6388:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 1814,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "6388:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6359:47:10"
                },
                {
                  "assignments": [
                    1818
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1818,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1846,
                      "src": "6416:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1817,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1816,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "6416:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "6416:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1825,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 1819,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1805,
                        "src": "6446:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1820,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "6446:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 1824,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 1822,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1792,
                          "src": "6529:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 1821,
                        "name": "hashSaltedDocumentMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1739
                        ],
                        "referencedDeclaration": 1739,
                        "src": "6500:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 1823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6500:41:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6446:105:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6416:135:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1829,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1792,
                            "src": "6645:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1830,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1812,
                              "src": "6678:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1831,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "6678:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1832,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1812,
                              "src": "6715:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1833,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "6715:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1834,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1812,
                              "src": "6755:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1835,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "6755:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1836,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1818,
                              "src": "6795:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1837,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "6795:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1838,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1818,
                              "src": "6833:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1839,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "6833:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1840,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1818,
                              "src": "6874:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1841,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "6874:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 1842,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1794,
                            "src": "6915:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1827,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "6607:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "6607:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1843,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6607:332:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1826,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "6580:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6580:373:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1802,
                  "id": 1845,
                  "nodeType": "Return",
                  "src": "6561:392:10"
                }
              ]
            },
            "functionSelector": "ae1680c3",
            "id": 1847,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 1798,
                    "name": "signer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1794,
                    "src": "6256:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 1799,
                "modifierName": {
                  "id": 1797,
                  "name": "addressNonZero",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1565,
                  "src": "6241:14:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "6241:22:10"
              }
            ],
            "name": "hashSaltedAddressMappingKey",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1796,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6224:8:10"
            },
            "parameters": {
              "id": 1795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1792,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1847,
                  "src": "6151:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1791,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6151:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1794,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1847,
                  "src": "6172:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1793,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6172:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6150:37:10"
            },
            "returnParameters": {
              "id": 1802,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1801,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1847,
                  "src": "6281:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1800,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6281:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6280:9:10"
            },
            "scope": 3561,
            "src": "6114:846:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3934
            ],
            "body": {
              "id": 1906,
              "nodeType": "Block",
              "src": "7159:693:10",
              "statements": [
                {
                  "assignments": [
                    1864
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1864,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1906,
                      "src": "7169:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1863,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1862,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "7169:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "7169:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1868,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1865,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "7192:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1867,
                    "indexExpression": {
                      "id": 1866,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1849,
                      "src": "7202:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7192:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7169:45:10"
                },
                {
                  "assignments": [
                    1871
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1871,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1906,
                      "src": "7224:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1870,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1869,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "7224:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "7224:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1874,
                  "initialValue": {
                    "expression": {
                      "id": 1872,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1864,
                      "src": "7253:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 1873,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "7253:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7224:47:10"
                },
                {
                  "assignments": [
                    1877
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1877,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1906,
                      "src": "7281:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1876,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1875,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "7281:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "7281:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1884,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 1878,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1864,
                        "src": "7311:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1879,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "7311:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 1883,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 1881,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1849,
                          "src": "7394:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 1880,
                        "name": "hashSaltedDocumentMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1739
                        ],
                        "referencedDeclaration": 1739,
                        "src": "7365:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 1882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7365:41:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7311:105:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7281:135:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1888,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1849,
                            "src": "7510:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1889,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1871,
                              "src": "7543:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1890,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "7543:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1891,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1871,
                              "src": "7580:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1892,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "7580:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1893,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1871,
                              "src": "7620:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1894,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "7620:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1895,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1877,
                              "src": "7660:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1896,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "7660:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1897,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1877,
                              "src": "7698:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1898,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "7698:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1899,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1877,
                              "src": "7739:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1900,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "7739:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 1901,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1851,
                            "src": "7780:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1902,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1853,
                            "src": "7808:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 1886,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "7472:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "7472:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1903,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7472:359:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1885,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "7445:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7445:400:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1861,
                  "id": 1905,
                  "nodeType": "Return",
                  "src": "7426:419:10"
                }
              ]
            },
            "id": 1907,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 1857,
                    "name": "signer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1851,
                    "src": "7133:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 1858,
                "modifierName": {
                  "id": 1856,
                  "name": "addressNonZero",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1565,
                  "src": "7118:14:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "7118:22:10"
              }
            ],
            "name": "_hashSaltedAddressWithIndexMappingKey",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1855,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7109:8:10"
            },
            "parameters": {
              "id": 1854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1849,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1907,
                  "src": "7022:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1848,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7022:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1851,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1907,
                  "src": "7051:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1850,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7051:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1853,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1907,
                  "src": "7075:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1852,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7075:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7012:82:10"
            },
            "returnParameters": {
              "id": 1861,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1860,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1907,
                  "src": "7150:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1859,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7150:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7149:9:10"
            },
            "scope": 3561,
            "src": "6966:886:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              3944
            ],
            "body": {
              "id": 1962,
              "nodeType": "Block",
              "src": "8009:699:10",
              "statements": [
                {
                  "assignments": [
                    1919
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1919,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1962,
                      "src": "8019:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1918,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1917,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "8019:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "8019:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1923,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1920,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "8042:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1922,
                    "indexExpression": {
                      "id": 1921,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1909,
                      "src": "8052:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8042:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8019:45:10"
                },
                {
                  "assignments": [
                    1926
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1926,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1962,
                      "src": "8074:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1925,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1924,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "8074:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "8074:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1929,
                  "initialValue": {
                    "expression": {
                      "id": 1927,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1919,
                      "src": "8103:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 1928,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "8103:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8074:47:10"
                },
                {
                  "assignments": [
                    1932
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1932,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1962,
                      "src": "8131:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1931,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1930,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "8131:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "8131:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1939,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 1933,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1919,
                        "src": "8161:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1934,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "8161:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 1938,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 1936,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1909,
                          "src": "8244:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 1935,
                        "name": "hashSaltedDocumentMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1739
                        ],
                        "referencedDeclaration": 1739,
                        "src": "8215:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 1937,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8215:41:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8161:105:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8131:135:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1943,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1909,
                            "src": "8360:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1944,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1926,
                              "src": "8393:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1945,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "8393:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1946,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1926,
                              "src": "8430:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1947,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "8430:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1948,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1926,
                              "src": "8470:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1949,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "8470:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1950,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1932,
                              "src": "8510:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1951,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "8510:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1952,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1932,
                              "src": "8548:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1953,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "8548:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1954,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1932,
                              "src": "8589:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1955,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "8589:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 1956,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3587
                              ],
                              "referencedDeclaration": 3587,
                              "src": "8630:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 1957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8630:12:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1958,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1911,
                            "src": "8664:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 1941,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "8322:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "8322:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8322:365:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1940,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "8295:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8295:406:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1916,
                  "id": 1961,
                  "nodeType": "Return",
                  "src": "8276:425:10"
                }
              ]
            },
            "functionSelector": "77cb7637",
            "id": 1963,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hashSaltedAddressWithIndexMappingKeyAsSigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1913,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7982:8:10"
            },
            "parameters": {
              "id": 1912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1909,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1963,
                  "src": "7921:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1908,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7921:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1911,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1963,
                  "src": "7950:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1910,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7950:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7911:58:10"
            },
            "returnParameters": {
              "id": 1916,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1915,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1963,
                  "src": "8000:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1914,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8000:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7999:9:10"
            },
            "scope": 3561,
            "src": "7858:850:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3983
            ],
            "body": {
              "id": 2016,
              "nodeType": "Block",
              "src": "9064:234:10",
              "statements": [
                {
                  "assignments": [
                    1984
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1984,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2016,
                      "src": "9074:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1983,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1982,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "9074:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "9074:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1988,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1985,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "9097:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1987,
                    "indexExpression": {
                      "id": 1986,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1965,
                      "src": "9107:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9097:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9074:45:10"
                },
                {
                  "expression": {
                    "id": 1992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1989,
                      "name": "initiator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1972,
                      "src": "9129:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 1990,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1984,
                        "src": "9141:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1991,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initiator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1478,
                      "src": "9141:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9129:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1993,
                  "nodeType": "ExpressionStatement",
                  "src": "9129:25:10"
                },
                {
                  "expression": {
                    "id": 1997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1994,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1974,
                      "src": "9164:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 1995,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1984,
                        "src": "9171:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1996,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1480,
                      "src": "9171:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "9164:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1998,
                  "nodeType": "ExpressionStatement",
                  "src": "9164:15:10"
                },
                {
                  "expression": {
                    "id": 2002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1999,
                      "name": "birth",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1976,
                      "src": "9189:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2000,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1984,
                        "src": "9197:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2001,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "birth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1438,
                      "src": "9197:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9189:17:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2003,
                  "nodeType": "ExpressionStatement",
                  "src": "9189:17:10"
                },
                {
                  "expression": {
                    "id": 2007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2004,
                      "name": "expiration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1978,
                      "src": "9216:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2005,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1984,
                        "src": "9229:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2006,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expiration",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1440,
                      "src": "9229:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9216:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2008,
                  "nodeType": "ExpressionStatement",
                  "src": "9216:27:10"
                },
                {
                  "expression": {
                    "id": 2014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2009,
                      "name": "numOfSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1980,
                      "src": "9253:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "expression": {
                            "id": 2010,
                            "name": "doc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1984,
                            "src": "9268:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                              "typeString": "struct EthSign.Document storage pointer"
                            }
                          },
                          "id": 2011,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "signersSet",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1448,
                          "src": "9268:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                            "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                          }
                        },
                        "id": 2012,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1277,
                        "src": "9268:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                          "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 2013,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9268:23:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9253:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2015,
                  "nodeType": "ExpressionStatement",
                  "src": "9253:38:10"
                }
              ]
            },
            "functionSelector": "921e45b8",
            "id": 2017,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 1969,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1965,
                    "src": "8870:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1970,
                "modifierName": {
                  "id": 1968,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "8852:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "8852:30:10"
              }
            ],
            "name": "getDocumentBasicInfo",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1967,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8835:8:10"
            },
            "parameters": {
              "id": 1966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1965,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "8776:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1964,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8776:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8775:21:10"
            },
            "returnParameters": {
              "id": 1981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1972,
                  "mutability": "mutable",
                  "name": "initiator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "8913:17:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1971,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8913:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1974,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "8944:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1973,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8944:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1976,
                  "mutability": "mutable",
                  "name": "birth",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "8970:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1975,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8970:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1978,
                  "mutability": "mutable",
                  "name": "expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "8997:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1977,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8997:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1980,
                  "mutability": "mutable",
                  "name": "numOfSigners",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "9029:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1979,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9029:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8899:160:10"
            },
            "scope": 3561,
            "src": "8746:552:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3995
            ],
            "body": {
              "id": 2055,
              "nodeType": "Block",
              "src": "9589:219:10",
              "statements": [
                {
                  "assignments": [
                    2034
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2034,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 2055,
                      "src": "9599:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 2033,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2032,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "9599:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "9599:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2039,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "id": 2035,
                        "name": "documents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1486,
                        "src": "9628:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                          "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                        }
                      },
                      "id": 2037,
                      "indexExpression": {
                        "id": 2036,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "9638:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9628:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage",
                        "typeString": "struct EthSign.Document storage ref"
                      }
                    },
                    "id": 2038,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "9628:37:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9599:66:10"
                },
                {
                  "expression": {
                    "id": 2043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2040,
                      "name": "docStorageProvider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2026,
                      "src": "9675:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2041,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2034,
                        "src": "9696:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2042,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "9696:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "9675:36:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2044,
                  "nodeType": "ExpressionStatement",
                  "src": "9675:36:10"
                },
                {
                  "expression": {
                    "id": 2048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2045,
                      "name": "docStorage_id0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2028,
                      "src": "9721:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2046,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2034,
                        "src": "9738:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2047,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "storage_id0",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3952,
                      "src": "9738:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "9721:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2049,
                  "nodeType": "ExpressionStatement",
                  "src": "9721:35:10"
                },
                {
                  "expression": {
                    "id": 2053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2050,
                      "name": "docStorage_id1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2030,
                      "src": "9766:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2051,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2034,
                        "src": "9783:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2052,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "storage_id1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3954,
                      "src": "9783:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "9766:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2054,
                  "nodeType": "ExpressionStatement",
                  "src": "9766:35:10"
                }
              ]
            },
            "functionSelector": "5a3bb0e5",
            "id": 2056,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2023,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2019,
                    "src": "9433:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2024,
                "modifierName": {
                  "id": 2022,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "9415:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "9415:30:10"
              }
            ],
            "name": "getDocumentDocStorageInfo",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2021,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9398:8:10"
            },
            "parameters": {
              "id": 2020,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2019,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2056,
                  "src": "9339:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2018,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9339:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9338:21:10"
            },
            "returnParameters": {
              "id": 2031,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2026,
                  "mutability": "mutable",
                  "name": "docStorageProvider",
                  "nodeType": "VariableDeclaration",
                  "scope": 2056,
                  "src": "9476:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2025,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9476:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2028,
                  "mutability": "mutable",
                  "name": "docStorage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2056,
                  "src": "9516:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2027,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9516:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2030,
                  "mutability": "mutable",
                  "name": "docStorage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2056,
                  "src": "9552:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2029,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9552:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9462:122:10"
            },
            "scope": 3561,
            "src": "9304:504:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4007
            ],
            "body": {
              "id": 2102,
              "nodeType": "Block",
              "src": "10103:395:10",
              "statements": [
                {
                  "assignments": [
                    2072
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2072,
                      "mutability": "mutable",
                      "name": "saltedDocumentMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 2102,
                      "src": "10113:32:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2071,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10113:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2076,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2074,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2058,
                        "src": "10190:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2073,
                      "name": "hashSaltedDocumentMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1739
                      ],
                      "referencedDeclaration": 1739,
                      "src": "10148:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 2075,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10148:63:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10113:98:10"
                },
                {
                  "assignments": [
                    2079
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2079,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 2102,
                      "src": "10221:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 2078,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2077,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "10221:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "10221:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2086,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 2080,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "10251:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                            "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                          }
                        },
                        "id": 2082,
                        "indexExpression": {
                          "id": 2081,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2058,
                          "src": "10261:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "10251:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage",
                          "typeString": "struct EthSign.Document storage ref"
                        }
                      },
                      "id": 2083,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "10251:72:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 2085,
                    "indexExpression": {
                      "id": 2084,
                      "name": "saltedDocumentMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2072,
                      "src": "10324:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10251:98:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10221:128:10"
                },
                {
                  "expression": {
                    "id": 2090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2087,
                      "name": "metaStorageProvider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2065,
                      "src": "10359:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2088,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2079,
                        "src": "10381:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2089,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "10381:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "10359:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2091,
                  "nodeType": "ExpressionStatement",
                  "src": "10359:38:10"
                },
                {
                  "expression": {
                    "id": 2095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2092,
                      "name": "metaStorage_id0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2067,
                      "src": "10407:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2093,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2079,
                        "src": "10425:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2094,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "storage_id0",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3952,
                      "src": "10425:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "10407:37:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2096,
                  "nodeType": "ExpressionStatement",
                  "src": "10407:37:10"
                },
                {
                  "expression": {
                    "id": 2100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2097,
                      "name": "metaStorage_id1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2069,
                      "src": "10454:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2098,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2079,
                        "src": "10472:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2099,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "storage_id1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3954,
                      "src": "10472:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "10454:37:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2101,
                  "nodeType": "ExpressionStatement",
                  "src": "10454:37:10"
                }
              ]
            },
            "functionSelector": "49f3741f",
            "id": 2103,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2062,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2058,
                    "src": "9944:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2063,
                "modifierName": {
                  "id": 2061,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "9926:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "9926:30:10"
              }
            ],
            "name": "getDocumentMetaStorageInfo",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2060,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9909:8:10"
            },
            "parameters": {
              "id": 2059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2058,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2103,
                  "src": "9850:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2057,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9850:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9849:21:10"
            },
            "returnParameters": {
              "id": 2070,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2065,
                  "mutability": "mutable",
                  "name": "metaStorageProvider",
                  "nodeType": "VariableDeclaration",
                  "scope": 2103,
                  "src": "9987:27:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2064,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9987:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2067,
                  "mutability": "mutable",
                  "name": "metaStorage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2103,
                  "src": "10028:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2066,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10028:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2069,
                  "mutability": "mutable",
                  "name": "metaStorage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2103,
                  "src": "10065:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2068,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10065:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9973:125:10"
            },
            "scope": 3561,
            "src": "9814:684:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4015
            ],
            "body": {
              "id": 2121,
              "nodeType": "Block",
              "src": "10686:66:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "expression": {
                          "baseExpression": {
                            "id": 2114,
                            "name": "documents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1486,
                            "src": "10703:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                              "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                            }
                          },
                          "id": 2116,
                          "indexExpression": {
                            "id": 2115,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2105,
                            "src": "10713:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10703:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage",
                            "typeString": "struct EthSign.Document storage ref"
                          }
                        },
                        "id": 2117,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signersSet",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1448,
                        "src": "10703:33:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                        }
                      },
                      "id": 2118,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1277,
                      "src": "10703:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                        "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 2119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10703:42:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2113,
                  "id": 2120,
                  "nodeType": "Return",
                  "src": "10696:49:10"
                }
              ]
            },
            "functionSelector": "28614ec7",
            "id": 2122,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2109,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2105,
                    "src": "10637:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2110,
                "modifierName": {
                  "id": 2108,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "10619:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "10619:30:10"
              }
            ],
            "name": "getNumberOfSignersForDocument",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2107,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10602:8:10"
            },
            "parameters": {
              "id": 2106,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2105,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "10543:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2104,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10543:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10542:21:10"
            },
            "returnParameters": {
              "id": 2113,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2112,
                  "mutability": "mutable",
                  "name": "count",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "10667:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2111,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10667:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10666:15:10"
            },
            "scope": 3561,
            "src": "10504:248:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4025
            ],
            "body": {
              "id": 2145,
              "nodeType": "Block",
              "src": "10951:69:10",
              "statements": [
                {
                  "expression": {
                    "id": 2143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2135,
                      "name": "signer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2133,
                      "src": "10961:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2141,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2126,
                          "src": "11007:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "expression": {
                            "baseExpression": {
                              "id": 2136,
                              "name": "documents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "10970:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                              }
                            },
                            "id": 2138,
                            "indexExpression": {
                              "id": 2137,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2124,
                              "src": "10980:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10970:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage",
                              "typeString": "struct EthSign.Document storage ref"
                            }
                          },
                          "id": 2139,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "signersSet",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1448,
                          "src": "10970:33:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                            "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                          }
                        },
                        "id": 2140,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "at",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1304,
                        "src": "10970:36:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                          "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"
                        }
                      },
                      "id": 2142,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10970:43:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10961:52:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2144,
                  "nodeType": "ExpressionStatement",
                  "src": "10961:52:10"
                }
              ]
            },
            "functionSelector": "2608c8e9",
            "id": 2146,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2130,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2124,
                    "src": "10901:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2131,
                "modifierName": {
                  "id": 2129,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "10883:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "10883:30:10"
              }
            ],
            "name": "getDocumentSignerAtIndex",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2128,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10866:8:10"
            },
            "parameters": {
              "id": 2127,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2124,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2146,
                  "src": "10792:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2123,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10792:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2126,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 2146,
                  "src": "10813:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2125,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10813:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10791:36:10"
            },
            "returnParameters": {
              "id": 2134,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2133,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2146,
                  "src": "10931:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2132,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10931:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10930:16:10"
            },
            "scope": 3561,
            "src": "10758:262:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2172,
              "nodeType": "Block",
              "src": "11197:276:10",
              "statements": [
                {
                  "assignments": [
                    2159
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2159,
                      "mutability": "mutable",
                      "name": "saltedAddressMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 2172,
                      "src": "11207:31:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2158,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11207:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2164,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2161,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2150,
                        "src": "11282:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2162,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2148,
                        "src": "11307:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2160,
                      "name": "hashSaltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1847
                      ],
                      "referencedDeclaration": 1847,
                      "src": "11241:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,address) view returns (bytes32)"
                      }
                    },
                    "id": 2163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11241:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11207:116:10"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 2165,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "11352:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                            "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                          }
                        },
                        "id": 2167,
                        "indexExpression": {
                          "id": 2166,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2150,
                          "src": "11362:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11352:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage",
                          "typeString": "struct EthSign.Document storage ref"
                        }
                      },
                      "id": 2168,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfSignatureFieldsForSaltedAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1462,
                      "src": "11352:59:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 2170,
                    "indexExpression": {
                      "id": 2169,
                      "name": "saltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2159,
                      "src": "11429:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11352:114:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2157,
                  "id": 2171,
                  "nodeType": "Return",
                  "src": "11333:133:10"
                }
              ]
            },
            "id": 2173,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2153,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2150,
                    "src": "11160:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2154,
                "modifierName": {
                  "id": 2152,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "11142:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "11142:30:10"
              }
            ],
            "name": "getNumberOfDocumentECDSAForSigner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2148,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2173,
                  "src": "11078:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2147,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11078:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2150,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2173,
                  "src": "11102:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2149,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11102:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11068:59:10"
            },
            "returnParameters": {
              "id": 2157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2156,
                  "mutability": "mutable",
                  "name": "count",
                  "nodeType": "VariableDeclaration",
                  "scope": 2173,
                  "src": "11182:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2155,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11182:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11181:15:10"
            },
            "scope": 3561,
            "src": "11026:447:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              4042
            ],
            "body": {
              "id": 2287,
              "nodeType": "Block",
              "src": "11721:881:10",
              "statements": [
                {
                  "assignments": [
                    2192
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2192,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2287,
                      "src": "11731:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2191,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2190,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "11731:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "11731:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2196,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2193,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "11754:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2195,
                    "indexExpression": {
                      "id": 2194,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2177,
                      "src": "11764:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11754:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11731:45:10"
                },
                {
                  "assignments": [
                    2198
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2198,
                      "mutability": "mutable",
                      "name": "numberOfSignatures",
                      "nodeType": "VariableDeclaration",
                      "scope": 2287,
                      "src": "11786:26:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2197,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11786:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2203,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2200,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2175,
                        "src": "11862:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2201,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2177,
                        "src": "11882:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2199,
                      "name": "getNumberOfDocumentECDSAForSigner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2173,
                      "src": "11815:33:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 2202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11815:88:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11786:117:10"
                },
                {
                  "assignments": [
                    2208
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2208,
                      "mutability": "mutable",
                      "name": "r_ret",
                      "nodeType": "VariableDeclaration",
                      "scope": 2287,
                      "src": "11913:22:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2206,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11913:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2207,
                        "nodeType": "ArrayTypeName",
                        "src": "11913:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2214,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2212,
                        "name": "numberOfSignatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2198,
                        "src": "11952:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2211,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "11938:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2209,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11942:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2210,
                        "nodeType": "ArrayTypeName",
                        "src": "11942:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 2213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11938:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11913:58:10"
                },
                {
                  "assignments": [
                    2219
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2219,
                      "mutability": "mutable",
                      "name": "s_ret",
                      "nodeType": "VariableDeclaration",
                      "scope": 2287,
                      "src": "11981:22:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2217,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11981:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2218,
                        "nodeType": "ArrayTypeName",
                        "src": "11981:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2225,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2223,
                        "name": "numberOfSignatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2198,
                        "src": "12020:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "12006:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2220,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12010:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2221,
                        "nodeType": "ArrayTypeName",
                        "src": "12010:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 2224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12006:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11981:58:10"
                },
                {
                  "assignments": [
                    2230
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2230,
                      "mutability": "mutable",
                      "name": "v_ret",
                      "nodeType": "VariableDeclaration",
                      "scope": 2287,
                      "src": "12049:20:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                        "typeString": "uint8[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2228,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "12049:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 2229,
                        "nodeType": "ArrayTypeName",
                        "src": "12049:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2236,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2234,
                        "name": "numberOfSignatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2198,
                        "src": "12084:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2233,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "12072:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint8[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2231,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "12076:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 2232,
                        "nodeType": "ArrayTypeName",
                        "src": "12076:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      }
                    },
                    "id": 2235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12072:31:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                      "typeString": "uint8[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12049:54:10"
                },
                {
                  "body": {
                    "id": 2280,
                    "nodeType": "Block",
                    "src": "12162:396:10",
                    "statements": [
                      {
                        "assignments": [
                          2249
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2249,
                            "mutability": "mutable",
                            "name": "ecs",
                            "nodeType": "VariableDeclaration",
                            "scope": 2280,
                            "src": "12176:23:10",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                              "typeString": "struct EthSign.ECSignature"
                            },
                            "typeName": {
                              "id": 2248,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2247,
                                "name": "ECSignature",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 1436,
                                "src": "12176:11:10"
                              },
                              "referencedDeclaration": 1436,
                              "src": "12176:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                "typeString": "struct EthSign.ECSignature"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2258,
                        "initialValue": {
                          "baseExpression": {
                            "expression": {
                              "id": 2250,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2192,
                              "src": "12202:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 2251,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "signatureFieldForSaltedAddressWithIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1471,
                            "src": "12202:60:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ECSignature_$1436_storage_$",
                              "typeString": "mapping(bytes32 => struct EthSign.ECSignature storage ref)"
                            }
                          },
                          "id": 2257,
                          "indexExpression": {
                            "arguments": [
                              {
                                "id": 2253,
                                "name": "documentKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2177,
                                "src": "12347:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 2254,
                                "name": "signer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2175,
                                "src": "12384:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2255,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2238,
                                "src": "12416:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2252,
                              "name": "_hashSaltedAddressWithIndexMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                1907
                              ],
                              "referencedDeclaration": 1907,
                              "src": "12284:37:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (bytes32,address,uint256) view returns (bytes32)"
                              }
                            },
                            "id": 2256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12284:155:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12202:255:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ECSignature_$1436_storage",
                            "typeString": "struct EthSign.ECSignature storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12176:281:10"
                      },
                      {
                        "expression": {
                          "id": 2264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2259,
                              "name": "r_ret",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2208,
                              "src": "12471:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 2261,
                            "indexExpression": {
                              "id": 2260,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2238,
                              "src": "12477:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12471:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 2262,
                              "name": "ecs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2249,
                              "src": "12482:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                "typeString": "struct EthSign.ECSignature storage pointer"
                              }
                            },
                            "id": 2263,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "r",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1431,
                            "src": "12482:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12471:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2265,
                        "nodeType": "ExpressionStatement",
                        "src": "12471:16:10"
                      },
                      {
                        "expression": {
                          "id": 2271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2266,
                              "name": "s_ret",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2219,
                              "src": "12501:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 2268,
                            "indexExpression": {
                              "id": 2267,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2238,
                              "src": "12507:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12501:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 2269,
                              "name": "ecs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2249,
                              "src": "12512:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                "typeString": "struct EthSign.ECSignature storage pointer"
                              }
                            },
                            "id": 2270,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "s",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1433,
                            "src": "12512:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12501:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2272,
                        "nodeType": "ExpressionStatement",
                        "src": "12501:16:10"
                      },
                      {
                        "expression": {
                          "id": 2278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2273,
                              "name": "v_ret",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2230,
                              "src": "12531:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                "typeString": "uint8[] memory"
                              }
                            },
                            "id": 2275,
                            "indexExpression": {
                              "id": 2274,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2238,
                              "src": "12537:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12531:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 2276,
                              "name": "ecs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2249,
                              "src": "12542:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                "typeString": "struct EthSign.ECSignature storage pointer"
                              }
                            },
                            "id": 2277,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "v",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1435,
                            "src": "12542:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "12531:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 2279,
                        "nodeType": "ExpressionStatement",
                        "src": "12531:16:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2241,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2238,
                      "src": "12133:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 2242,
                      "name": "numberOfSignatures",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2198,
                      "src": "12137:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12133:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2281,
                  "initializationExpression": {
                    "assignments": [
                      2238
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2238,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2281,
                        "src": "12118:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2237,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12118:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 2240,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 2239,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12130:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12118:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 2245,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "12157:3:10",
                      "subExpression": {
                        "id": 2244,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2238,
                        "src": "12159:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2246,
                    "nodeType": "ExpressionStatement",
                    "src": "12157:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "12113:445:10"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "id": 2282,
                        "name": "r_ret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2208,
                        "src": "12575:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      {
                        "id": 2283,
                        "name": "s_ret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2219,
                        "src": "12582:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      {
                        "id": 2284,
                        "name": "v_ret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "12589:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      }
                    ],
                    "id": 2285,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "12574:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$",
                      "typeString": "tuple(bytes32[] memory,bytes32[] memory,uint8[] memory)"
                    }
                  },
                  "functionReturnParameters": 2189,
                  "id": 2286,
                  "nodeType": "Return",
                  "src": "12567:28:10"
                }
              ]
            },
            "functionSelector": "4fc62e71",
            "id": 2288,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDocumentRSVForLegacySigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2179,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11593:8:10"
            },
            "parameters": {
              "id": 2178,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2175,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2288,
                  "src": "11518:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2174,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11518:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2177,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2288,
                  "src": "11534:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2176,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11534:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11517:37:10"
            },
            "returnParameters": {
              "id": 2189,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2182,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2288,
                  "src": "11632:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2180,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "11632:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 2181,
                    "nodeType": "ArrayTypeName",
                    "src": "11632:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2185,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2288,
                  "src": "11662:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2183,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "11662:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 2184,
                    "nodeType": "ArrayTypeName",
                    "src": "11662:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2188,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2288,
                  "src": "11692:14:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                    "typeString": "uint8[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2186,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "11692:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 2187,
                    "nodeType": "ArrayTypeName",
                    "src": "11692:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                      "typeString": "uint8[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11618:98:10"
            },
            "scope": 3561,
            "src": "11479:1123:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4054
            ],
            "body": {
              "id": 2310,
              "nodeType": "Block",
              "src": "12777:168:10",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 2300,
                          "name": "documentsExtended",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "12806:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
                            "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended storage ref)"
                          }
                        },
                        "id": 2302,
                        "indexExpression": {
                          "id": 2301,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2292,
                          "src": "12824:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12806:30:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentExtended_$1549_storage",
                          "typeString": "struct EthSign.DocumentExtended storage ref"
                        }
                      },
                      "id": 2303,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ecdsaForSaltedAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1542,
                      "src": "12806:52:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bytes_storage_$20_storage_$",
                        "typeString": "mapping(bytes32 => bytes storage ref[20] storage ref)"
                      }
                    },
                    "id": 2308,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 2305,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2292,
                          "src": "12904:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "id": 2306,
                          "name": "signer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2290,
                          "src": "12917:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2304,
                        "name": "hashSaltedAddressMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1847
                        ],
                        "referencedDeclaration": 1847,
                        "src": "12876:27:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32,address) view returns (bytes32)"
                        }
                      },
                      "id": 2307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12876:48:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12806:132:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$20_storage",
                      "typeString": "bytes storage ref[20] storage ref"
                    }
                  },
                  "functionReturnParameters": 2299,
                  "id": 2309,
                  "nodeType": "Return",
                  "src": "12787:151:10"
                }
              ]
            },
            "functionSelector": "63638ae6",
            "id": 2311,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDocumentECDSAForSigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2294,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12718:8:10"
            },
            "parameters": {
              "id": 2293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2290,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2311,
                  "src": "12643:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2289,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12643:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2292,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2311,
                  "src": "12659:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2291,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12659:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12642:37:10"
            },
            "returnParameters": {
              "id": 2299,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2298,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "scope": 2311,
                  "src": "12744:27:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$20_memory_ptr",
                    "typeString": "bytes[20]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2295,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "12744:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 2297,
                    "length": {
                      "hexValue": "3230",
                      "id": 2296,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12750:2:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_20_by_1",
                        "typeString": "int_const 20"
                      },
                      "value": "20"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "12744:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$20_storage_ptr",
                      "typeString": "bytes[20]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12743:29:10"
            },
            "scope": 3561,
            "src": "12608:337:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4068
            ],
            "body": {
              "id": 2358,
              "nodeType": "Block",
              "src": "13239:360:10",
              "statements": [
                {
                  "assignments": [
                    2330
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2330,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2358,
                      "src": "13249:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2329,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2328,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "13249:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "13249:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2334,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2331,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "13272:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2333,
                    "indexExpression": {
                      "id": 2332,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2315,
                      "src": "13282:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13272:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13249:45:10"
                },
                {
                  "assignments": [
                    2336
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2336,
                      "mutability": "mutable",
                      "name": "saltedAddressMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 2358,
                      "src": "13304:31:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2335,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "13304:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2341,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2338,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2315,
                        "src": "13379:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2339,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2313,
                        "src": "13404:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2337,
                      "name": "hashSaltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1847
                      ],
                      "referencedDeclaration": 1847,
                      "src": "13338:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,address) view returns (bytes32)"
                      }
                    },
                    "id": 2340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13338:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13304:116:10"
                },
                {
                  "assignments": [
                    2344
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2344,
                      "mutability": "mutable",
                      "name": "si",
                      "nodeType": "VariableDeclaration",
                      "scope": 2358,
                      "src": "13430:22:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 2343,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2342,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "13430:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "13430:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2349,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 2345,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2330,
                        "src": "13455:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2346,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "commentsForSaltedAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1476,
                      "src": "13455:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 2348,
                    "indexExpression": {
                      "id": 2347,
                      "name": "saltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2336,
                      "src": "13497:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13455:75:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13430:100:10"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "expression": {
                          "id": 2350,
                          "name": "si",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2344,
                          "src": "13548:2:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                            "typeString": "struct IEthSign.StorageInfo storage pointer"
                          }
                        },
                        "id": 2351,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "provider",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3950,
                        "src": "13548:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 2352,
                          "name": "si",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2344,
                          "src": "13561:2:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                            "typeString": "struct IEthSign.StorageInfo storage pointer"
                          }
                        },
                        "id": 2353,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "storage_id0",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3952,
                        "src": "13561:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 2354,
                          "name": "si",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2344,
                          "src": "13577:2:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                            "typeString": "struct IEthSign.StorageInfo storage pointer"
                          }
                        },
                        "id": 2355,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "storage_id1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3954,
                        "src": "13577:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 2356,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "13547:45:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 2327,
                  "id": 2357,
                  "nodeType": "Return",
                  "src": "13540:52:10"
                }
              ]
            },
            "functionSelector": "e140fb84",
            "id": 2359,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2319,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2315,
                    "src": "13099:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2320,
                "modifierName": {
                  "id": 2318,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "13081:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "13081:30:10"
              }
            ],
            "name": "getDocumentCommentsForSigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2317,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13064:8:10"
            },
            "parameters": {
              "id": 2316,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2313,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2359,
                  "src": "12989:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2312,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12989:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2315,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2359,
                  "src": "13005:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2314,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13005:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12988:37:10"
            },
            "returnParameters": {
              "id": 2327,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2322,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "scope": 2359,
                  "src": "13142:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2321,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13142:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2324,
                  "mutability": "mutable",
                  "name": "storage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2359,
                  "src": "13172:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2323,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13172:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2326,
                  "mutability": "mutable",
                  "name": "storage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2359,
                  "src": "13205:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2325,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13205:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13128:106:10"
            },
            "scope": 3561,
            "src": "12951:648:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4078
            ],
            "body": {
              "id": 2401,
              "nodeType": "Block",
              "src": "13805:393:10",
              "statements": [
                {
                  "assignments": [
                    2374
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2374,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "13815:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2373,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2372,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "13815:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "13815:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2378,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2375,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "13838:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2377,
                    "indexExpression": {
                      "id": 2376,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2361,
                      "src": "13848:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13838:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13815:45:10"
                },
                {
                  "assignments": [
                    2380
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2380,
                      "mutability": "mutable",
                      "name": "saltedMetaDocumentMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "13870:36:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2379,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "13870:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2384,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2382,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2361,
                        "src": "13955:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2381,
                      "name": "hashSaltedMetaDocumentMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1790
                      ],
                      "referencedDeclaration": 1790,
                      "src": "13909:32:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 2383,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13909:67:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13870:106:10"
                },
                {
                  "expression": {
                    "id": 2390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2385,
                      "name": "totalSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2368,
                      "src": "13986:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "expression": {
                            "id": 2386,
                            "name": "doc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2374,
                            "src": "14001:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                              "typeString": "struct EthSign.Document storage pointer"
                            }
                          },
                          "id": 2387,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "signersSet",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1448,
                          "src": "14001:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                            "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                          }
                        },
                        "id": 2388,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1277,
                        "src": "14001:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                          "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 2389,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14001:23:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13986:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2391,
                  "nodeType": "ExpressionStatement",
                  "src": "13986:38:10"
                },
                {
                  "expression": {
                    "id": 2399,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2392,
                      "name": "signedSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2370,
                      "src": "14034:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "baseExpression": {
                            "expression": {
                              "id": 2393,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2374,
                              "src": "14050:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 2394,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "numOfSignedSignersSetForSaltedMetaDocument",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1458,
                            "src": "14050:59:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$1181_storage_$",
                              "typeString": "mapping(bytes32 => struct EnumerableSetUpgradeable.AddressSet storage ref)"
                            }
                          },
                          "id": 2396,
                          "indexExpression": {
                            "id": 2395,
                            "name": "saltedMetaDocumentMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2380,
                            "src": "14127:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14050:119:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                            "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                          }
                        },
                        "id": 2397,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1277,
                        "src": "14050:139:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                          "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 2398,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14050:141:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14034:157:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2400,
                  "nodeType": "ExpressionStatement",
                  "src": "14034:157:10"
                }
              ]
            },
            "functionSelector": "acf76182",
            "id": 2402,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2365,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2361,
                    "src": "13726:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2366,
                "modifierName": {
                  "id": 2364,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "13708:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "13708:30:10"
              }
            ],
            "name": "getDocumentStatus",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2363,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13691:8:10"
            },
            "parameters": {
              "id": 2362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2361,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "13632:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2360,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13632:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13631:21:10"
            },
            "returnParameters": {
              "id": 2371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2368,
                  "mutability": "mutable",
                  "name": "totalSigners",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "13756:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2367,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13756:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2370,
                  "mutability": "mutable",
                  "name": "signedSigners",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "13778:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2369,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13778:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13755:45:10"
            },
            "scope": 3561,
            "src": "13605:593:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4088
            ],
            "body": {
              "id": 2556,
              "nodeType": "Block",
              "src": "14443:1549:10",
              "statements": [
                {
                  "assignments": [
                    2417
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2417,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2556,
                      "src": "14453:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2416,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2415,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "14453:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "14453:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2421,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2418,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "14476:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2420,
                    "indexExpression": {
                      "id": 2419,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2404,
                      "src": "14486:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14476:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14453:45:10"
                },
                {
                  "assignments": [
                    2426
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2426,
                      "mutability": "mutable",
                      "name": "signersSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 2556,
                      "src": "14508:54:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                        "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                      },
                      "typeName": {
                        "id": 2425,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2424,
                          "name": "EnumerableSetUpgradeable.AddressSet",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1181,
                          "src": "14508:35:10"
                        },
                        "referencedDeclaration": 1181,
                        "src": "14508:35:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2429,
                  "initialValue": {
                    "expression": {
                      "id": 2427,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2417,
                      "src": "14565:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 2428,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "signersSet",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1448,
                    "src": "14565:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                      "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14508:71:10"
                },
                {
                  "assignments": [
                    2431
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2431,
                      "mutability": "mutable",
                      "name": "numOfSigners",
                      "nodeType": "VariableDeclaration",
                      "scope": 2556,
                      "src": "14589:20:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2430,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14589:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2435,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 2432,
                        "name": "signersSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2426,
                        "src": "14612:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet storage pointer"
                        }
                      },
                      "id": 2433,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1277,
                      "src": "14612:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                        "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 2434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14612:19:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14589:42:10"
                },
                {
                  "expression": {
                    "id": 2443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2436,
                      "name": "fieldSignedInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2413,
                      "src": "14641:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2441,
                          "name": "numOfSigners",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2431,
                          "src": "14699:12:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "14659:39:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2438,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2437,
                              "name": "_HelperSignerSignatureFieldStatus",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3961,
                              "src": "14663:33:10"
                            },
                            "referencedDeclaration": 3961,
                            "src": "14663:33:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$__HelperSignerSignatureFieldStatus_$3961_storage_ptr",
                              "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus"
                            }
                          },
                          "id": 2439,
                          "nodeType": "ArrayTypeName",
                          "src": "14663:35:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_storage_$dyn_storage_ptr",
                            "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus[]"
                          }
                        }
                      },
                      "id": 2442,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14659:53:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory"
                      }
                    },
                    "src": "14641:71:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory"
                    }
                  },
                  "id": 2444,
                  "nodeType": "ExpressionStatement",
                  "src": "14641:71:10"
                },
                {
                  "body": {
                    "id": 2554,
                    "nodeType": "Block",
                    "src": "14765:1221:10",
                    "statements": [
                      {
                        "assignments": [
                          2456
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2456,
                            "mutability": "mutable",
                            "name": "signer",
                            "nodeType": "VariableDeclaration",
                            "scope": 2554,
                            "src": "14779:14:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2455,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14779:7:10",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2461,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2459,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2446,
                              "src": "14810:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2457,
                              "name": "signersSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2426,
                              "src": "14796:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                                "typeString": "struct EnumerableSetUpgradeable.AddressSet storage pointer"
                              }
                            },
                            "id": 2458,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "at",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1304,
                            "src": "14796:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                              "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"
                            }
                          },
                          "id": 2460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14796:16:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14779:33:10"
                      },
                      {
                        "assignments": [
                          2463
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2463,
                            "mutability": "mutable",
                            "name": "saltedAddressMappingKey",
                            "nodeType": "VariableDeclaration",
                            "scope": 2554,
                            "src": "14826:31:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2462,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "14826:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2468,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2465,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2404,
                              "src": "14905:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2466,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2456,
                              "src": "14934:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2464,
                            "name": "hashSaltedAddressMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1847
                            ],
                            "referencedDeclaration": 1847,
                            "src": "14860:27:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,address) view returns (bytes32)"
                            }
                          },
                          "id": 2467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14860:94:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14826:128:10"
                      },
                      {
                        "assignments": [
                          2470
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2470,
                            "mutability": "mutable",
                            "name": "numOfSignatureFieldsForSigner",
                            "nodeType": "VariableDeclaration",
                            "scope": 2554,
                            "src": "14968:37:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2469,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14968:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2475,
                        "initialValue": {
                          "baseExpression": {
                            "expression": {
                              "id": 2471,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2417,
                              "src": "15008:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 2472,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "numOfSignatureFieldsForSaltedAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1462,
                            "src": "15008:57:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 2474,
                          "indexExpression": {
                            "id": 2473,
                            "name": "saltedAddressMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2463,
                            "src": "15066:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15008:82:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14968:122:10"
                      },
                      {
                        "assignments": [
                          2480
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2480,
                            "mutability": "mutable",
                            "name": "nestedElement",
                            "nodeType": "VariableDeclaration",
                            "scope": 2554,
                            "src": "15104:27:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2478,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "15104:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2479,
                              "nodeType": "ArrayTypeName",
                              "src": "15104:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2486,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2484,
                              "name": "numOfSignatureFieldsForSigner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2470,
                              "src": "15162:29:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "15134:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bool[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2481,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "15138:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2482,
                              "nodeType": "ArrayTypeName",
                              "src": "15138:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            }
                          },
                          "id": 2485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15134:71:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15104:101:10"
                      },
                      {
                        "body": {
                          "id": 2538,
                          "nodeType": "Block",
                          "src": "15279:589:10",
                          "statements": [
                            {
                              "assignments": [
                                2498
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2498,
                                  "mutability": "mutable",
                                  "name": "saltedAddressWithIndexMappingKey",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2538,
                                  "src": "15297:40:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 2497,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15297:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2504,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 2500,
                                    "name": "documentKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2404,
                                    "src": "15403:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 2501,
                                    "name": "signer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2456,
                                    "src": "15440:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2502,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2488,
                                    "src": "15472:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2499,
                                  "name": "_hashSaltedAddressWithIndexMappingKey",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    1907
                                  ],
                                  "referencedDeclaration": 1907,
                                  "src": "15340:37:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes32,address,uint256) view returns (bytes32)"
                                  }
                                },
                                "id": 2503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15340:155:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15297:198:10"
                            },
                            {
                              "assignments": [
                                2507
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2507,
                                  "mutability": "mutable",
                                  "name": "ecs",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2538,
                                  "src": "15513:23:10",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                    "typeString": "struct EthSign.ECSignature"
                                  },
                                  "typeName": {
                                    "id": 2506,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 2505,
                                      "name": "ECSignature",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 1436,
                                      "src": "15513:11:10"
                                    },
                                    "referencedDeclaration": 1436,
                                    "src": "15513:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                      "typeString": "struct EthSign.ECSignature"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2512,
                              "initialValue": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 2508,
                                    "name": "doc",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2417,
                                    "src": "15539:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                      "typeString": "struct EthSign.Document storage pointer"
                                    }
                                  },
                                  "id": 2509,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "signatureFieldForSaltedAddressWithIndex",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1471,
                                  "src": "15539:64:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ECSignature_$1436_storage_$",
                                    "typeString": "mapping(bytes32 => struct EthSign.ECSignature storage ref)"
                                  }
                                },
                                "id": 2511,
                                "indexExpression": {
                                  "id": 2510,
                                  "name": "saltedAddressWithIndexMappingKey",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2498,
                                  "src": "15629:32:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15539:144:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ECSignature_$1436_storage",
                                  "typeString": "struct EthSign.ECSignature storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15513:170:10"
                            },
                            {
                              "assignments": [
                                2514
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2514,
                                  "mutability": "mutable",
                                  "name": "fieldSigned",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2538,
                                  "src": "15701:16:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 2513,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15701:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2531,
                              "initialValue": {
                                "id": 2530,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "15720:85:10",
                                "subExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 2528,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 2523,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          "id": 2518,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 2515,
                                              "name": "ecs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2507,
                                              "src": "15722:3:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                                "typeString": "struct EthSign.ECSignature storage pointer"
                                              }
                                            },
                                            "id": 2516,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "r",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1431,
                                            "src": "15722:5:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "307830",
                                            "id": 2517,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "15731:3:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0x0"
                                          },
                                          "src": "15722:12:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          "id": 2522,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 2519,
                                              "name": "ecs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2507,
                                              "src": "15758:3:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                                "typeString": "struct EthSign.ECSignature storage pointer"
                                              }
                                            },
                                            "id": 2520,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "s",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1433,
                                            "src": "15758:5:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "307830",
                                            "id": 2521,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "15767:3:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0x0"
                                          },
                                          "src": "15758:12:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "15722:48:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        "id": 2527,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 2524,
                                            "name": "ecs",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2507,
                                            "src": "15794:3:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                              "typeString": "struct EthSign.ECSignature storage pointer"
                                            }
                                          },
                                          "id": 2525,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "v",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1435,
                                          "src": "15794:5:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 2526,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15803:1:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "15794:10:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "15722:82:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 2529,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "15721:84:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15701:104:10"
                            },
                            {
                              "expression": {
                                "id": 2536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2532,
                                    "name": "nestedElement",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2480,
                                    "src": "15823:13:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                      "typeString": "bool[] memory"
                                    }
                                  },
                                  "id": 2534,
                                  "indexExpression": {
                                    "id": 2533,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2488,
                                    "src": "15837:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15823:16:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 2535,
                                  "name": "fieldSigned",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2514,
                                  "src": "15842:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "15823:30:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2537,
                              "nodeType": "ExpressionStatement",
                              "src": "15823:30:10"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2491,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2488,
                            "src": "15239:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 2492,
                            "name": "numOfSignatureFieldsForSigner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2470,
                            "src": "15243:29:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15239:33:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2539,
                        "initializationExpression": {
                          "assignments": [
                            2488
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2488,
                              "mutability": "mutable",
                              "name": "j",
                              "nodeType": "VariableDeclaration",
                              "scope": 2539,
                              "src": "15224:9:10",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2487,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15224:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2490,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 2489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15236:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15224:13:10"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 2495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "15274:3:10",
                            "subExpression": {
                              "id": 2494,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2488,
                              "src": "15276:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2496,
                          "nodeType": "ExpressionStatement",
                          "src": "15274:3:10"
                        },
                        "nodeType": "ForStatement",
                        "src": "15219:649:10"
                      },
                      {
                        "expression": {
                          "id": 2545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 2540,
                                "name": "fieldSignedInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2413,
                                "src": "15881:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory"
                                }
                              },
                              "id": 2542,
                              "indexExpression": {
                                "id": 2541,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2446,
                                "src": "15897:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15881:18:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr",
                                "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory"
                              }
                            },
                            "id": 2543,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "signer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3957,
                            "src": "15881:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2544,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2456,
                            "src": "15909:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "15881:34:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2546,
                        "nodeType": "ExpressionStatement",
                        "src": "15881:34:10"
                      },
                      {
                        "expression": {
                          "id": 2552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 2547,
                                "name": "fieldSignedInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2413,
                                "src": "15929:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory"
                                }
                              },
                              "id": 2549,
                              "indexExpression": {
                                "id": 2548,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2446,
                                "src": "15945:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15929:18:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr",
                                "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory"
                              }
                            },
                            "id": 2550,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "fieldSigned",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3960,
                            "src": "15929:30:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2551,
                            "name": "nestedElement",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2480,
                            "src": "15962:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "src": "15929:46:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "id": 2553,
                        "nodeType": "ExpressionStatement",
                        "src": "15929:46:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2449,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2446,
                      "src": "14742:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 2450,
                      "name": "numOfSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2431,
                      "src": "14746:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14742:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2555,
                  "initializationExpression": {
                    "assignments": [
                      2446
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2446,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2555,
                        "src": "14727:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2445,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14727:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 2448,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 2447,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14739:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "14727:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 2453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "14760:3:10",
                      "subExpression": {
                        "id": 2452,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2446,
                        "src": "14762:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2454,
                    "nodeType": "ExpressionStatement",
                    "src": "14760:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "14722:1264:10"
                }
              ]
            },
            "functionSelector": "e894974f",
            "id": 2557,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2408,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2404,
                    "src": "14349:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2409,
                "modifierName": {
                  "id": 2407,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "14331:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "14331:30:10"
              }
            ],
            "name": "aggregateGetIsSignedForAllSignatureFields",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2406,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14314:8:10"
            },
            "parameters": {
              "id": 2405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2404,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2557,
                  "src": "14255:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2403,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14255:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14254:21:10"
            },
            "returnParameters": {
              "id": 2414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2413,
                  "mutability": "mutable",
                  "name": "fieldSignedInfo",
                  "nodeType": "VariableDeclaration",
                  "scope": 2557,
                  "src": "14379:58:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2411,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2410,
                        "name": "_HelperSignerSignatureFieldStatus",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3961,
                        "src": "14379:33:10"
                      },
                      "referencedDeclaration": 3961,
                      "src": "14379:33:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$__HelperSignerSignatureFieldStatus_$3961_storage_ptr",
                        "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus"
                      }
                    },
                    "id": 2412,
                    "nodeType": "ArrayTypeName",
                    "src": "14379:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_storage_$dyn_storage_ptr",
                      "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14378:60:10"
            },
            "scope": 3561,
            "src": "14204:1788:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4098
            ],
            "body": {
              "id": 2643,
              "nodeType": "Block",
              "src": "16204:662:10",
              "statements": [
                {
                  "assignments": [
                    2572
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2572,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2643,
                      "src": "16214:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2571,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2570,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "16214:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "16214:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2576,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2573,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "16237:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2575,
                    "indexExpression": {
                      "id": 2574,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2559,
                      "src": "16247:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "16237:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16214:45:10"
                },
                {
                  "assignments": [
                    2581
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2581,
                      "mutability": "mutable",
                      "name": "signersSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 2643,
                      "src": "16269:54:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                        "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                      },
                      "typeName": {
                        "id": 2580,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2579,
                          "name": "EnumerableSetUpgradeable.AddressSet",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1181,
                          "src": "16269:35:10"
                        },
                        "referencedDeclaration": 1181,
                        "src": "16269:35:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2584,
                  "initialValue": {
                    "expression": {
                      "id": 2582,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2572,
                      "src": "16326:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 2583,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "signersSet",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1448,
                    "src": "16326:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                      "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16269:71:10"
                },
                {
                  "assignments": [
                    2586
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2586,
                      "mutability": "mutable",
                      "name": "numOfSigners",
                      "nodeType": "VariableDeclaration",
                      "scope": 2643,
                      "src": "16350:20:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2585,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16350:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2590,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 2587,
                        "name": "signersSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2581,
                        "src": "16373:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet storage pointer"
                        }
                      },
                      "id": 2588,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1277,
                      "src": "16373:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                        "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 2589,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16373:19:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16350:42:10"
                },
                {
                  "expression": {
                    "id": 2598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2591,
                      "name": "hci",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2568,
                      "src": "16402:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct IEthSign._HelperCommentInfo memory[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2596,
                          "name": "numOfSigners",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2586,
                          "src": "16433:12:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "16408:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (struct IEthSign._HelperCommentInfo memory[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2593,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2592,
                              "name": "_HelperCommentInfo",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3967,
                              "src": "16412:18:10"
                            },
                            "referencedDeclaration": 3967,
                            "src": "16412:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$__HelperCommentInfo_$3967_storage_ptr",
                              "typeString": "struct IEthSign._HelperCommentInfo"
                            }
                          },
                          "id": 2594,
                          "nodeType": "ArrayTypeName",
                          "src": "16412:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_storage_$dyn_storage_ptr",
                            "typeString": "struct IEthSign._HelperCommentInfo[]"
                          }
                        }
                      },
                      "id": 2597,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16408:38:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct IEthSign._HelperCommentInfo memory[] memory"
                      }
                    },
                    "src": "16402:44:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct IEthSign._HelperCommentInfo memory[] memory"
                    }
                  },
                  "id": 2599,
                  "nodeType": "ExpressionStatement",
                  "src": "16402:44:10"
                },
                {
                  "body": {
                    "id": 2641,
                    "nodeType": "Block",
                    "src": "16499:361:10",
                    "statements": [
                      {
                        "assignments": [
                          2611
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2611,
                            "mutability": "mutable",
                            "name": "signer",
                            "nodeType": "VariableDeclaration",
                            "scope": 2641,
                            "src": "16513:14:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2610,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16513:7:10",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2616,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2614,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2601,
                              "src": "16544:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2612,
                              "name": "signersSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2581,
                              "src": "16530:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                                "typeString": "struct EnumerableSetUpgradeable.AddressSet storage pointer"
                              }
                            },
                            "id": 2613,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "at",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1304,
                            "src": "16530:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                              "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"
                            }
                          },
                          "id": 2615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16530:16:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16513:33:10"
                      },
                      {
                        "assignments": [
                          2618
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2618,
                            "mutability": "mutable",
                            "name": "saltedAddressMappingKey",
                            "nodeType": "VariableDeclaration",
                            "scope": 2641,
                            "src": "16560:31:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2617,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16560:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2623,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2620,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2559,
                              "src": "16639:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2621,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2611,
                              "src": "16668:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2619,
                            "name": "hashSaltedAddressMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1847
                            ],
                            "referencedDeclaration": 1847,
                            "src": "16594:27:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,address) view returns (bytes32)"
                            }
                          },
                          "id": 2622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16594:94:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16560:128:10"
                      },
                      {
                        "expression": {
                          "id": 2629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 2624,
                                "name": "hci",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2568,
                                "src": "16702:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IEthSign._HelperCommentInfo memory[] memory"
                                }
                              },
                              "id": 2626,
                              "indexExpression": {
                                "id": 2625,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2601,
                                "src": "16706:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16702:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$__HelperCommentInfo_$3967_memory_ptr",
                                "typeString": "struct IEthSign._HelperCommentInfo memory"
                              }
                            },
                            "id": 2627,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "signer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3963,
                            "src": "16702:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2628,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2611,
                            "src": "16718:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16702:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2630,
                        "nodeType": "ExpressionStatement",
                        "src": "16702:22:10"
                      },
                      {
                        "expression": {
                          "id": 2639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 2631,
                                "name": "hci",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2568,
                                "src": "16738:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IEthSign._HelperCommentInfo memory[] memory"
                                }
                              },
                              "id": 2633,
                              "indexExpression": {
                                "id": 2632,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2601,
                                "src": "16742:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16738:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$__HelperCommentInfo_$3967_memory_ptr",
                                "typeString": "struct IEthSign._HelperCommentInfo memory"
                              }
                            },
                            "id": 2634,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "commentStorageInfo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3966,
                            "src": "16738:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StorageInfo_$3955_memory_ptr",
                              "typeString": "struct IEthSign.StorageInfo memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 2635,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2572,
                                "src": "16766:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 2636,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "commentsForSaltedAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1476,
                              "src": "16766:28:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                                "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                              }
                            },
                            "id": 2638,
                            "indexExpression": {
                              "id": 2637,
                              "name": "saltedAddressMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2618,
                              "src": "16812:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16766:83:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                              "typeString": "struct IEthSign.StorageInfo storage ref"
                            }
                          },
                          "src": "16738:111:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StorageInfo_$3955_memory_ptr",
                            "typeString": "struct IEthSign.StorageInfo memory"
                          }
                        },
                        "id": 2640,
                        "nodeType": "ExpressionStatement",
                        "src": "16738:111:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2604,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2601,
                      "src": "16476:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 2605,
                      "name": "numOfSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2586,
                      "src": "16480:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16476:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2642,
                  "initializationExpression": {
                    "assignments": [
                      2601
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2601,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2642,
                        "src": "16461:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2600,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16461:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 2603,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 2602,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16473:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16461:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 2608,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "16494:3:10",
                      "subExpression": {
                        "id": 2607,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2601,
                        "src": "16496:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2609,
                    "nodeType": "ExpressionStatement",
                    "src": "16494:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "16456:404:10"
                }
              ]
            },
            "functionSelector": "da7ead23",
            "id": 2644,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2563,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2559,
                    "src": "16137:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2564,
                "modifierName": {
                  "id": 2562,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "16119:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "16119:30:10"
              }
            ],
            "name": "aggregateGetAllCommentsOfAllSigners",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2561,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "16102:8:10"
            },
            "parameters": {
              "id": 2560,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2559,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2644,
                  "src": "16043:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2558,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16043:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16042:21:10"
            },
            "returnParameters": {
              "id": 2569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2568,
                  "mutability": "mutable",
                  "name": "hci",
                  "nodeType": "VariableDeclaration",
                  "scope": 2644,
                  "src": "16167:31:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct IEthSign._HelperCommentInfo[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2566,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2565,
                        "name": "_HelperCommentInfo",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3967,
                        "src": "16167:18:10"
                      },
                      "referencedDeclaration": 3967,
                      "src": "16167:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$__HelperCommentInfo_$3967_storage_ptr",
                        "typeString": "struct IEthSign._HelperCommentInfo"
                      }
                    },
                    "id": 2567,
                    "nodeType": "ArrayTypeName",
                    "src": "16167:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_storage_$dyn_storage_ptr",
                      "typeString": "struct IEthSign._HelperCommentInfo[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16166:33:10"
            },
            "scope": 3561,
            "src": "15998:868:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2705,
              "nodeType": "Block",
              "src": "17038:404:10",
              "statements": [
                {
                  "assignments": [
                    2657
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2657,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2705,
                      "src": "17048:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2656,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2655,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "17048:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "17048:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2661,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2658,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "17071:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2660,
                    "indexExpression": {
                      "id": 2659,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2646,
                      "src": "17081:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "17071:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17048:45:10"
                },
                {
                  "expression": {
                    "id": 2666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2662,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2657,
                        "src": "17103:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2664,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1480,
                      "src": "17103:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2665,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2648,
                      "src": "17114:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "17103:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2667,
                  "nodeType": "ExpressionStatement",
                  "src": "17103:15:10"
                },
                {
                  "expression": {
                    "id": 2673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2668,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2657,
                        "src": "17128:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2670,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "birth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1438,
                      "src": "17128:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2671,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967292,
                        "src": "17140:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "src": "17140:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17128:24:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2674,
                  "nodeType": "ExpressionStatement",
                  "src": "17128:24:10"
                },
                {
                  "expression": {
                    "id": 2679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2675,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2657,
                        "src": "17162:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2677,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "expiration",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1440,
                      "src": "17162:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2678,
                      "name": "expiration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2650,
                      "src": "17179:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17162:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2680,
                  "nodeType": "ExpressionStatement",
                  "src": "17162:27:10"
                },
                {
                  "expression": {
                    "id": 2686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2681,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2657,
                        "src": "17199:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2683,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "initiator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1478,
                      "src": "17199:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 2684,
                        "name": "_msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3587
                        ],
                        "referencedDeclaration": 3587,
                        "src": "17215:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                          "typeString": "function () view returns (address)"
                        }
                      },
                      "id": 2685,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17215:12:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "17199:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2687,
                  "nodeType": "ExpressionStatement",
                  "src": "17199:28:10"
                },
                {
                  "expression": {
                    "id": 2692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2688,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2657,
                        "src": "17237:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2690,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "numOfSigners",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1442,
                      "src": "17237:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2691,
                      "name": "numOfSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2652,
                      "src": "17256:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17237:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2693,
                  "nodeType": "ExpressionStatement",
                  "src": "17237:31:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 2695,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2657,
                          "src": "17311:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 2696,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "initiator",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1478,
                        "src": "17311:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2697,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2646,
                        "src": "17338:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 2698,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2657,
                          "src": "17363:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 2699,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "name",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1480,
                        "src": "17363:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 2700,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2657,
                          "src": "17385:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 2701,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "numOfSigners",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1442,
                        "src": "17385:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2702,
                        "name": "expiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2650,
                        "src": "17415:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2694,
                      "name": "LogNewDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4201,
                      "src": "17283:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32,uint256,uint256)"
                      }
                    },
                    "id": 2703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17283:152:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2704,
                  "nodeType": "EmitStatement",
                  "src": "17278:157:10"
                }
              ]
            },
            "id": 2706,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_newBasicDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2653,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2646,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "16923:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2645,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16923:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2648,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "16952:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2647,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16952:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2650,
                  "mutability": "mutable",
                  "name": "expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "16974:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16974:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2652,
                  "mutability": "mutable",
                  "name": "numOfSigners",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "17002:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2651,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17002:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16913:115:10"
            },
            "returnParameters": {
              "id": 2654,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17038:0:10"
            },
            "scope": 3561,
            "src": "16887:555:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2733,
              "nodeType": "Block",
              "src": "17537:162:10",
              "statements": [
                {
                  "assignments": [
                    2715
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2715,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2733,
                      "src": "17547:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2714,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2713,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "17547:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "17547:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2719,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2716,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "17570:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2718,
                    "indexExpression": {
                      "id": 2717,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2708,
                      "src": "17580:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "17570:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17547:45:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2725,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2710,
                        "src": "17621:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 2720,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2715,
                          "src": "17602:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 2723,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signersSet",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1448,
                        "src": "17602:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                        }
                      },
                      "id": 2724,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1208,
                      "src": "17602:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$1181_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                        "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,address) returns (bool)"
                      }
                    },
                    "id": 2726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17602:26:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2727,
                  "nodeType": "ExpressionStatement",
                  "src": "17602:26:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2729,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2710,
                        "src": "17672:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2730,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "17680:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2728,
                      "name": "LogAddedNewSignerForDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4207,
                      "src": "17643:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 2731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17643:49:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2732,
                  "nodeType": "EmitStatement",
                  "src": "17638:54:10"
                }
              ]
            },
            "id": 2734,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_addSignerForDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2711,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2708,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2734,
                  "src": "17479:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2707,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17479:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2710,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2734,
                  "src": "17500:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2709,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17500:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17478:37:10"
            },
            "returnParameters": {
              "id": 2712,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17537:0:10"
            },
            "scope": 3561,
            "src": "17448:251:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2783,
              "nodeType": "Block",
              "src": "17868:386:10",
              "statements": [
                {
                  "assignments": [
                    2747
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2747,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2783,
                      "src": "17878:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2746,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2745,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "17878:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "17878:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2751,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2748,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "17901:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2750,
                    "indexExpression": {
                      "id": 2749,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2736,
                      "src": "17911:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "17901:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17878:45:10"
                },
                {
                  "assignments": [
                    2754
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2754,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 2783,
                      "src": "17933:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 2753,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2752,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "17933:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "17933:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2757,
                  "initialValue": {
                    "expression": {
                      "id": 2755,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2747,
                      "src": "17962:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 2756,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "17962:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17933:47:10"
                },
                {
                  "expression": {
                    "id": 2762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2758,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2754,
                        "src": "17990:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2760,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "17990:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2761,
                      "name": "provider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2738,
                      "src": "18008:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "17990:26:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2763,
                  "nodeType": "ExpressionStatement",
                  "src": "17990:26:10"
                },
                {
                  "expression": {
                    "id": 2768,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2764,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2754,
                        "src": "18026:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2766,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id0",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3952,
                      "src": "18026:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2767,
                      "name": "storage_id0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2740,
                      "src": "18047:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18026:32:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2769,
                  "nodeType": "ExpressionStatement",
                  "src": "18026:32:10"
                },
                {
                  "expression": {
                    "id": 2774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2770,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2754,
                        "src": "18068:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2772,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3954,
                      "src": "18068:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2773,
                      "name": "storage_id1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2742,
                      "src": "18089:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18068:32:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2775,
                  "nodeType": "ExpressionStatement",
                  "src": "18068:32:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2777,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2736,
                        "src": "18154:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2778,
                        "name": "provider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2738,
                        "src": "18179:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2779,
                        "name": "storage_id0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2740,
                        "src": "18201:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2780,
                        "name": "storage_id1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2742,
                        "src": "18226:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2776,
                      "name": "LogChangedDocumentStorage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4217,
                      "src": "18115:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 2781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18115:132:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2782,
                  "nodeType": "EmitStatement",
                  "src": "18110:137:10"
                }
              ]
            },
            "id": 2784,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setDocStorageForDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2743,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2736,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "17749:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2735,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17749:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2738,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "17778:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2737,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17778:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2740,
                  "mutability": "mutable",
                  "name": "storage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "17804:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2739,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17804:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2742,
                  "mutability": "mutable",
                  "name": "storage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "17833:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2741,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17833:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17739:119:10"
            },
            "returnParameters": {
              "id": 2744,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17868:0:10"
            },
            "scope": 3561,
            "src": "17705:549:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2837,
              "nodeType": "Block",
              "src": "18424:477:10",
              "statements": [
                {
                  "assignments": [
                    2797
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2797,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2837,
                      "src": "18434:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2796,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2795,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "18434:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "18434:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2801,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2798,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "18457:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2800,
                    "indexExpression": {
                      "id": 2799,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2786,
                      "src": "18467:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18457:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18434:45:10"
                },
                {
                  "assignments": [
                    2804
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2804,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 2837,
                      "src": "18489:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 2803,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2802,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "18489:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "18489:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2811,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 2805,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2797,
                        "src": "18519:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2806,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "18519:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 2810,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 2808,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2786,
                          "src": "18602:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 2807,
                        "name": "hashSaltedDocumentMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1739
                        ],
                        "referencedDeclaration": 1739,
                        "src": "18573:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 2809,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18573:41:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18519:105:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18489:135:10"
                },
                {
                  "expression": {
                    "id": 2816,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2812,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2804,
                        "src": "18634:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2814,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "18634:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2815,
                      "name": "provider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2788,
                      "src": "18653:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18634:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2817,
                  "nodeType": "ExpressionStatement",
                  "src": "18634:27:10"
                },
                {
                  "expression": {
                    "id": 2822,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2818,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2804,
                        "src": "18671:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2820,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id0",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3952,
                      "src": "18671:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2821,
                      "name": "storage_id0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2790,
                      "src": "18693:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18671:33:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2823,
                  "nodeType": "ExpressionStatement",
                  "src": "18671:33:10"
                },
                {
                  "expression": {
                    "id": 2828,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2824,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2804,
                        "src": "18714:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2826,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3954,
                      "src": "18714:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2827,
                      "name": "storage_id1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2792,
                      "src": "18736:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18714:33:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2829,
                  "nodeType": "ExpressionStatement",
                  "src": "18714:33:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2831,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2786,
                        "src": "18801:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2832,
                        "name": "provider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2788,
                        "src": "18826:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2833,
                        "name": "storage_id0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2790,
                        "src": "18848:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2834,
                        "name": "storage_id1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2792,
                        "src": "18873:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2830,
                      "name": "LogChangedMetadataStorage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4227,
                      "src": "18762:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 2835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18762:132:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2836,
                  "nodeType": "EmitStatement",
                  "src": "18757:137:10"
                }
              ]
            },
            "id": 2838,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setMetaStorageForDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2793,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2786,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2838,
                  "src": "18305:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2785,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18305:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2788,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "scope": 2838,
                  "src": "18334:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2787,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18334:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2790,
                  "mutability": "mutable",
                  "name": "storage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2838,
                  "src": "18360:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2789,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18360:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2792,
                  "mutability": "mutable",
                  "name": "storage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2838,
                  "src": "18389:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2791,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18389:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18295:119:10"
            },
            "returnParameters": {
              "id": 2794,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18424:0:10"
            },
            "scope": 3561,
            "src": "18260:641:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2885,
              "nodeType": "Block",
              "src": "19067:524:10",
              "statements": [
                {
                  "assignments": [
                    2849
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2849,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2885,
                      "src": "19077:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2848,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2847,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "19077:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "19077:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2853,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2850,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "19100:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2852,
                    "indexExpression": {
                      "id": 2851,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2840,
                      "src": "19110:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19100:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19077:45:10"
                },
                {
                  "assignments": [
                    2855
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2855,
                      "mutability": "mutable",
                      "name": "saltedAddressMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 2885,
                      "src": "19132:31:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2854,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "19132:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2860,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2857,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2840,
                        "src": "19207:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2858,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2842,
                        "src": "19232:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2856,
                      "name": "hashSaltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1847
                      ],
                      "referencedDeclaration": 1847,
                      "src": "19166:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,address) view returns (bytes32)"
                      }
                    },
                    "id": 2859,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19166:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19132:116:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "expression": {
                              "id": 2862,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2849,
                              "src": "19279:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 2863,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "numOfSignatureFieldsForSaltedAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1462,
                            "src": "19279:40:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 2865,
                          "indexExpression": {
                            "id": 2864,
                            "name": "saltedAddressMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2855,
                            "src": "19320:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "19279:65:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 2866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "19364:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "19279:86:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e554d5f5349475f455849535453",
                        "id": 2868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19379:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4caa10563f3964f7d3c9b94751dc759015856f997e1a275c1cc7fe40afcd7ba8",
                          "typeString": "literal_string \"NUM_SIG_EXISTS\""
                        },
                        "value": "NUM_SIG_EXISTS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4caa10563f3964f7d3c9b94751dc759015856f997e1a275c1cc7fe40afcd7ba8",
                          "typeString": "literal_string \"NUM_SIG_EXISTS\""
                        }
                      ],
                      "id": 2861,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "19258:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2869,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19258:147:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2870,
                  "nodeType": "ExpressionStatement",
                  "src": "19258:147:10"
                },
                {
                  "expression": {
                    "id": 2877,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "expression": {
                          "id": 2871,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2849,
                          "src": "19415:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 2874,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "numOfSignatureFieldsForSaltedAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1462,
                        "src": "19415:40:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 2875,
                      "indexExpression": {
                        "id": 2873,
                        "name": "saltedAddressMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2855,
                        "src": "19469:23:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19415:87:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2876,
                      "name": "number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2844,
                      "src": "19505:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19415:96:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2878,
                  "nodeType": "ExpressionStatement",
                  "src": "19415:96:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2880,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2840,
                        "src": "19556:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2881,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2842,
                        "src": "19569:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2882,
                        "name": "number",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2844,
                        "src": "19577:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2879,
                      "name": "LogSetNumberOfSignatureFields",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4235,
                      "src": "19526:29:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 2883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19526:58:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2884,
                  "nodeType": "EmitStatement",
                  "src": "19521:63:10"
                }
              ]
            },
            "id": 2886,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setNumberOfSignatureFieldsAsInitiatorForSignerForDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2845,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2840,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2886,
                  "src": "18984:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2839,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18984:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2842,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2886,
                  "src": "19013:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2841,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19013:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2844,
                  "mutability": "mutable",
                  "name": "number",
                  "nodeType": "VariableDeclaration",
                  "scope": 2886,
                  "src": "19037:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2843,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19037:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18974:83:10"
            },
            "returnParameters": {
              "id": 2846,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19067:0:10"
            },
            "scope": 3561,
            "src": "18907:684:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3017,
              "nodeType": "Block",
              "src": "19850:2037:10",
              "statements": [
                {
                  "assignments": [
                    2899
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2899,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 3017,
                      "src": "19860:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2898,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2897,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "19860:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "19860:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2903,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2900,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "19883:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2902,
                    "indexExpression": {
                      "id": 2901,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2888,
                      "src": "19893:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19883:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19860:45:10"
                },
                {
                  "assignments": [
                    2905
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2905,
                      "mutability": "mutable",
                      "name": "saltedAddressMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 3017,
                      "src": "19915:31:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2904,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "19915:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2910,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2907,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2888,
                        "src": "19990:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2908,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2890,
                        "src": "20015:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2906,
                      "name": "hashSaltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1847
                      ],
                      "referencedDeclaration": 1847,
                      "src": "19949:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,address) view returns (bytes32)"
                      }
                    },
                    "id": 2909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19949:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19915:116:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2918,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 2912,
                            "name": "doc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2899,
                            "src": "20062:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                              "typeString": "struct EthSign.Document storage pointer"
                            }
                          },
                          "id": 2913,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numOfSigners",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1442,
                          "src": "20062:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 2914,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2899,
                                "src": "20082:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 2915,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "signersSet",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1448,
                              "src": "20082:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                                "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                              }
                            },
                            "id": 2916,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1277,
                            "src": "20082:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                              "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 2917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20082:23:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20062:43:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5349474e4552535f4e4f545f46494e414c495a4544",
                        "id": 2919,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20119:23:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c9649649b538c488892778461d94528c2432c82381666c9bc88b793e71eb8daa",
                          "typeString": "literal_string \"SIGNERS_NOT_FINALIZED\""
                        },
                        "value": "SIGNERS_NOT_FINALIZED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c9649649b538c488892778461d94528c2432c82381666c9bc88b793e71eb8daa",
                          "typeString": "literal_string \"SIGNERS_NOT_FINALIZED\""
                        }
                      ],
                      "id": 2911,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "20041:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20041:111:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2921,
                  "nodeType": "ExpressionStatement",
                  "src": "20041:111:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2923,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2892,
                          "src": "20183:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "baseExpression": {
                            "expression": {
                              "id": 2924,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2899,
                              "src": "20207:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 2925,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "numOfSignatureFieldsForSaltedAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1462,
                            "src": "20207:40:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 2927,
                          "indexExpression": {
                            "id": 2926,
                            "name": "saltedAddressMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2905,
                            "src": "20269:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20207:103:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20183:127:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4f55545f4f465f424f554e4453",
                        "id": 2929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20324:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_01a63436c63f1d19f1f540ffbc42d170040b95f28e88d83e291ae055ac1ff22e",
                          "typeString": "literal_string \"OUT_OF_BOUNDS\""
                        },
                        "value": "OUT_OF_BOUNDS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_01a63436c63f1d19f1f540ffbc42d170040b95f28e88d83e291ae055ac1ff22e",
                          "typeString": "literal_string \"OUT_OF_BOUNDS\""
                        }
                      ],
                      "id": 2922,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "20162:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20162:187:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2931,
                  "nodeType": "ExpressionStatement",
                  "src": "20162:187:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2934,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2890,
                            "src": "20421:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 2936,
                                "name": "documentKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2888,
                                "src": "20504:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 2937,
                                "name": "signer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2890,
                                "src": "20537:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2938,
                                "name": "index",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2892,
                                "src": "20565:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2935,
                              "name": "_hashSaltedAddressWithIndexMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                1907
                              ],
                              "referencedDeclaration": 1907,
                              "src": "20445:37:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (bytes32,address,uint256) view returns (bytes32)"
                              }
                            },
                            "id": 2939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20445:143:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 2940,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2894,
                            "src": "20606:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "id": 2933,
                          "name": "verifyECSignatureSigner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3685,
                          "src": "20380:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,bytes calldata) view returns (bool)"
                          }
                        },
                        "id": 2941,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20380:249:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "494e56414c49445f5349474e4552",
                        "id": 2942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20643:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c",
                          "typeString": "literal_string \"INVALID_SIGNER\""
                        },
                        "value": "INVALID_SIGNER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c",
                          "typeString": "literal_string \"INVALID_SIGNER\""
                        }
                      ],
                      "id": 2932,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "20359:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2943,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20359:310:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2944,
                  "nodeType": "ExpressionStatement",
                  "src": "20359:310:10"
                },
                {
                  "expression": {
                    "id": 2954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 2945,
                              "name": "documentsExtended",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1536,
                              "src": "20679:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended storage ref)"
                              }
                            },
                            "id": 2947,
                            "indexExpression": {
                              "id": 2946,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2888,
                              "src": "20697:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "20679:30:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentExtended_$1549_storage",
                              "typeString": "struct EthSign.DocumentExtended storage ref"
                            }
                          },
                          "id": 2948,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ecdsaForSaltedAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1542,
                          "src": "20679:52:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bytes_storage_$20_storage_$",
                            "typeString": "mapping(bytes32 => bytes storage ref[20] storage ref)"
                          }
                        },
                        "id": 2950,
                        "indexExpression": {
                          "id": 2949,
                          "name": "saltedAddressMappingKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2905,
                          "src": "20745:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "20679:99:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$20_storage",
                          "typeString": "bytes storage ref[20] storage ref"
                        }
                      },
                      "id": 2952,
                      "indexExpression": {
                        "id": 2951,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2892,
                        "src": "20779:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20679:106:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2953,
                      "name": "signature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2894,
                      "src": "20788:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes calldata"
                      }
                    },
                    "src": "20679:118:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 2955,
                  "nodeType": "ExpressionStatement",
                  "src": "20679:118:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2957,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2888,
                        "src": "20844:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2958,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2890,
                        "src": "20857:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2959,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2892,
                        "src": "20865:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2956,
                      "name": "LogSignedDocumentSignatureField",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4243,
                      "src": "20812:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 2960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20812:59:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2961,
                  "nodeType": "EmitStatement",
                  "src": "20807:64:10"
                },
                {
                  "condition": {
                    "id": 2970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "20898:128:10",
                    "subExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 2962,
                              "name": "documentsExtended",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1536,
                              "src": "20899:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended storage ref)"
                              }
                            },
                            "id": 2964,
                            "indexExpression": {
                              "id": 2963,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2888,
                              "src": "20917:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "20899:30:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentExtended_$1549_storage",
                              "typeString": "struct EthSign.DocumentExtended storage ref"
                            }
                          },
                          "id": 2965,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ecdsaForSaltedAddressHasBeenFilled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1548,
                          "src": "20899:65:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$20_storage_$",
                            "typeString": "mapping(bytes32 => bool[20] storage ref)"
                          }
                        },
                        "id": 2967,
                        "indexExpression": {
                          "id": 2966,
                          "name": "saltedAddressMappingKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2905,
                          "src": "20982:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "20899:120:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$20_storage",
                          "typeString": "bool[20] storage ref"
                        }
                      },
                      "id": 2969,
                      "indexExpression": {
                        "id": 2968,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2892,
                        "src": "21020:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "20899:127:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3016,
                  "nodeType": "IfStatement",
                  "src": "20881:1000:10",
                  "trueBody": {
                    "id": 3015,
                    "nodeType": "Block",
                    "src": "21037:844:10",
                    "statements": [
                      {
                        "expression": {
                          "id": 2980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 2971,
                                    "name": "documentsExtended",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1536,
                                    "src": "21051:17:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
                                      "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended storage ref)"
                                    }
                                  },
                                  "id": 2973,
                                  "indexExpression": {
                                    "id": 2972,
                                    "name": "documentKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2888,
                                    "src": "21069:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "21051:30:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DocumentExtended_$1549_storage",
                                    "typeString": "struct EthSign.DocumentExtended storage ref"
                                  }
                                },
                                "id": 2974,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "ecdsaForSaltedAddressHasBeenFilled",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1548,
                                "src": "21051:65:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$20_storage_$",
                                  "typeString": "mapping(bytes32 => bool[20] storage ref)"
                                }
                              },
                              "id": 2976,
                              "indexExpression": {
                                "id": 2975,
                                "name": "saltedAddressMappingKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2905,
                                "src": "21134:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21051:120:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$20_storage",
                                "typeString": "bool[20] storage ref"
                              }
                            },
                            "id": 2978,
                            "indexExpression": {
                              "id": 2977,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2892,
                              "src": "21172:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "21051:127:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 2979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21181:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "21051:134:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2981,
                        "nodeType": "ExpressionStatement",
                        "src": "21051:134:10"
                      },
                      {
                        "expression": {
                          "id": 2986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "21199:103:10",
                          "subExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 2982,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2899,
                                "src": "21201:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 2983,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numOfSignedSignatureFieldsForSaltedAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1466,
                              "src": "21201:46:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 2985,
                            "indexExpression": {
                              "id": 2984,
                              "name": "saltedAddressMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2905,
                              "src": "21265:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "21201:101:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2987,
                        "nodeType": "ExpressionStatement",
                        "src": "21199:103:10"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 2988,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2899,
                                "src": "21337:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 2989,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numOfSignedSignatureFieldsForSaltedAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1466,
                              "src": "21337:46:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 2991,
                            "indexExpression": {
                              "id": 2990,
                              "name": "saltedAddressMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2905,
                              "src": "21405:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "21337:109:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 2992,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2899,
                                "src": "21466:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 2993,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numOfSignatureFieldsForSaltedAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1462,
                              "src": "21466:40:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 2995,
                            "indexExpression": {
                              "id": 2994,
                              "name": "saltedAddressMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2905,
                              "src": "21528:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "21466:103:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21337:232:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3014,
                        "nodeType": "IfStatement",
                        "src": "21316:555:10",
                        "trueBody": {
                          "id": 3013,
                          "nodeType": "Block",
                          "src": "21584:287:10",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3005,
                                    "name": "signer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2890,
                                    "src": "21788:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "baseExpression": {
                                      "expression": {
                                        "id": 2997,
                                        "name": "doc",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2899,
                                        "src": "21602:3:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                          "typeString": "struct EthSign.Document storage pointer"
                                        }
                                      },
                                      "id": 3002,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "numOfSignedSignersSetForSaltedMetaDocument",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1458,
                                      "src": "21602:67:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$1181_storage_$",
                                        "typeString": "mapping(bytes32 => struct EnumerableSetUpgradeable.AddressSet storage ref)"
                                      }
                                    },
                                    "id": 3003,
                                    "indexExpression": {
                                      "arguments": [
                                        {
                                          "id": 3000,
                                          "name": "documentKey",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2888,
                                          "src": "21728:11:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 2999,
                                        "name": "hashSaltedMetaDocumentMappingKey",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          1790
                                        ],
                                        "referencedDeclaration": 1790,
                                        "src": "21695:32:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes32) view returns (bytes32)"
                                        }
                                      },
                                      "id": 3001,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "21695:45:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "21602:160:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                                      "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                                    }
                                  },
                                  "id": 3004,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1208,
                                  "src": "21602:185:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$1181_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                                    "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,address) returns (bool)"
                                  }
                                },
                                "id": 3006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21602:193:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 3007,
                              "nodeType": "ExpressionStatement",
                              "src": "21602:193:10"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 3009,
                                    "name": "documentKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2888,
                                    "src": "21836:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3010,
                                    "name": "signer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2890,
                                    "src": "21849:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3008,
                                  "name": "LogSignedDocument",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4249,
                                  "src": "21818:17:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address)"
                                  }
                                },
                                "id": 3011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21818:38:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3012,
                              "nodeType": "EmitStatement",
                              "src": "21813:43:10"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "id": 3018,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setSignatureFieldAtIndexForSignerForDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2895,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2888,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3018,
                  "src": "19734:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2887,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "19734:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2890,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3018,
                  "src": "19763:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2889,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19763:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2892,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 3018,
                  "src": "19787:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2891,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19787:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2894,
                  "mutability": "mutable",
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 3018,
                  "src": "19810:24:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2893,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "19810:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19724:116:10"
            },
            "returnParameters": {
              "id": 2896,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19850:0:10"
            },
            "scope": 3561,
            "src": "19670:2217:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              4166
            ],
            "body": {
              "id": 3051,
              "nodeType": "Block",
              "src": "22247:169:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3044,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3020,
                        "src": "22299:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "hexValue": "307830",
                        "id": 3045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22324:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0x0"
                      },
                      {
                        "id": 3046,
                        "name": "provider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3022,
                        "src": "22341:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3047,
                        "name": "storage_id0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3024,
                        "src": "22363:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3048,
                        "name": "storage_id1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3026,
                        "src": "22388:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3043,
                      "name": "_setDocumentCommentsAsSigner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3199,
                      "src": "22257:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 3049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22257:152:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3050,
                  "nodeType": "ExpressionStatement",
                  "src": "22257:152:10"
                }
              ]
            },
            "functionSelector": "23a559d5",
            "id": 3052,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3030,
                "modifierName": {
                  "id": 3029,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "22091:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22091:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3032,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3020,
                    "src": "22131:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3033,
                "modifierName": {
                  "id": 3031,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "22113:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22113:30:10"
              },
              {
                "arguments": [
                  {
                    "id": 3035,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3020,
                    "src": "22174:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3036,
                "modifierName": {
                  "id": 3034,
                  "name": "documentHasNotExpired",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1639,
                  "src": "22152:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22152:34:10"
              },
              {
                "arguments": [
                  {
                    "id": 3038,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3020,
                    "src": "22216:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3039,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3587
                      ],
                      "referencedDeclaration": 3587,
                      "src": "22229:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 3040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22229:12:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3041,
                "modifierName": {
                  "id": 3037,
                  "name": "onlyAuthorizedSigner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1685,
                  "src": "22195:20:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22195:47:10"
              }
            ],
            "name": "setDocumentCommentsAsSigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3028,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "22074:8:10"
            },
            "parameters": {
              "id": 3027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3020,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3052,
                  "src": "21939:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3019,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21939:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3022,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "scope": 3052,
                  "src": "21968:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3021,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21968:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3024,
                  "mutability": "mutable",
                  "name": "storage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 3052,
                  "src": "21994:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3023,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21994:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3026,
                  "mutability": "mutable",
                  "name": "storage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3052,
                  "src": "22023:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3025,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "22023:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21929:119:10"
            },
            "returnParameters": {
              "id": 3042,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22247:0:10"
            },
            "scope": 3561,
            "src": "21893:523:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4172
            ],
            "body": {
              "id": 3110,
              "nodeType": "Block",
              "src": "22670:415:10",
              "statements": [
                {
                  "assignments": [
                    3071
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3071,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 3110,
                      "src": "22680:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 3070,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 3069,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "22680:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "22680:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3075,
                  "initialValue": {
                    "baseExpression": {
                      "id": 3072,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "22703:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 3074,
                    "indexExpression": {
                      "id": 3073,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3054,
                      "src": "22713:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "22703:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22680:45:10"
                },
                {
                  "assignments": [
                    3077
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3077,
                      "mutability": "mutable",
                      "name": "numberOfSigners",
                      "nodeType": "VariableDeclaration",
                      "scope": 3110,
                      "src": "22735:23:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3076,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "22735:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3082,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "expression": {
                          "id": 3078,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3071,
                          "src": "22761:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 3079,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signersSet",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1448,
                        "src": "22761:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                        }
                      },
                      "id": 3080,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1277,
                      "src": "22761:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                        "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 3081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22761:23:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22735:49:10"
                },
                {
                  "body": {
                    "id": 3108,
                    "nodeType": "Block",
                    "src": "22840:239:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3094,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3054,
                              "src": "22900:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 3096,
                                  "name": "documentKey",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3054,
                                  "src": "22957:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 3100,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3084,
                                      "src": "22988:1:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "expression": {
                                        "id": 3097,
                                        "name": "doc",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3071,
                                        "src": "22970:3:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                          "typeString": "struct EthSign.Document storage pointer"
                                        }
                                      },
                                      "id": 3098,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "signersSet",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1448,
                                      "src": "22970:14:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                                        "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                                      }
                                    },
                                    "id": 3099,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "at",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1304,
                                    "src": "22970:17:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                                      "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"
                                    }
                                  },
                                  "id": 3101,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22970:20:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3095,
                                "name": "hashSaltedAddressMappingKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  1847
                                ],
                                "referencedDeclaration": 1847,
                                "src": "22929:27:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes32,address) view returns (bytes32)"
                                }
                              },
                              "id": 3102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22929:62:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "307830",
                              "id": 3103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23009:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0x0"
                            },
                            {
                              "hexValue": "307830",
                              "id": 3104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23030:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0x0"
                            },
                            {
                              "hexValue": "307830",
                              "id": 3105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23051:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0x0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 3093,
                            "name": "_setDocumentCommentsAsSigner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3199,
                            "src": "22854:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32,bytes32,bytes32,bytes32)"
                            }
                          },
                          "id": 3106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22854:214:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3107,
                        "nodeType": "ExpressionStatement",
                        "src": "22854:214:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3087,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3084,
                      "src": "22814:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 3088,
                      "name": "numberOfSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3077,
                      "src": "22818:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "22814:19:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3109,
                  "initializationExpression": {
                    "assignments": [
                      3084
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3084,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3109,
                        "src": "22799:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3083,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22799:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3086,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "22811:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22799:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "22835:3:10",
                      "subExpression": {
                        "id": 3090,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3084,
                        "src": "22837:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3092,
                    "nodeType": "ExpressionStatement",
                    "src": "22835:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "22794:285:10"
                }
              ]
            },
            "functionSelector": "039a2195",
            "id": 3111,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3058,
                "modifierName": {
                  "id": 3057,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "22527:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22527:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3060,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3054,
                    "src": "22567:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3061,
                "modifierName": {
                  "id": 3059,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "22549:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22549:30:10"
              },
              {
                "arguments": [
                  {
                    "id": 3063,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3054,
                    "src": "22610:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3064,
                "modifierName": {
                  "id": 3062,
                  "name": "documentHasNotExpired",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1639,
                  "src": "22588:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22588:34:10"
              },
              {
                "arguments": [
                  {
                    "id": 3066,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3054,
                    "src": "22653:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3067,
                "modifierName": {
                  "id": 3065,
                  "name": "onlyDocumentInitiator",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1661,
                  "src": "22631:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22631:34:10"
              }
            ],
            "name": "clearDocumentCommentsAsInitiator",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3056,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "22510:8:10"
            },
            "parameters": {
              "id": 3055,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3054,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3111,
                  "src": "22464:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3053,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "22464:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22463:21:10"
            },
            "returnParameters": {
              "id": 3068,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22670:0:10"
            },
            "scope": 3561,
            "src": "22422:663:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3198,
              "nodeType": "Block",
              "src": "23298:999:10",
              "statements": [
                {
                  "assignments": [
                    3126
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3126,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 3198,
                      "src": "23308:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 3125,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 3124,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "23308:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "23308:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3130,
                  "initialValue": {
                    "baseExpression": {
                      "id": 3127,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "23331:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 3129,
                    "indexExpression": {
                      "id": 3128,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3113,
                      "src": "23341:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "23331:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23308:45:10"
                },
                {
                  "assignments": [
                    3132
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3132,
                      "mutability": "mutable",
                      "name": "_saltedAddressMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 3198,
                      "src": "23363:32:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3131,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "23363:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3134,
                  "initialValue": {
                    "id": 3133,
                    "name": "saltedAddressMappingKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3115,
                    "src": "23398:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23363:58:10"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3137,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3135,
                      "name": "_saltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3132,
                      "src": "23435:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "307830",
                      "id": 3136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23463:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0x0"
                    },
                    "src": "23435:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3146,
                  "nodeType": "IfStatement",
                  "src": "23431:176:10",
                  "trueBody": {
                    "expression": {
                      "id": 3144,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 3138,
                        "name": "_saltedAddressMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3132,
                        "src": "23480:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 3140,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3113,
                            "src": "23552:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 3141,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3587
                              ],
                              "referencedDeclaration": 3587,
                              "src": "23581:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 3142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23581:12:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3139,
                          "name": "hashSaltedAddressMappingKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1847
                          ],
                          "referencedDeclaration": 1847,
                          "src": "23507:27:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32,address) view returns (bytes32)"
                          }
                        },
                        "id": 3143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23507:100:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "23480:127:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3145,
                    "nodeType": "ExpressionStatement",
                    "src": "23480:127:10"
                  }
                },
                {
                  "assignments": [
                    3149
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3149,
                      "mutability": "mutable",
                      "name": "si",
                      "nodeType": "VariableDeclaration",
                      "scope": 3198,
                      "src": "23617:22:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 3148,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 3147,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "23617:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "23617:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3154,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 3150,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3126,
                        "src": "23642:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 3151,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "commentsForSaltedAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1476,
                      "src": "23642:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 3153,
                    "indexExpression": {
                      "id": 3152,
                      "name": "_saltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3132,
                      "src": "23684:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "23642:76:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23617:101:10"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 3155,
                        "name": "si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3149,
                        "src": "23732:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 3156,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "23732:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 3157,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23747:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "23732:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3178,
                    "nodeType": "Block",
                    "src": "23970:213:10",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3170,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3587
                                ],
                                "referencedDeclaration": 3587,
                                "src": "24033:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 3171,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24033:12:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3172,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3113,
                              "src": "24063:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3173,
                              "name": "provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3117,
                              "src": "24092:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3174,
                              "name": "storage_id0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3119,
                              "src": "24118:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3175,
                              "name": "storage_id1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3121,
                              "src": "24147:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3169,
                            "name": "LogEditedCommentOnDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4273,
                            "src": "23989:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32,bytes32,bytes32,bytes32)"
                            }
                          },
                          "id": 3176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23989:183:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3177,
                        "nodeType": "EmitStatement",
                        "src": "23984:188:10"
                      }
                    ]
                  },
                  "id": 3179,
                  "nodeType": "IfStatement",
                  "src": "23728:455:10",
                  "trueBody": {
                    "id": 3168,
                    "nodeType": "Block",
                    "src": "23750:214:10",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3160,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3587
                                ],
                                "referencedDeclaration": 3587,
                                "src": "23814:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 3161,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23814:12:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3162,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3113,
                              "src": "23844:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3163,
                              "name": "provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3117,
                              "src": "23873:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3164,
                              "name": "storage_id0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3119,
                              "src": "23899:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3165,
                              "name": "storage_id1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3121,
                              "src": "23928:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3159,
                            "name": "LogLeftNewCommentOnDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4261,
                            "src": "23769:27:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32,bytes32,bytes32,bytes32)"
                            }
                          },
                          "id": 3166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23769:184:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3167,
                        "nodeType": "EmitStatement",
                        "src": "23764:189:10"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 3184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 3180,
                        "name": "si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3149,
                        "src": "24192:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 3182,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "24192:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3183,
                      "name": "provider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3117,
                      "src": "24206:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "24192:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3185,
                  "nodeType": "ExpressionStatement",
                  "src": "24192:22:10"
                },
                {
                  "expression": {
                    "id": 3190,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 3186,
                        "name": "si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3149,
                        "src": "24224:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 3188,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id0",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3952,
                      "src": "24224:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3189,
                      "name": "storage_id0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3119,
                      "src": "24241:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "24224:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3191,
                  "nodeType": "ExpressionStatement",
                  "src": "24224:28:10"
                },
                {
                  "expression": {
                    "id": 3196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 3192,
                        "name": "si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3149,
                        "src": "24262:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 3194,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3954,
                      "src": "24262:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3195,
                      "name": "storage_id1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3121,
                      "src": "24279:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "24262:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3197,
                  "nodeType": "ExpressionStatement",
                  "src": "24262:28:10"
                }
              ]
            },
            "id": 3199,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setDocumentCommentsAsSigner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3113,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3199,
                  "src": "23138:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3112,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "23138:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3115,
                  "mutability": "mutable",
                  "name": "saltedAddressMappingKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3199,
                  "src": "23167:31:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3114,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "23167:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3117,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "scope": 3199,
                  "src": "23208:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3116,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "23208:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3119,
                  "mutability": "mutable",
                  "name": "storage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 3199,
                  "src": "23234:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3118,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "23234:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3121,
                  "mutability": "mutable",
                  "name": "storage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3199,
                  "src": "23263:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3120,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "23263:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23128:160:10"
            },
            "returnParameters": {
              "id": 3123,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23298:0:10"
            },
            "scope": 3561,
            "src": "23091:1206:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3215,
              "nodeType": "Block",
              "src": "24432:68:10",
              "statements": [
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3210,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3587
                          ],
                          "referencedDeclaration": 3587,
                          "src": "24467:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                            "typeString": "function () view returns (address)"
                          }
                        },
                        "id": 3211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24467:12:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3212,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3201,
                        "src": "24481:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3209,
                      "name": "LogArchivedDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4279,
                      "src": "24447:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 3213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24447:46:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3214,
                  "nodeType": "EmitStatement",
                  "src": "24442:51:10"
                }
              ]
            },
            "id": 3216,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3204,
                "modifierName": {
                  "id": 3203,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "24375:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "24375:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3206,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3201,
                    "src": "24415:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3207,
                "modifierName": {
                  "id": 3205,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "24397:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "24397:30:10"
              }
            ],
            "name": "_archiveDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3201,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3216,
                  "src": "24329:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3200,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "24329:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24328:21:10"
            },
            "returnParameters": {
              "id": 3208,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24432:0:10"
            },
            "scope": 3561,
            "src": "24303:197:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              4179
            ],
            "body": {
              "id": 3242,
              "nodeType": "Block",
              "src": "24603:124:10",
              "statements": [
                {
                  "body": {
                    "id": 3240,
                    "nodeType": "Block",
                    "src": "24663:58:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 3235,
                                "name": "documentKeys",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3219,
                                "src": "24694:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                  "typeString": "bytes32[] calldata"
                                }
                              },
                              "id": 3237,
                              "indexExpression": {
                                "id": 3236,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3224,
                                "src": "24707:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24694:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3234,
                            "name": "_archiveDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3216,
                            "src": "24677:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 3238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24677:33:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3239,
                        "nodeType": "ExpressionStatement",
                        "src": "24677:33:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3227,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3224,
                      "src": "24633:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3228,
                        "name": "documentKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3219,
                        "src": "24637:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      "id": 3229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "24637:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "24633:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3241,
                  "initializationExpression": {
                    "assignments": [
                      3224
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3224,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3241,
                        "src": "24618:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3223,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24618:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3226,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3225,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24630:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "24618:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3232,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "24658:3:10",
                      "subExpression": {
                        "id": 3231,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "24660:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3233,
                    "nodeType": "ExpressionStatement",
                    "src": "24658:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "24613:108:10"
                }
              ]
            },
            "functionSelector": "14036eca",
            "id": 3243,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "archiveDocuments",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3221,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "24590:8:10"
            },
            "parameters": {
              "id": 3220,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3219,
                  "mutability": "mutable",
                  "name": "documentKeys",
                  "nodeType": "VariableDeclaration",
                  "scope": 3243,
                  "src": "24532:31:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3217,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "24532:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3218,
                    "nodeType": "ArrayTypeName",
                    "src": "24532:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24531:33:10"
            },
            "returnParameters": {
              "id": 3222,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24603:0:10"
            },
            "scope": 3561,
            "src": "24506:221:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4124
            ],
            "body": {
              "id": 3367,
              "nodeType": "Block",
              "src": "25159:972:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3279,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 3275,
                            "name": "signers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3262,
                            "src": "25177:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 3276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "25177:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 3277,
                            "name": "numOfSigFields",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3265,
                            "src": "25195:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 3278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "25195:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "25177:39:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4241445f415252415953",
                        "id": 3280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25218:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8d3abf6957467ba1296751ef18ad93f3af995856323280442481f13ba501b7fd",
                          "typeString": "literal_string \"BAD_ARRAYS\""
                        },
                        "value": "BAD_ARRAYS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8d3abf6957467ba1296751ef18ad93f3af995856323280442481f13ba501b7fd",
                          "typeString": "literal_string \"BAD_ARRAYS\""
                        }
                      ],
                      "id": 3274,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "25169:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25169:62:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3282,
                  "nodeType": "ExpressionStatement",
                  "src": "25169:62:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3284,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3245,
                        "src": "25259:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3285,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3247,
                        "src": "25272:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3286,
                        "name": "expiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3249,
                        "src": "25278:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3287,
                        "name": "numOfSigners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3251,
                        "src": "25290:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3283,
                      "name": "_newBasicDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2706,
                      "src": "25241:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,bytes32,uint256,uint256)"
                      }
                    },
                    "id": 3288,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25241:62:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3289,
                  "nodeType": "ExpressionStatement",
                  "src": "25241:62:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3291,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3245,
                        "src": "25352:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3292,
                          "name": "providers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3255,
                          "src": "25377:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3294,
                        "indexExpression": {
                          "hexValue": "30",
                          "id": 3293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25387:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25377:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3295,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25403:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3297,
                        "indexExpression": {
                          "hexValue": "30",
                          "id": 3296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25415:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25403:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3298,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25431:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3300,
                        "indexExpression": {
                          "hexValue": "31",
                          "id": 3299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25443:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25431:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3290,
                      "name": "_setDocStorageForDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2784,
                      "src": "25313:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 3301,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25313:142:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3302,
                  "nodeType": "ExpressionStatement",
                  "src": "25313:142:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3304,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3245,
                        "src": "25505:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3305,
                          "name": "providers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3255,
                          "src": "25530:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3307,
                        "indexExpression": {
                          "hexValue": "31",
                          "id": 3306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25540:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25530:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3308,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25556:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3310,
                        "indexExpression": {
                          "hexValue": "32",
                          "id": 3309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25568:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25556:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3311,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25584:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3313,
                        "indexExpression": {
                          "hexValue": "33",
                          "id": 3312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25596:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25584:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3303,
                      "name": "_setMetaStorageForDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2838,
                      "src": "25465:26:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 3314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25465:143:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3315,
                  "nodeType": "ExpressionStatement",
                  "src": "25465:143:10"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 3316,
                        "name": "providers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3255,
                        "src": "25622:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                          "typeString": "bytes32[3] calldata"
                        }
                      },
                      "id": 3318,
                      "indexExpression": {
                        "hexValue": "32",
                        "id": 3317,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25632:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "25622:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "307830",
                      "id": 3319,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25638:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0x0"
                    },
                    "src": "25622:19:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3322,
                  "nodeType": "IfStatement",
                  "src": "25618:32:10",
                  "trueBody": {
                    "functionReturnParameters": 3273,
                    "id": 3321,
                    "nodeType": "Return",
                    "src": "25643:7:10"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3324,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3245,
                        "src": "25701:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "hexValue": "307830",
                        "id": 3325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25726:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0x0"
                      },
                      {
                        "baseExpression": {
                          "id": 3326,
                          "name": "providers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3255,
                          "src": "25743:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3328,
                        "indexExpression": {
                          "hexValue": "32",
                          "id": 3327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25753:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25743:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3329,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25769:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3331,
                        "indexExpression": {
                          "hexValue": "34",
                          "id": 3330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25781:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25769:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3332,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25797:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3334,
                        "indexExpression": {
                          "hexValue": "35",
                          "id": 3333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25809:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          "value": "5"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25797:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3323,
                      "name": "_setDocumentCommentsAsSigner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3199,
                      "src": "25659:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 3335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25659:162:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3336,
                  "nodeType": "ExpressionStatement",
                  "src": "25659:162:10"
                },
                {
                  "body": {
                    "id": 3365,
                    "nodeType": "Block",
                    "src": "25876:249:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3349,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3245,
                              "src": "25912:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3350,
                                "name": "signers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3262,
                                "src": "25925:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3352,
                              "indexExpression": {
                                "id": 3351,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3338,
                                "src": "25933:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "25925:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3348,
                            "name": "_addSignerForDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2734,
                            "src": "25890:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25890:46:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3354,
                        "nodeType": "ExpressionStatement",
                        "src": "25890:46:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3356,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3245,
                              "src": "26026:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3357,
                                "name": "signers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3262,
                                "src": "26055:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3359,
                              "indexExpression": {
                                "id": 3358,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3338,
                                "src": "26063:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26055:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3360,
                                "name": "numOfSigFields",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3265,
                                "src": "26083:14:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3362,
                              "indexExpression": {
                                "id": 3361,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3338,
                                "src": "26098:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26083:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3355,
                            "name": "_setNumberOfSignatureFieldsAsInitiatorForSignerForDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2886,
                            "src": "25950:58:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,uint256)"
                            }
                          },
                          "id": 3363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25950:164:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3364,
                        "nodeType": "ExpressionStatement",
                        "src": "25950:164:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3341,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3338,
                      "src": "25851:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3342,
                        "name": "signers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3262,
                        "src": "25855:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 3343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "25855:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "25851:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3366,
                  "initializationExpression": {
                    "assignments": [
                      3338
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3338,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3366,
                        "src": "25836:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3337,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25836:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3340,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3339,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25848:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "25836:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "25871:3:10",
                      "subExpression": {
                        "id": 3345,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3338,
                        "src": "25873:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3347,
                    "nodeType": "ExpressionStatement",
                    "src": "25871:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "25831:294:10"
                }
              ]
            },
            "functionSelector": "c26ce544",
            "id": 3368,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3269,
                "modifierName": {
                  "id": 3268,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "25111:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "25111:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3271,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3245,
                    "src": "25146:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3272,
                "modifierName": {
                  "id": 3270,
                  "name": "documentDoesNotExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1597,
                  "src": "25125:20:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "25125:33:10"
              }
            ],
            "name": "aggregateNewBasicDocumentAndSetStorage",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3267,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "25102:8:10"
            },
            "parameters": {
              "id": 3266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3245,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24828:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3244,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "24828:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3247,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24857:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3246,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "24857:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3249,
                  "mutability": "mutable",
                  "name": "expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24879:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3248,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24879:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3251,
                  "mutability": "mutable",
                  "name": "numOfSigners",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24907:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3250,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24907:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3255,
                  "mutability": "mutable",
                  "name": "providers",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24937:29:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                    "typeString": "bytes32[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3252,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "24937:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3254,
                    "length": {
                      "hexValue": "33",
                      "id": 3253,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24945:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24937:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                      "typeString": "bytes32[3]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3259,
                  "mutability": "mutable",
                  "name": "storage_ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24976:31:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                    "typeString": "bytes32[6]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3256,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "24976:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3258,
                    "length": {
                      "hexValue": "36",
                      "id": 3257,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24984:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_6_by_1",
                        "typeString": "int_const 6"
                      },
                      "value": "6"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24976:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$6_storage_ptr",
                      "typeString": "bytes32[6]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3262,
                  "mutability": "mutable",
                  "name": "signers",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "25017:26:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3260,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "25017:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3261,
                    "nodeType": "ArrayTypeName",
                    "src": "25017:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3265,
                  "mutability": "mutable",
                  "name": "numOfSigFields",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "25053:33:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3263,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "25053:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3264,
                    "nodeType": "ArrayTypeName",
                    "src": "25053:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24818:274:10"
            },
            "returnParameters": {
              "id": 3273,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25159:0:10"
            },
            "scope": 3561,
            "src": "24771:1360:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4138
            ],
            "body": {
              "id": 3418,
              "nodeType": "Block",
              "src": "26502:260:10",
              "statements": [
                {
                  "body": {
                    "id": 3416,
                    "nodeType": "Block",
                    "src": "26560:196:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3406,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3370,
                              "src": "26637:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3407,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3372,
                              "src": "26666:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3408,
                                "name": "indices",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3375,
                                "src": "26690:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3410,
                              "indexExpression": {
                                "id": 3409,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3395,
                                "src": "26698:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26690:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3411,
                                "name": "signatures",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3378,
                                "src": "26718:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "bytes calldata[] calldata"
                                }
                              },
                              "id": 3413,
                              "indexExpression": {
                                "id": 3412,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3395,
                                "src": "26729:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26718:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3405,
                            "name": "_setSignatureFieldAtIndexForSignerForDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3018,
                            "src": "26574:45:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$",
                              "typeString": "function (bytes32,address,uint256,bytes calldata)"
                            }
                          },
                          "id": 3414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26574:171:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3415,
                        "nodeType": "ExpressionStatement",
                        "src": "26574:171:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3398,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3395,
                      "src": "26532:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3399,
                        "name": "signatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3378,
                        "src": "26536:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes calldata[] calldata"
                        }
                      },
                      "id": 3400,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "26536:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "26532:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3417,
                  "initializationExpression": {
                    "assignments": [
                      3395
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3395,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3417,
                        "src": "26517:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3394,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26517:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3397,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26529:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "26517:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "26555:3:10",
                      "subExpression": {
                        "id": 3402,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3395,
                        "src": "26557:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3404,
                    "nodeType": "ExpressionStatement",
                    "src": "26555:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "26512:244:10"
                }
              ]
            },
            "functionSelector": "b9c38e6b",
            "id": 3419,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3382,
                "modifierName": {
                  "id": 3381,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "26352:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "26352:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3384,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3370,
                    "src": "26392:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3385,
                "modifierName": {
                  "id": 3383,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "26374:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "26374:30:10"
              },
              {
                "arguments": [
                  {
                    "id": 3387,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3370,
                    "src": "26435:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3388,
                "modifierName": {
                  "id": 3386,
                  "name": "documentHasNotExpired",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1639,
                  "src": "26413:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "26413:34:10"
              },
              {
                "arguments": [
                  {
                    "id": 3390,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3370,
                    "src": "26477:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "id": 3391,
                    "name": "signer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3372,
                    "src": "26490:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3392,
                "modifierName": {
                  "id": 3389,
                  "name": "onlyAuthorizedSigner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1685,
                  "src": "26456:20:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "26456:41:10"
              }
            ],
            "name": "aggregateSetSigFieldForDocument",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3380,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "26335:8:10"
            },
            "parameters": {
              "id": 3379,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3370,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3419,
                  "src": "26187:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3369,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "26187:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3372,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3419,
                  "src": "26216:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3371,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "26216:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3375,
                  "mutability": "mutable",
                  "name": "indices",
                  "nodeType": "VariableDeclaration",
                  "scope": 3419,
                  "src": "26240:26:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3373,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "26240:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3374,
                    "nodeType": "ArrayTypeName",
                    "src": "26240:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3378,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "scope": 3419,
                  "src": "26276:27:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3376,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "26276:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 3377,
                    "nodeType": "ArrayTypeName",
                    "src": "26276:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26177:132:10"
            },
            "returnParameters": {
              "id": 3393,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26502:0:10"
            },
            "scope": 3561,
            "src": "26137:625:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4154
            ],
            "body": {
              "id": 3496,
              "nodeType": "Block",
              "src": "27165:508:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3453,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 3449,
                            "name": "indices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3424,
                            "src": "27183:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 3450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "27183:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 3451,
                            "name": "signatures",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3427,
                            "src": "27201:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "bytes calldata[] calldata"
                            }
                          },
                          "id": 3452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "27201:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "27183:35:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "53495a455f4d49534d41544348",
                        "id": 3454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "27220:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c97495c692b355e48c58442067cc6751cfbb74c936e2925634aac300cf5246f7",
                          "typeString": "literal_string \"SIZE_MISMATCH\""
                        },
                        "value": "SIZE_MISMATCH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c97495c692b355e48c58442067cc6751cfbb74c936e2925634aac300cf5246f7",
                          "typeString": "literal_string \"SIZE_MISMATCH\""
                        }
                      ],
                      "id": 3448,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "27175:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27175:61:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3456,
                  "nodeType": "ExpressionStatement",
                  "src": "27175:61:10"
                },
                {
                  "body": {
                    "id": 3480,
                    "nodeType": "Block",
                    "src": "27291:202:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3469,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3421,
                              "src": "27368:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3470,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3587
                                ],
                                "referencedDeclaration": 3587,
                                "src": "27397:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 3471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27397:12:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3472,
                                "name": "indices",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3424,
                                "src": "27427:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3474,
                              "indexExpression": {
                                "id": 3473,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3458,
                                "src": "27435:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "27427:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3475,
                                "name": "signatures",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3427,
                                "src": "27455:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "bytes calldata[] calldata"
                                }
                              },
                              "id": 3477,
                              "indexExpression": {
                                "id": 3476,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3458,
                                "src": "27466:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "27455:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3468,
                            "name": "_setSignatureFieldAtIndexForSignerForDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3018,
                            "src": "27305:45:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$",
                              "typeString": "function (bytes32,address,uint256,bytes calldata)"
                            }
                          },
                          "id": 3478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27305:177:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3479,
                        "nodeType": "ExpressionStatement",
                        "src": "27305:177:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3461,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3458,
                      "src": "27266:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3462,
                        "name": "indices",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3424,
                        "src": "27270:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 3463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "27270:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "27266:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3481,
                  "initializationExpression": {
                    "assignments": [
                      3458
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3458,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3481,
                        "src": "27251:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3457,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27251:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3460,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "27263:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "27251:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3466,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "27286:3:10",
                      "subExpression": {
                        "id": 3465,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3458,
                        "src": "27288:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3467,
                    "nodeType": "ExpressionStatement",
                    "src": "27286:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "27246:247:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3483,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3421,
                        "src": "27544:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "hexValue": "307830",
                        "id": 3484,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "27569:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0x0"
                      },
                      {
                        "baseExpression": {
                          "id": 3485,
                          "name": "storageInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3431,
                          "src": "27586:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3487,
                        "indexExpression": {
                          "hexValue": "30",
                          "id": 3486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "27598:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "27586:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3488,
                          "name": "storageInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3431,
                          "src": "27614:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3490,
                        "indexExpression": {
                          "hexValue": "31",
                          "id": 3489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "27626:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "27614:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3491,
                          "name": "storageInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3431,
                          "src": "27642:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3493,
                        "indexExpression": {
                          "hexValue": "32",
                          "id": 3492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "27654:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "27642:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3482,
                      "name": "_setDocumentCommentsAsSigner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3199,
                      "src": "27502:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 3494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27502:164:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3495,
                  "nodeType": "ExpressionStatement",
                  "src": "27502:164:10"
                }
              ]
            },
            "functionSelector": "7ea95f21",
            "id": 3497,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3435,
                "modifierName": {
                  "id": 3434,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "27009:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27009:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3437,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3421,
                    "src": "27049:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3438,
                "modifierName": {
                  "id": 3436,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "27031:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27031:30:10"
              },
              {
                "arguments": [
                  {
                    "id": 3440,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3421,
                    "src": "27092:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3441,
                "modifierName": {
                  "id": 3439,
                  "name": "documentHasNotExpired",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1639,
                  "src": "27070:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27070:34:10"
              },
              {
                "arguments": [
                  {
                    "id": 3443,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3421,
                    "src": "27134:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3444,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3587
                      ],
                      "referencedDeclaration": 3587,
                      "src": "27147:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 3445,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27147:12:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3446,
                "modifierName": {
                  "id": 3442,
                  "name": "onlyAuthorizedSigner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1685,
                  "src": "27113:20:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27113:47:10"
              }
            ],
            "name": "aggregateSetSigFieldsAndCommentsAsSigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3433,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "26992:8:10"
            },
            "parameters": {
              "id": 3432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3421,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3497,
                  "src": "26827:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3420,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "26827:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3424,
                  "mutability": "mutable",
                  "name": "indices",
                  "nodeType": "VariableDeclaration",
                  "scope": 3497,
                  "src": "26856:26:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3422,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "26856:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3423,
                    "nodeType": "ArrayTypeName",
                    "src": "26856:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3427,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "scope": 3497,
                  "src": "26892:27:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3425,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "26892:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 3426,
                    "nodeType": "ArrayTypeName",
                    "src": "26892:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3431,
                  "mutability": "mutable",
                  "name": "storageInfo",
                  "nodeType": "VariableDeclaration",
                  "scope": 3497,
                  "src": "26929:31:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                    "typeString": "bytes32[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3428,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "26929:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3430,
                    "length": {
                      "hexValue": "33",
                      "id": 3429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26937:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "26929:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                      "typeString": "bytes32[3]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26817:149:10"
            },
            "returnParameters": {
              "id": 3447,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27165:0:10"
            },
            "scope": 3561,
            "src": "26768:905:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4189
            ],
            "body": {
              "id": 3559,
              "nodeType": "Block",
              "src": "27973:448:10",
              "statements": [
                {
                  "assignments": [
                    3517
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3517,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 3559,
                      "src": "27983:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 3516,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 3515,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "27983:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "27983:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3521,
                  "initialValue": {
                    "baseExpression": {
                      "id": 3518,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "28006:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 3520,
                    "indexExpression": {
                      "id": 3519,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3499,
                      "src": "28016:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "28006:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "27983:45:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 3523,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3517,
                                "src": "28046:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 3524,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "signersSet",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1448,
                              "src": "28046:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                                "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                              }
                            },
                            "id": 3525,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1277,
                            "src": "28046:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                              "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 3526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28046:23:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 3527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "28073:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "28046:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e4f545f4e45575f444f43",
                        "id": 3529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "28076:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0833b8da435b4774deaf9c0b8af2f02e44f922a8b0a66b9db19d730bab49c85d",
                          "typeString": "literal_string \"NOT_NEW_DOC\""
                        },
                        "value": "NOT_NEW_DOC"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0833b8da435b4774deaf9c0b8af2f02e44f922a8b0a66b9db19d730bab49c85d",
                          "typeString": "literal_string \"NOT_NEW_DOC\""
                        }
                      ],
                      "id": 3522,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "28038:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28038:52:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3531,
                  "nodeType": "ExpressionStatement",
                  "src": "28038:52:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 3534,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3517,
                              "src": "28162:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 3535,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initiator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1478,
                            "src": "28162:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 3539,
                                    "name": "documentKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3499,
                                    "src": "28214:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3540,
                                    "name": "newInitiator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3501,
                                    "src": "28227:12:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3537,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967295,
                                    "src": "28203:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 3538,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "28203:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 3541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28203:37:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3536,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967288,
                              "src": "28193:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3542,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28193:48:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 3543,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "28259:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "id": 3533,
                          "name": "verifyECSignatureSigner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3685,
                          "src": "28121:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,bytes calldata) view returns (bool)"
                          }
                        },
                        "id": 3544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28121:161:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4241445f534947",
                        "id": 3545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "28296:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2f79dddb865e0424b8eb3c1efff01af8995554e47bceb5a06723511381ab40f9",
                          "typeString": "literal_string \"BAD_SIG\""
                        },
                        "value": "BAD_SIG"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2f79dddb865e0424b8eb3c1efff01af8995554e47bceb5a06723511381ab40f9",
                          "typeString": "literal_string \"BAD_SIG\""
                        }
                      ],
                      "id": 3532,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "28100:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28100:215:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3547,
                  "nodeType": "ExpressionStatement",
                  "src": "28100:215:10"
                },
                {
                  "expression": {
                    "id": 3552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 3548,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3517,
                        "src": "28325:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 3550,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "initiator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1478,
                      "src": "28325:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3551,
                      "name": "newInitiator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3501,
                      "src": "28341:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "28325:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3553,
                  "nodeType": "ExpressionStatement",
                  "src": "28325:28:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 3555,
                        "name": "newInitiator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3501,
                        "src": "28388:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3556,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3499,
                        "src": "28402:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3554,
                      "name": "LogChangedInitiator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4285,
                      "src": "28368:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 3557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28368:46:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3558,
                  "nodeType": "EmitStatement",
                  "src": "28363:51:10"
                }
              ]
            },
            "functionSelector": "44a2953c",
            "id": 3560,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3507,
                "modifierName": {
                  "id": 3506,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "27873:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27873:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3509,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3499,
                    "src": "27913:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3510,
                "modifierName": {
                  "id": 3508,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "27895:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27895:30:10"
              },
              {
                "arguments": [
                  {
                    "id": 3512,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3499,
                    "src": "27956:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3513,
                "modifierName": {
                  "id": 3511,
                  "name": "documentHasNotExpired",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1639,
                  "src": "27934:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27934:34:10"
              }
            ],
            "name": "changeInitiator",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3505,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "27856:8:10"
            },
            "parameters": {
              "id": 3504,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3499,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3560,
                  "src": "27741:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3498,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "27741:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3501,
                  "mutability": "mutable",
                  "name": "newInitiator",
                  "nodeType": "VariableDeclaration",
                  "scope": 3560,
                  "src": "27770:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3500,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27770:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3503,
                  "mutability": "mutable",
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 3560,
                  "src": "27800:24:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3502,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "27800:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27731:99:10"
            },
            "returnParameters": {
              "id": 3514,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27973:0:10"
            },
            "scope": 3561,
            "src": "27707:714:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 3562,
        "src": "487:27936:10"
      }
    ],
    "src": "38:28386:10"
  },
  "legacyAST": {
    "absolutePath": "project:/contracts/EthSign.sol",
    "exportedSymbols": {
      "AddressUpgradeable": [
        647
      ],
      "ContextUpgradeable": [
        692
      ],
      "ECDSAUpgradeable": [
        836
      ],
      "ERC2771ContextUpgradeable": [
        244
      ],
      "EnumerableSetUpgradeable": [
        1408
      ],
      "EthSign": [
        3561
      ],
      "EthSignCommonFramework": [
        3700
      ],
      "EthSignUtils": [
        3945
      ],
      "IERC1271Upgradeable": [
        144
      ],
      "IEthSign": [
        4286
      ],
      "Initializable": [
        290
      ],
      "OwnableUpgradeable": [
        130
      ],
      "PausableUpgradeable": [
        403
      ],
      "SignatureCheckerUpgradeable": [
        895
      ]
    },
    "id": 3562,
    "license": "UNLICENSED",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1410,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "38:23:10"
      },
      {
        "absolutePath": "project:/contracts/IEthSign.sol",
        "file": "./IEthSign.sol",
        "id": 1411,
        "nodeType": "ImportDirective",
        "scope": 3562,
        "sourceUnit": 4287,
        "src": "63:24:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/EthSignUtils.sol",
        "file": "./EthSignUtils.sol",
        "id": 1412,
        "nodeType": "ImportDirective",
        "scope": 3562,
        "sourceUnit": 3946,
        "src": "88:28:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/EthSignCommonFramework.sol",
        "file": "./EthSignCommonFramework.sol",
        "id": 1413,
        "nodeType": "ImportDirective",
        "scope": 3562,
        "sourceUnit": 3701,
        "src": "117:38:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol",
        "id": 1414,
        "nodeType": "ImportDirective",
        "scope": 3562,
        "sourceUnit": 1409,
        "src": "156:88:10",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 1416,
              "name": "IEthSign",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 4286,
              "src": "507:8:10"
            },
            "id": 1417,
            "nodeType": "InheritanceSpecifier",
            "src": "507:8:10"
          },
          {
            "baseName": {
              "id": 1418,
              "name": "EthSignUtils",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 3945,
              "src": "517:12:10"
            },
            "id": 1419,
            "nodeType": "InheritanceSpecifier",
            "src": "517:12:10"
          },
          {
            "baseName": {
              "id": 1420,
              "name": "EthSignCommonFramework",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 3700,
              "src": "531:22:10"
            },
            "id": 1421,
            "nodeType": "InheritanceSpecifier",
            "src": "531:22:10"
          }
        ],
        "contractDependencies": [
          130,
          244,
          290,
          403,
          692,
          3700,
          3945,
          4286
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 1415,
          "nodeType": "StructuredDocumentation",
          "src": "280:206:10",
          "text": " @title EthSign 3.0\n @dev EthSign 3.0 Smart Contract with ERC2771 compliance.\n Please read this before modifying storage: https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable"
        },
        "fullyImplemented": true,
        "id": 3561,
        "linearizedBaseContracts": [
          3561,
          3700,
          244,
          403,
          130,
          692,
          290,
          3945,
          4286
        ],
        "name": "EthSign",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1425,
            "libraryName": {
              "id": 1422,
              "name": "EnumerableSetUpgradeable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 1408,
              "src": "566:24:10"
            },
            "nodeType": "UsingForDirective",
            "src": "560:71:10",
            "typeName": {
              "id": 1424,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 1423,
                "name": "EnumerableSetUpgradeable.AddressSet",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 1181,
                "src": "595:35:10"
              },
              "referencedDeclaration": 1181,
              "src": "595:35:10",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                "typeString": "struct EnumerableSetUpgradeable.AddressSet"
              }
            }
          },
          {
            "id": 1429,
            "libraryName": {
              "id": 1426,
              "name": "EnumerableSetUpgradeable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 1408,
              "src": "642:24:10"
            },
            "nodeType": "UsingForDirective",
            "src": "636:71:10",
            "typeName": {
              "id": 1428,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 1427,
                "name": "EnumerableSetUpgradeable.Bytes32Set",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 1090,
                "src": "671:35:10"
              },
              "referencedDeclaration": 1090,
              "src": "671:35:10",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
              }
            }
          },
          {
            "canonicalName": "EthSign.ECSignature",
            "id": 1436,
            "members": [
              {
                "constant": false,
                "id": 1431,
                "mutability": "mutable",
                "name": "r",
                "nodeType": "VariableDeclaration",
                "scope": 1436,
                "src": "742:9:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1430,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "742:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1433,
                "mutability": "mutable",
                "name": "s",
                "nodeType": "VariableDeclaration",
                "scope": 1436,
                "src": "761:9:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1432,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "761:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1435,
                "mutability": "mutable",
                "name": "v",
                "nodeType": "VariableDeclaration",
                "scope": 1436,
                "src": "780:7:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 1434,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "780:5:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "ECSignature",
            "nodeType": "StructDefinition",
            "scope": 3561,
            "src": "713:81:10",
            "visibility": "public"
          },
          {
            "canonicalName": "EthSign.Document",
            "id": 1481,
            "members": [
              {
                "constant": false,
                "id": 1438,
                "mutability": "mutable",
                "name": "birth",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "826:13:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1437,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "826:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1440,
                "mutability": "mutable",
                "name": "expiration",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "849:18:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1439,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "849:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1442,
                "mutability": "mutable",
                "name": "numOfSigners",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "877:20:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1441,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "877:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1445,
                "mutability": "mutable",
                "name": "docStorageInfo",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "907:26:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                  "typeString": "struct IEthSign.StorageInfo"
                },
                "typeName": {
                  "id": 1444,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 1443,
                    "name": "StorageInfo",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3955,
                    "src": "907:11:10"
                  },
                  "referencedDeclaration": 3955,
                  "src": "907:11:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                    "typeString": "struct IEthSign.StorageInfo"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1448,
                "mutability": "mutable",
                "name": "signersSet",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "943:46:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                },
                "typeName": {
                  "id": 1447,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 1446,
                    "name": "EnumerableSetUpgradeable.AddressSet",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1181,
                    "src": "943:35:10"
                  },
                  "referencedDeclaration": 1181,
                  "src": "943:35:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                    "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1453,
                "mutability": "mutable",
                "name": "metadataStorageInfoForSaltedDocument",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1548:68:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                  "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo)"
                },
                "typeName": {
                  "id": 1452,
                  "keyType": {
                    "id": 1449,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1556:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1548:31:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                    "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo)"
                  },
                  "valueType": {
                    "id": 1451,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 1450,
                      "name": "StorageInfo",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3955,
                      "src": "1567:11:10"
                    },
                    "referencedDeclaration": 3955,
                    "src": "1567:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                      "typeString": "struct IEthSign.StorageInfo"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1458,
                "mutability": "mutable",
                "name": "numOfSignedSignersSetForSaltedMetaDocument",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1626:98:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$1181_storage_$",
                  "typeString": "mapping(bytes32 => struct EnumerableSetUpgradeable.AddressSet)"
                },
                "typeName": {
                  "id": 1457,
                  "keyType": {
                    "id": 1454,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1634:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1626:55:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$1181_storage_$",
                    "typeString": "mapping(bytes32 => struct EnumerableSetUpgradeable.AddressSet)"
                  },
                  "valueType": {
                    "id": 1456,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 1455,
                      "name": "EnumerableSetUpgradeable.AddressSet",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1181,
                      "src": "1645:35:10"
                    },
                    "referencedDeclaration": 1181,
                    "src": "1645:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                      "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1462,
                "mutability": "mutable",
                "name": "numOfSignatureFieldsForSaltedAddress",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1734:64:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 1461,
                  "keyType": {
                    "id": 1459,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1742:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1734:27:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 1460,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1753:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1466,
                "mutability": "mutable",
                "name": "numOfSignedSignatureFieldsForSaltedAddress",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1808:70:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                  "typeString": "mapping(bytes32 => uint256)"
                },
                "typeName": {
                  "id": 1465,
                  "keyType": {
                    "id": 1463,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1816:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1808:27:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                    "typeString": "mapping(bytes32 => uint256)"
                  },
                  "valueType": {
                    "id": 1464,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1827:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1471,
                "mutability": "mutable",
                "name": "signatureFieldForSaltedAddressWithIndex",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1888:71:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ECSignature_$1436_storage_$",
                  "typeString": "mapping(bytes32 => struct EthSign.ECSignature)"
                },
                "typeName": {
                  "id": 1470,
                  "keyType": {
                    "id": 1467,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1896:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1888:31:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ECSignature_$1436_storage_$",
                    "typeString": "mapping(bytes32 => struct EthSign.ECSignature)"
                  },
                  "valueType": {
                    "id": 1469,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 1468,
                      "name": "ECSignature",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1436,
                      "src": "1907:11:10"
                    },
                    "referencedDeclaration": 1436,
                    "src": "1907:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                      "typeString": "struct EthSign.ECSignature"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1476,
                "mutability": "mutable",
                "name": "commentsForSaltedAddress",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "1969:56:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                  "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo)"
                },
                "typeName": {
                  "id": 1475,
                  "keyType": {
                    "id": 1472,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1977:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1969:31:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                    "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo)"
                  },
                  "valueType": {
                    "id": 1474,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 1473,
                      "name": "StorageInfo",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3955,
                      "src": "1988:11:10"
                    },
                    "referencedDeclaration": 3955,
                    "src": "1988:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                      "typeString": "struct IEthSign.StorageInfo"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1478,
                "mutability": "mutable",
                "name": "initiator",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "2035:17:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 1477,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "2035:7:10",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1480,
                "mutability": "mutable",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "scope": 1481,
                "src": "2062:12:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 1479,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "2062:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Document",
            "nodeType": "StructDefinition",
            "scope": 3561,
            "src": "800:1281:10",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1486,
            "mutability": "mutable",
            "name": "documents",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2087:38:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
              "typeString": "mapping(bytes32 => struct EthSign.Document)"
            },
            "typeName": {
              "id": 1485,
              "keyType": {
                "id": 1482,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "2095:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "2087:28:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                "typeString": "mapping(bytes32 => struct EthSign.Document)"
              },
              "valueType": {
                "id": 1484,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1483,
                  "name": "Document",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1481,
                  "src": "2106:8:10"
                },
                "referencedDeclaration": 1481,
                "src": "2106:8:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                  "typeString": "struct EthSign.Document"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1491,
            "mutability": "mutable",
            "name": "createdByMe",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2183:67:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1490,
              "keyType": {
                "id": 1487,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2191:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2183:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1489,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1488,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2202:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2202:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1496,
            "mutability": "mutable",
            "name": "sharedWithMe",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2282:68:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1495,
              "keyType": {
                "id": 1492,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2290:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2282:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1494,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1493,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2301:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2301:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1501,
            "mutability": "mutable",
            "name": "archived",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2382:64:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1500,
              "keyType": {
                "id": 1497,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2390:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2382:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1499,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1498,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2401:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2401:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1506,
            "mutability": "mutable",
            "name": "bytesBucket0",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2517:68:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1505,
              "keyType": {
                "id": 1502,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2525:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2517:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1504,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1503,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2536:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2536:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1511,
            "mutability": "mutable",
            "name": "bytesBucket1",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2591:68:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1510,
              "keyType": {
                "id": 1507,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2599:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2591:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1509,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1508,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2610:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2610:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1516,
            "mutability": "mutable",
            "name": "bytesBucket2",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2665:68:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
            },
            "typeName": {
              "id": 1515,
              "keyType": {
                "id": 1512,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2673:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2665:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Bytes32Set_$1090_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.Bytes32Set)"
              },
              "valueType": {
                "id": 1514,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1513,
                  "name": "EnumerableSetUpgradeable.Bytes32Set",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1090,
                  "src": "2684:35:10"
                },
                "referencedDeclaration": 1090,
                "src": "2684:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Bytes32Set_$1090_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.Bytes32Set"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1521,
            "mutability": "mutable",
            "name": "addressBucket0",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2739:70:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
            },
            "typeName": {
              "id": 1520,
              "keyType": {
                "id": 1517,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2747:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2739:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
              },
              "valueType": {
                "id": 1519,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1518,
                  "name": "EnumerableSetUpgradeable.AddressSet",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1181,
                  "src": "2758:35:10"
                },
                "referencedDeclaration": 1181,
                "src": "2758:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1526,
            "mutability": "mutable",
            "name": "addressBucket1",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2815:70:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
            },
            "typeName": {
              "id": 1525,
              "keyType": {
                "id": 1522,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2823:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2815:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
              },
              "valueType": {
                "id": 1524,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1523,
                  "name": "EnumerableSetUpgradeable.AddressSet",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1181,
                  "src": "2834:35:10"
                },
                "referencedDeclaration": 1181,
                "src": "2834:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1531,
            "mutability": "mutable",
            "name": "addressBucket2",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "2891:70:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
              "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
            },
            "typeName": {
              "id": 1530,
              "keyType": {
                "id": 1527,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "2899:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "2891:55:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_AddressSet_$1181_storage_$",
                "typeString": "mapping(address => struct EnumerableSetUpgradeable.AddressSet)"
              },
              "valueType": {
                "id": 1529,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1528,
                  "name": "EnumerableSetUpgradeable.AddressSet",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1181,
                  "src": "2910:35:10"
                },
                "referencedDeclaration": 1181,
                "src": "2910:35:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                  "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 1536,
            "mutability": "mutable",
            "name": "documentsExtended",
            "nodeType": "VariableDeclaration",
            "scope": 3561,
            "src": "3018:54:10",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
              "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended)"
            },
            "typeName": {
              "id": 1535,
              "keyType": {
                "id": 1532,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "3026:7:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "3018:36:10",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
                "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended)"
              },
              "valueType": {
                "id": 1534,
                "nodeType": "UserDefinedTypeName",
                "pathNode": {
                  "id": 1533,
                  "name": "DocumentExtended",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1549,
                  "src": "3037:16:10"
                },
                "referencedDeclaration": 1549,
                "src": "3037:16:10",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_DocumentExtended_$1549_storage_ptr",
                  "typeString": "struct EthSign.DocumentExtended"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "canonicalName": "EthSign.DocumentExtended",
            "id": 1549,
            "members": [
              {
                "constant": false,
                "id": 1542,
                "mutability": "mutable",
                "name": "ecdsaForSaltedAddress",
                "nodeType": "VariableDeclaration",
                "scope": 1549,
                "src": "3154:51:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bytes_storage_$20_storage_$",
                  "typeString": "mapping(bytes32 => bytes[20])"
                },
                "typeName": {
                  "id": 1541,
                  "keyType": {
                    "id": 1537,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3162:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "3154:29:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bytes_storage_$20_storage_$",
                    "typeString": "mapping(bytes32 => bytes[20])"
                  },
                  "valueType": {
                    "baseType": {
                      "id": 1538,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "3173:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 1540,
                    "length": {
                      "hexValue": "3230",
                      "id": 1539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3179:2:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_20_by_1",
                        "typeString": "int_const 20"
                      },
                      "value": "20"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3173:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$20_storage_ptr",
                      "typeString": "bytes[20]"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 1548,
                "mutability": "mutable",
                "name": "ecdsaForSaltedAddressHasBeenFilled",
                "nodeType": "VariableDeclaration",
                "scope": 1549,
                "src": "3215:63:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$20_storage_$",
                  "typeString": "mapping(bytes32 => bool[20])"
                },
                "typeName": {
                  "id": 1547,
                  "keyType": {
                    "id": 1543,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3223:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "3215:28:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$20_storage_$",
                    "typeString": "mapping(bytes32 => bool[20])"
                  },
                  "valueType": {
                    "baseType": {
                      "id": 1544,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "3234:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 1546,
                    "length": {
                      "hexValue": "3230",
                      "id": 1545,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3239:2:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_20_by_1",
                        "typeString": "int_const 20"
                      },
                      "value": "20"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "3234:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$20_storage_ptr",
                      "typeString": "bool[20]"
                    }
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "DocumentExtended",
            "nodeType": "StructDefinition",
            "scope": 3561,
            "src": "3120:165:10",
            "visibility": "public"
          },
          {
            "body": {
              "id": 1564,
              "nodeType": "Block",
              "src": "3351:75:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1554,
                          "name": "recipient",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1551,
                          "src": "3369:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 1557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3390:1:10",
                              "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": 1556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3382:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1555,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3382:7:10",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3382:10:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3369:23:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5a45524f5f53454e444552",
                        "id": 1560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3394:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0ecc5c4c83787e5ead386b554f1d80ee86ec5c3e55181722bfaca454dd8d8b73",
                          "typeString": "literal_string \"ZERO_SENDER\""
                        },
                        "value": "ZERO_SENDER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0ecc5c4c83787e5ead386b554f1d80ee86ec5c3e55181722bfaca454dd8d8b73",
                          "typeString": "literal_string \"ZERO_SENDER\""
                        }
                      ],
                      "id": 1553,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3361:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3361:47:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1562,
                  "nodeType": "ExpressionStatement",
                  "src": "3361:47:10"
                },
                {
                  "id": 1563,
                  "nodeType": "PlaceholderStatement",
                  "src": "3418:1:10"
                }
              ]
            },
            "id": 1565,
            "name": "addressNonZero",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1551,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nodeType": "VariableDeclaration",
                  "scope": 1565,
                  "src": "3332:17:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1550,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3332:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3331:19:10"
            },
            "src": "3308:118:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1580,
              "nodeType": "Block",
              "src": "3480:87:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 1570,
                              "name": "documents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "3498:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                              }
                            },
                            "id": 1572,
                            "indexExpression": {
                              "id": 1571,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1567,
                              "src": "3508:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3498:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage",
                              "typeString": "struct EthSign.Document storage ref"
                            }
                          },
                          "id": 1573,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "birth",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1438,
                          "src": "3498:28:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 1574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3530:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3498:33:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "444f435f4e4f545f4558495354",
                        "id": 1576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3533:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_58ffa454849853d091744346ffbcdc75f8772d29d1fee2d8e96e697a94adf3a1",
                          "typeString": "literal_string \"DOC_NOT_EXIST\""
                        },
                        "value": "DOC_NOT_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_58ffa454849853d091744346ffbcdc75f8772d29d1fee2d8e96e697a94adf3a1",
                          "typeString": "literal_string \"DOC_NOT_EXIST\""
                        }
                      ],
                      "id": 1569,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3490:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3490:59:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1578,
                  "nodeType": "ExpressionStatement",
                  "src": "3490:59:10"
                },
                {
                  "id": 1579,
                  "nodeType": "PlaceholderStatement",
                  "src": "3559:1:10"
                }
              ]
            },
            "id": 1581,
            "name": "documentDoesExist",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1567,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1581,
                  "src": "3459:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1566,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3459:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3458:21:10"
            },
            "src": "3432:135:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1596,
              "nodeType": "Block",
              "src": "3624:83:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 1586,
                              "name": "documents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "3642:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                              }
                            },
                            "id": 1588,
                            "indexExpression": {
                              "id": 1587,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1583,
                              "src": "3652:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3642:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage",
                              "typeString": "struct EthSign.Document storage ref"
                            }
                          },
                          "id": 1589,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "birth",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1438,
                          "src": "3642:28:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 1590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3674:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3642:33:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "444f435f4558495354",
                        "id": 1592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3677:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_652d71e7cfa99a2fd999f81f04982f86741a9e17b41f3b591be88a9047e420b1",
                          "typeString": "literal_string \"DOC_EXIST\""
                        },
                        "value": "DOC_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_652d71e7cfa99a2fd999f81f04982f86741a9e17b41f3b591be88a9047e420b1",
                          "typeString": "literal_string \"DOC_EXIST\""
                        }
                      ],
                      "id": 1585,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3634:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3634:55:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1594,
                  "nodeType": "ExpressionStatement",
                  "src": "3634:55:10"
                },
                {
                  "id": 1595,
                  "nodeType": "PlaceholderStatement",
                  "src": "3699:1:10"
                }
              ]
            },
            "id": 1597,
            "name": "documentDoesNotExist",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1584,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1583,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1597,
                  "src": "3603:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1582,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3603:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3602:21:10"
            },
            "src": "3573:134:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1613,
              "nodeType": "Block",
              "src": "3762:138:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 1602,
                              "name": "documents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "3793:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                              }
                            },
                            "id": 1604,
                            "indexExpression": {
                              "id": 1603,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1599,
                              "src": "3803:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3793:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage",
                              "typeString": "struct EthSign.Document storage ref"
                            }
                          },
                          "id": 1605,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "expiration",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1440,
                          "src": "3793:33:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "expression": {
                            "id": 1606,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967292,
                            "src": "3829:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 1607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "src": "3829:12:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3793:48:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "444f435f4e4f545f45585049524544",
                        "id": 1609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3855:17:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cdd32c12456cada896eea407c0da2cd9beb9161535284ce31a4af7fd29c171eb",
                          "typeString": "literal_string \"DOC_NOT_EXPIRED\""
                        },
                        "value": "DOC_NOT_EXPIRED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cdd32c12456cada896eea407c0da2cd9beb9161535284ce31a4af7fd29c171eb",
                          "typeString": "literal_string \"DOC_NOT_EXPIRED\""
                        }
                      ],
                      "id": 1601,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3772:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3772:110:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1611,
                  "nodeType": "ExpressionStatement",
                  "src": "3772:110:10"
                },
                {
                  "id": 1612,
                  "nodeType": "PlaceholderStatement",
                  "src": "3892:1:10"
                }
              ]
            },
            "id": 1614,
            "name": "documentHasExpired",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1599,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1614,
                  "src": "3741:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1598,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3741:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3740:21:10"
            },
            "src": "3713:187:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1638,
              "nodeType": "Block",
              "src": "3958:215:10",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 1618,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "3972:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                            "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                          }
                        },
                        "id": 1620,
                        "indexExpression": {
                          "id": 1619,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1616,
                          "src": "3982:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3972:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage",
                          "typeString": "struct EthSign.Document storage ref"
                        }
                      },
                      "id": 1621,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expiration",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1440,
                      "src": "3972:33:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 1622,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4009:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3972:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1636,
                  "nodeType": "IfStatement",
                  "src": "3968:188:10",
                  "trueBody": {
                    "id": 1635,
                    "nodeType": "Block",
                    "src": "4012:144:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 1625,
                                    "name": "documents",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1486,
                                    "src": "4051:9:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                                      "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                                    }
                                  },
                                  "id": 1627,
                                  "indexExpression": {
                                    "id": 1626,
                                    "name": "documentKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1616,
                                    "src": "4061:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4051:22:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Document_$1481_storage",
                                    "typeString": "struct EthSign.Document storage ref"
                                  }
                                },
                                "id": 1628,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "expiration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1440,
                                "src": "4051:33:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 1629,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967292,
                                  "src": "4088:5:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1630,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "src": "4088:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4051:49:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "444f435f45585049524544",
                              "id": 1632,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4118:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_493e5ade42c32a124e93282ff005992938018b2d72f8b454c7acd4deaf376d78",
                                "typeString": "literal_string \"DOC_EXPIRED\""
                              },
                              "value": "DOC_EXPIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_493e5ade42c32a124e93282ff005992938018b2d72f8b454c7acd4deaf376d78",
                                "typeString": "literal_string \"DOC_EXPIRED\""
                              }
                            ],
                            "id": 1624,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "4026:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4026:119:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1634,
                        "nodeType": "ExpressionStatement",
                        "src": "4026:119:10"
                      }
                    ]
                  }
                },
                {
                  "id": 1637,
                  "nodeType": "PlaceholderStatement",
                  "src": "4165:1:10"
                }
              ]
            },
            "id": 1639,
            "name": "documentHasNotExpired",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1617,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1616,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1639,
                  "src": "3937:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1615,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3937:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3936:21:10"
            },
            "src": "3906:267:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1660,
              "nodeType": "Block",
              "src": "4231:131:10",
              "statements": [
                {
                  "assignments": [
                    1645
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1645,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1660,
                      "src": "4241:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1644,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1643,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "4241:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "4241:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1649,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1646,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "4264:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1648,
                    "indexExpression": {
                      "id": 1647,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1641,
                      "src": "4274:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4264:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4241:45:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 1651,
                            "name": "doc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1645,
                            "src": "4304:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                              "typeString": "struct EthSign.Document storage pointer"
                            }
                          },
                          "id": 1652,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "initiator",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1478,
                          "src": "4304:13:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 1653,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3587
                            ],
                            "referencedDeclaration": 3587,
                            "src": "4321:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 1654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4321:12:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4304:29:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "554e41555448",
                        "id": 1656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4335:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ce0ba59a655f51dc843a115da8488d87ac5d8d03f36cc45b85be6fc2d3e3be36",
                          "typeString": "literal_string \"UNAUTH\""
                        },
                        "value": "UNAUTH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ce0ba59a655f51dc843a115da8488d87ac5d8d03f36cc45b85be6fc2d3e3be36",
                          "typeString": "literal_string \"UNAUTH\""
                        }
                      ],
                      "id": 1650,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4296:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4296:48:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1658,
                  "nodeType": "ExpressionStatement",
                  "src": "4296:48:10"
                },
                {
                  "id": 1659,
                  "nodeType": "PlaceholderStatement",
                  "src": "4354:1:10"
                }
              ]
            },
            "id": 1661,
            "name": "onlyDocumentInitiator",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1642,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1641,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1661,
                  "src": "4210:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1640,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4210:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4209:21:10"
            },
            "src": "4179:183:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1684,
              "nodeType": "Block",
              "src": "4435:133:10",
              "statements": [
                {
                  "assignments": [
                    1669
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1669,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1684,
                      "src": "4445:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1668,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1667,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "4445:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "4445:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1673,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1670,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "4468:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1672,
                    "indexExpression": {
                      "id": 1671,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1663,
                      "src": "4478:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4468:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4445:45:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1678,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1665,
                            "src": "4532:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "expression": {
                              "id": 1675,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1669,
                              "src": "4508:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 1676,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "signersSet",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1448,
                            "src": "4508:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                              "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                            }
                          },
                          "id": 1677,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "contains",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1262,
                          "src": "4508:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                            "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,address) view returns (bool)"
                          }
                        },
                        "id": 1679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4508:31:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "554e41555448",
                        "id": 1680,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4541:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ce0ba59a655f51dc843a115da8488d87ac5d8d03f36cc45b85be6fc2d3e3be36",
                          "typeString": "literal_string \"UNAUTH\""
                        },
                        "value": "UNAUTH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ce0ba59a655f51dc843a115da8488d87ac5d8d03f36cc45b85be6fc2d3e3be36",
                          "typeString": "literal_string \"UNAUTH\""
                        }
                      ],
                      "id": 1674,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4500:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1681,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4500:50:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1682,
                  "nodeType": "ExpressionStatement",
                  "src": "4500:50:10"
                },
                {
                  "id": 1683,
                  "nodeType": "PlaceholderStatement",
                  "src": "4560:1:10"
                }
              ]
            },
            "id": 1685,
            "name": "onlyAuthorizedSigner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1663,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1685,
                  "src": "4398:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4398:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1665,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1685,
                  "src": "4419:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1664,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4419:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4397:37:10"
            },
            "src": "4368:200:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1708,
              "nodeType": "Block",
              "src": "4635:189:10",
              "statements": [
                {
                  "assignments": [
                    1691
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1691,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1708,
                      "src": "4645:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1690,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1689,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "4645:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "4645:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1695,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1692,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "4668:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1694,
                    "indexExpression": {
                      "id": 1693,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1687,
                      "src": "4678:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4668:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4645:45:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 1697,
                            "name": "doc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1691,
                            "src": "4721:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                              "typeString": "struct EthSign.Document storage pointer"
                            }
                          },
                          "id": 1698,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numOfSigners",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1442,
                          "src": "4721:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 1699,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1691,
                                "src": "4740:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 1700,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "signersSet",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1448,
                              "src": "4740:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                                "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                              }
                            },
                            "id": 1701,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1277,
                            "src": "4740:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                              "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 1702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4740:23:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4721:42:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5349474e4552535f46494e414c495a4544",
                        "id": 1704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4777:19:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1732f68876d3924a40eaed0b17bd26185019a310d5ccc97c7308cae254d63c58",
                          "typeString": "literal_string \"SIGNERS_FINALIZED\""
                        },
                        "value": "SIGNERS_FINALIZED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1732f68876d3924a40eaed0b17bd26185019a310d5ccc97c7308cae254d63c58",
                          "typeString": "literal_string \"SIGNERS_FINALIZED\""
                        }
                      ],
                      "id": 1696,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4700:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4700:106:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1706,
                  "nodeType": "ExpressionStatement",
                  "src": "4700:106:10"
                },
                {
                  "id": 1707,
                  "nodeType": "PlaceholderStatement",
                  "src": "4816:1:10"
                }
              ]
            },
            "id": 1709,
            "name": "signersNotFinalizedForDocument",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1688,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1687,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1709,
                  "src": "4614:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1686,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4614:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4613:21:10"
            },
            "src": "4574:250:10",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              3904
            ],
            "body": {
              "id": 1738,
              "nodeType": "Block",
              "src": "4989:337:10",
              "statements": [
                {
                  "assignments": [
                    1719
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1719,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1738,
                      "src": "4999:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1718,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1717,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "4999:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "4999:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1724,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "id": 1720,
                        "name": "documents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1486,
                        "src": "5028:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                          "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                        }
                      },
                      "id": 1722,
                      "indexExpression": {
                        "id": 1721,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1711,
                        "src": "5038:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5028:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage",
                        "typeString": "struct EthSign.Document storage ref"
                      }
                    },
                    "id": 1723,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "5028:37:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4999:66:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1728,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1711,
                            "src": "5159:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1729,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1719,
                              "src": "5192:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1730,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "5192:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1731,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1719,
                              "src": "5229:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1732,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "5229:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1733,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1719,
                              "src": "5269:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1734,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "5269:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 1726,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "5121:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "5121:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5121:184:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1725,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "5094:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5094:225:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1716,
                  "id": 1737,
                  "nodeType": "Return",
                  "src": "5075:244:10"
                }
              ]
            },
            "functionSelector": "c054203f",
            "id": 1739,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hashSaltedDocumentMappingKey",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1713,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4950:8:10"
            },
            "parameters": {
              "id": 1712,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1711,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1739,
                  "src": "4893:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1710,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4893:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4892:21:10"
            },
            "returnParameters": {
              "id": 1716,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1715,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1739,
                  "src": "4976:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1714,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4976:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4975:9:10"
            },
            "scope": 3561,
            "src": "4855:471:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3912
            ],
            "body": {
              "id": 1789,
              "nodeType": "Block",
              "src": "5470:638:10",
              "statements": [
                {
                  "assignments": [
                    1749
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1749,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1789,
                      "src": "5480:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1748,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1747,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "5480:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "5480:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1753,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1750,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "5503:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1752,
                    "indexExpression": {
                      "id": 1751,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1741,
                      "src": "5513:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5503:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5480:45:10"
                },
                {
                  "assignments": [
                    1756
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1756,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1789,
                      "src": "5535:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1755,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1754,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "5535:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "5535:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1759,
                  "initialValue": {
                    "expression": {
                      "id": 1757,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1749,
                      "src": "5564:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 1758,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "5564:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5535:47:10"
                },
                {
                  "assignments": [
                    1762
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1762,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1789,
                      "src": "5592:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1761,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1760,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "5592:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "5592:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1769,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 1763,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1749,
                        "src": "5622:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1764,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "5622:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 1768,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 1766,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1741,
                          "src": "5705:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 1765,
                        "name": "hashSaltedDocumentMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1739
                        ],
                        "referencedDeclaration": 1739,
                        "src": "5676:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 1767,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5676:41:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5622:105:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5592:135:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1773,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1741,
                            "src": "5821:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1774,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1756,
                              "src": "5854:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1775,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "5854:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1776,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1756,
                              "src": "5891:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1777,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "5891:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1778,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1756,
                              "src": "5931:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1779,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "5931:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1780,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "5971:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1781,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "5971:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1782,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "6009:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1783,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "6009:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1784,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1762,
                              "src": "6050:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1785,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "6050:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 1771,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "5783:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "5783:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5783:304:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1770,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "5756:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1787,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5756:345:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1746,
                  "id": 1788,
                  "nodeType": "Return",
                  "src": "5737:364:10"
                }
              ]
            },
            "functionSelector": "a2293119",
            "id": 1790,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hashSaltedMetaDocumentMappingKey",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1743,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5431:8:10"
            },
            "parameters": {
              "id": 1742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1741,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1790,
                  "src": "5374:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1740,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5374:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5373:21:10"
            },
            "returnParameters": {
              "id": 1746,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1745,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1790,
                  "src": "5457:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1744,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5457:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5456:9:10"
            },
            "scope": 3561,
            "src": "5332:776:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3922
            ],
            "body": {
              "id": 1846,
              "nodeType": "Block",
              "src": "6294:666:10",
              "statements": [
                {
                  "assignments": [
                    1805
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1805,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1846,
                      "src": "6304:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1804,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1803,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "6304:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "6304:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1809,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1806,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "6327:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1808,
                    "indexExpression": {
                      "id": 1807,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1792,
                      "src": "6337:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6327:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6304:45:10"
                },
                {
                  "assignments": [
                    1812
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1812,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1846,
                      "src": "6359:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1811,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1810,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "6359:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "6359:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1815,
                  "initialValue": {
                    "expression": {
                      "id": 1813,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1805,
                      "src": "6388:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 1814,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "6388:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6359:47:10"
                },
                {
                  "assignments": [
                    1818
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1818,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1846,
                      "src": "6416:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1817,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1816,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "6416:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "6416:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1825,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 1819,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1805,
                        "src": "6446:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1820,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "6446:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 1824,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 1822,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1792,
                          "src": "6529:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 1821,
                        "name": "hashSaltedDocumentMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1739
                        ],
                        "referencedDeclaration": 1739,
                        "src": "6500:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 1823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6500:41:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6446:105:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6416:135:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1829,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1792,
                            "src": "6645:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1830,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1812,
                              "src": "6678:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1831,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "6678:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1832,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1812,
                              "src": "6715:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1833,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "6715:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1834,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1812,
                              "src": "6755:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1835,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "6755:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1836,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1818,
                              "src": "6795:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1837,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "6795:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1838,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1818,
                              "src": "6833:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1839,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "6833:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1840,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1818,
                              "src": "6874:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1841,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "6874:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 1842,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1794,
                            "src": "6915:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1827,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "6607:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "6607:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1843,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6607:332:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1826,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "6580:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6580:373:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1802,
                  "id": 1845,
                  "nodeType": "Return",
                  "src": "6561:392:10"
                }
              ]
            },
            "functionSelector": "ae1680c3",
            "id": 1847,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 1798,
                    "name": "signer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1794,
                    "src": "6256:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 1799,
                "modifierName": {
                  "id": 1797,
                  "name": "addressNonZero",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1565,
                  "src": "6241:14:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "6241:22:10"
              }
            ],
            "name": "hashSaltedAddressMappingKey",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1796,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6224:8:10"
            },
            "parameters": {
              "id": 1795,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1792,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1847,
                  "src": "6151:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1791,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6151:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1794,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1847,
                  "src": "6172:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1793,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6172:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6150:37:10"
            },
            "returnParameters": {
              "id": 1802,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1801,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1847,
                  "src": "6281:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1800,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6281:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6280:9:10"
            },
            "scope": 3561,
            "src": "6114:846:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3934
            ],
            "body": {
              "id": 1906,
              "nodeType": "Block",
              "src": "7159:693:10",
              "statements": [
                {
                  "assignments": [
                    1864
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1864,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1906,
                      "src": "7169:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1863,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1862,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "7169:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "7169:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1868,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1865,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "7192:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1867,
                    "indexExpression": {
                      "id": 1866,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1849,
                      "src": "7202:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7192:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7169:45:10"
                },
                {
                  "assignments": [
                    1871
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1871,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1906,
                      "src": "7224:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1870,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1869,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "7224:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "7224:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1874,
                  "initialValue": {
                    "expression": {
                      "id": 1872,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1864,
                      "src": "7253:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 1873,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "7253:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7224:47:10"
                },
                {
                  "assignments": [
                    1877
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1877,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1906,
                      "src": "7281:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1876,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1875,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "7281:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "7281:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1884,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 1878,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1864,
                        "src": "7311:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1879,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "7311:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 1883,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 1881,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1849,
                          "src": "7394:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 1880,
                        "name": "hashSaltedDocumentMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1739
                        ],
                        "referencedDeclaration": 1739,
                        "src": "7365:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 1882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7365:41:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "7311:105:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7281:135:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1888,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1849,
                            "src": "7510:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1889,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1871,
                              "src": "7543:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1890,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "7543:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1891,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1871,
                              "src": "7580:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1892,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "7580:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1893,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1871,
                              "src": "7620:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1894,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "7620:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1895,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1877,
                              "src": "7660:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1896,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "7660:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1897,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1877,
                              "src": "7698:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1898,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "7698:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1899,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1877,
                              "src": "7739:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1900,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "7739:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 1901,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1851,
                            "src": "7780:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1902,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1853,
                            "src": "7808:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 1886,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "7472:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "7472:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1903,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7472:359:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1885,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "7445:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1904,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7445:400:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1861,
                  "id": 1905,
                  "nodeType": "Return",
                  "src": "7426:419:10"
                }
              ]
            },
            "id": 1907,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 1857,
                    "name": "signer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1851,
                    "src": "7133:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 1858,
                "modifierName": {
                  "id": 1856,
                  "name": "addressNonZero",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1565,
                  "src": "7118:14:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "7118:22:10"
              }
            ],
            "name": "_hashSaltedAddressWithIndexMappingKey",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1855,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7109:8:10"
            },
            "parameters": {
              "id": 1854,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1849,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1907,
                  "src": "7022:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1848,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7022:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1851,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1907,
                  "src": "7051:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1850,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7051:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1853,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1907,
                  "src": "7075:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1852,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7075:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7012:82:10"
            },
            "returnParameters": {
              "id": 1861,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1860,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1907,
                  "src": "7150:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1859,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7150:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7149:9:10"
            },
            "scope": 3561,
            "src": "6966:886:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              3944
            ],
            "body": {
              "id": 1962,
              "nodeType": "Block",
              "src": "8009:699:10",
              "statements": [
                {
                  "assignments": [
                    1919
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1919,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 1962,
                      "src": "8019:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1918,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1917,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "8019:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "8019:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1923,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1920,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "8042:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1922,
                    "indexExpression": {
                      "id": 1921,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1909,
                      "src": "8052:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8042:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8019:45:10"
                },
                {
                  "assignments": [
                    1926
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1926,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1962,
                      "src": "8074:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1925,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1924,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "8074:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "8074:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1929,
                  "initialValue": {
                    "expression": {
                      "id": 1927,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1919,
                      "src": "8103:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 1928,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "8103:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8074:47:10"
                },
                {
                  "assignments": [
                    1932
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1932,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 1962,
                      "src": "8131:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 1931,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1930,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "8131:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "8131:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1939,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 1933,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1919,
                        "src": "8161:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1934,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "8161:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 1938,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 1936,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1909,
                          "src": "8244:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 1935,
                        "name": "hashSaltedDocumentMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1739
                        ],
                        "referencedDeclaration": 1739,
                        "src": "8215:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 1937,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8215:41:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8161:105:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8131:135:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1943,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1909,
                            "src": "8360:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1944,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1926,
                              "src": "8393:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1945,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "8393:15:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1946,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1926,
                              "src": "8430:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1947,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "8430:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1948,
                              "name": "doc_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1926,
                              "src": "8470:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1949,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "8470:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1950,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1932,
                              "src": "8510:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1951,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "provider",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3950,
                            "src": "8510:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1952,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1932,
                              "src": "8548:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1953,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3952,
                            "src": "8548:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 1954,
                              "name": "meta_si",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1932,
                              "src": "8589:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                                "typeString": "struct IEthSign.StorageInfo storage pointer"
                              }
                            },
                            "id": 1955,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "storage_id1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3954,
                            "src": "8589:19:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 1956,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3587
                              ],
                              "referencedDeclaration": 3587,
                              "src": "8630:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 1957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8630:12:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1958,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1911,
                            "src": "8664:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 1941,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "8322:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "8322:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8322:365:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1940,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "8295:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8295:406:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 1916,
                  "id": 1961,
                  "nodeType": "Return",
                  "src": "8276:425:10"
                }
              ]
            },
            "functionSelector": "77cb7637",
            "id": 1963,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hashSaltedAddressWithIndexMappingKeyAsSigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1913,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7982:8:10"
            },
            "parameters": {
              "id": 1912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1909,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 1963,
                  "src": "7921:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1908,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7921:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1911,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 1963,
                  "src": "7950:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1910,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7950:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7911:58:10"
            },
            "returnParameters": {
              "id": 1916,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1915,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1963,
                  "src": "8000:7:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1914,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8000:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7999:9:10"
            },
            "scope": 3561,
            "src": "7858:850:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              3983
            ],
            "body": {
              "id": 2016,
              "nodeType": "Block",
              "src": "9064:234:10",
              "statements": [
                {
                  "assignments": [
                    1984
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1984,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2016,
                      "src": "9074:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 1983,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 1982,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "9074:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "9074:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1988,
                  "initialValue": {
                    "baseExpression": {
                      "id": 1985,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "9097:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 1987,
                    "indexExpression": {
                      "id": 1986,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1965,
                      "src": "9107:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9097:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9074:45:10"
                },
                {
                  "expression": {
                    "id": 1992,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1989,
                      "name": "initiator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1972,
                      "src": "9129:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 1990,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1984,
                        "src": "9141:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1991,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initiator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1478,
                      "src": "9141:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9129:25:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1993,
                  "nodeType": "ExpressionStatement",
                  "src": "9129:25:10"
                },
                {
                  "expression": {
                    "id": 1997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1994,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1974,
                      "src": "9164:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 1995,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1984,
                        "src": "9171:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 1996,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1480,
                      "src": "9171:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "9164:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 1998,
                  "nodeType": "ExpressionStatement",
                  "src": "9164:15:10"
                },
                {
                  "expression": {
                    "id": 2002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1999,
                      "name": "birth",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1976,
                      "src": "9189:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2000,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1984,
                        "src": "9197:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2001,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "birth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1438,
                      "src": "9197:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9189:17:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2003,
                  "nodeType": "ExpressionStatement",
                  "src": "9189:17:10"
                },
                {
                  "expression": {
                    "id": 2007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2004,
                      "name": "expiration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1978,
                      "src": "9216:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2005,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1984,
                        "src": "9229:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2006,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "expiration",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1440,
                      "src": "9229:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9216:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2008,
                  "nodeType": "ExpressionStatement",
                  "src": "9216:27:10"
                },
                {
                  "expression": {
                    "id": 2014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2009,
                      "name": "numOfSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1980,
                      "src": "9253:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "expression": {
                            "id": 2010,
                            "name": "doc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1984,
                            "src": "9268:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                              "typeString": "struct EthSign.Document storage pointer"
                            }
                          },
                          "id": 2011,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "signersSet",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1448,
                          "src": "9268:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                            "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                          }
                        },
                        "id": 2012,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1277,
                        "src": "9268:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                          "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 2013,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9268:23:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9253:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2015,
                  "nodeType": "ExpressionStatement",
                  "src": "9253:38:10"
                }
              ]
            },
            "functionSelector": "921e45b8",
            "id": 2017,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 1969,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1965,
                    "src": "8870:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 1970,
                "modifierName": {
                  "id": 1968,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "8852:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "8852:30:10"
              }
            ],
            "name": "getDocumentBasicInfo",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1967,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8835:8:10"
            },
            "parameters": {
              "id": 1966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1965,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "8776:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1964,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8776:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8775:21:10"
            },
            "returnParameters": {
              "id": 1981,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1972,
                  "mutability": "mutable",
                  "name": "initiator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "8913:17:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1971,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8913:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1974,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "8944:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1973,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8944:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1976,
                  "mutability": "mutable",
                  "name": "birth",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "8970:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1975,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8970:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1978,
                  "mutability": "mutable",
                  "name": "expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "8997:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1977,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8997:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1980,
                  "mutability": "mutable",
                  "name": "numOfSigners",
                  "nodeType": "VariableDeclaration",
                  "scope": 2017,
                  "src": "9029:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1979,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9029:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8899:160:10"
            },
            "scope": 3561,
            "src": "8746:552:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3995
            ],
            "body": {
              "id": 2055,
              "nodeType": "Block",
              "src": "9589:219:10",
              "statements": [
                {
                  "assignments": [
                    2034
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2034,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 2055,
                      "src": "9599:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 2033,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2032,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "9599:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "9599:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2039,
                  "initialValue": {
                    "expression": {
                      "baseExpression": {
                        "id": 2035,
                        "name": "documents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1486,
                        "src": "9628:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                          "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                        }
                      },
                      "id": 2037,
                      "indexExpression": {
                        "id": 2036,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2019,
                        "src": "9638:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9628:22:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage",
                        "typeString": "struct EthSign.Document storage ref"
                      }
                    },
                    "id": 2038,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "9628:37:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9599:66:10"
                },
                {
                  "expression": {
                    "id": 2043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2040,
                      "name": "docStorageProvider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2026,
                      "src": "9675:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2041,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2034,
                        "src": "9696:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2042,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "9696:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "9675:36:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2044,
                  "nodeType": "ExpressionStatement",
                  "src": "9675:36:10"
                },
                {
                  "expression": {
                    "id": 2048,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2045,
                      "name": "docStorage_id0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2028,
                      "src": "9721:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2046,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2034,
                        "src": "9738:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2047,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "storage_id0",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3952,
                      "src": "9738:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "9721:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2049,
                  "nodeType": "ExpressionStatement",
                  "src": "9721:35:10"
                },
                {
                  "expression": {
                    "id": 2053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2050,
                      "name": "docStorage_id1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2030,
                      "src": "9766:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2051,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2034,
                        "src": "9783:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2052,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "storage_id1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3954,
                      "src": "9783:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "9766:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2054,
                  "nodeType": "ExpressionStatement",
                  "src": "9766:35:10"
                }
              ]
            },
            "functionSelector": "5a3bb0e5",
            "id": 2056,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2023,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2019,
                    "src": "9433:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2024,
                "modifierName": {
                  "id": 2022,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "9415:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "9415:30:10"
              }
            ],
            "name": "getDocumentDocStorageInfo",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2021,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9398:8:10"
            },
            "parameters": {
              "id": 2020,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2019,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2056,
                  "src": "9339:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2018,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9339:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9338:21:10"
            },
            "returnParameters": {
              "id": 2031,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2026,
                  "mutability": "mutable",
                  "name": "docStorageProvider",
                  "nodeType": "VariableDeclaration",
                  "scope": 2056,
                  "src": "9476:26:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2025,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9476:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2028,
                  "mutability": "mutable",
                  "name": "docStorage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2056,
                  "src": "9516:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2027,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9516:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2030,
                  "mutability": "mutable",
                  "name": "docStorage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2056,
                  "src": "9552:22:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2029,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9552:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9462:122:10"
            },
            "scope": 3561,
            "src": "9304:504:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4007
            ],
            "body": {
              "id": 2102,
              "nodeType": "Block",
              "src": "10103:395:10",
              "statements": [
                {
                  "assignments": [
                    2072
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2072,
                      "mutability": "mutable",
                      "name": "saltedDocumentMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 2102,
                      "src": "10113:32:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2071,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10113:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2076,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2074,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2058,
                        "src": "10190:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2073,
                      "name": "hashSaltedDocumentMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1739
                      ],
                      "referencedDeclaration": 1739,
                      "src": "10148:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 2075,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10148:63:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10113:98:10"
                },
                {
                  "assignments": [
                    2079
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2079,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 2102,
                      "src": "10221:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 2078,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2077,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "10221:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "10221:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2086,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 2080,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "10251:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                            "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                          }
                        },
                        "id": 2082,
                        "indexExpression": {
                          "id": 2081,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2058,
                          "src": "10261:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "10251:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage",
                          "typeString": "struct EthSign.Document storage ref"
                        }
                      },
                      "id": 2083,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "10251:72:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 2085,
                    "indexExpression": {
                      "id": 2084,
                      "name": "saltedDocumentMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2072,
                      "src": "10324:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10251:98:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10221:128:10"
                },
                {
                  "expression": {
                    "id": 2090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2087,
                      "name": "metaStorageProvider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2065,
                      "src": "10359:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2088,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2079,
                        "src": "10381:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2089,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "10381:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "10359:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2091,
                  "nodeType": "ExpressionStatement",
                  "src": "10359:38:10"
                },
                {
                  "expression": {
                    "id": 2095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2092,
                      "name": "metaStorage_id0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2067,
                      "src": "10407:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2093,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2079,
                        "src": "10425:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2094,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "storage_id0",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3952,
                      "src": "10425:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "10407:37:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2096,
                  "nodeType": "ExpressionStatement",
                  "src": "10407:37:10"
                },
                {
                  "expression": {
                    "id": 2100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2097,
                      "name": "metaStorage_id1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2069,
                      "src": "10454:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2098,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2079,
                        "src": "10472:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2099,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "storage_id1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3954,
                      "src": "10472:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "10454:37:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2101,
                  "nodeType": "ExpressionStatement",
                  "src": "10454:37:10"
                }
              ]
            },
            "functionSelector": "49f3741f",
            "id": 2103,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2062,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2058,
                    "src": "9944:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2063,
                "modifierName": {
                  "id": 2061,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "9926:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "9926:30:10"
              }
            ],
            "name": "getDocumentMetaStorageInfo",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2060,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "9909:8:10"
            },
            "parameters": {
              "id": 2059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2058,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2103,
                  "src": "9850:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2057,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9850:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9849:21:10"
            },
            "returnParameters": {
              "id": 2070,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2065,
                  "mutability": "mutable",
                  "name": "metaStorageProvider",
                  "nodeType": "VariableDeclaration",
                  "scope": 2103,
                  "src": "9987:27:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2064,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9987:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2067,
                  "mutability": "mutable",
                  "name": "metaStorage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2103,
                  "src": "10028:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2066,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10028:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2069,
                  "mutability": "mutable",
                  "name": "metaStorage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2103,
                  "src": "10065:23:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2068,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10065:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9973:125:10"
            },
            "scope": 3561,
            "src": "9814:684:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4015
            ],
            "body": {
              "id": 2121,
              "nodeType": "Block",
              "src": "10686:66:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "expression": {
                          "baseExpression": {
                            "id": 2114,
                            "name": "documents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1486,
                            "src": "10703:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                              "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                            }
                          },
                          "id": 2116,
                          "indexExpression": {
                            "id": 2115,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2105,
                            "src": "10713:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10703:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage",
                            "typeString": "struct EthSign.Document storage ref"
                          }
                        },
                        "id": 2117,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signersSet",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1448,
                        "src": "10703:33:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                        }
                      },
                      "id": 2118,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1277,
                      "src": "10703:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                        "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 2119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10703:42:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2113,
                  "id": 2120,
                  "nodeType": "Return",
                  "src": "10696:49:10"
                }
              ]
            },
            "functionSelector": "28614ec7",
            "id": 2122,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2109,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2105,
                    "src": "10637:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2110,
                "modifierName": {
                  "id": 2108,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "10619:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "10619:30:10"
              }
            ],
            "name": "getNumberOfSignersForDocument",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2107,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10602:8:10"
            },
            "parameters": {
              "id": 2106,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2105,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "10543:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2104,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10543:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10542:21:10"
            },
            "returnParameters": {
              "id": 2113,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2112,
                  "mutability": "mutable",
                  "name": "count",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "10667:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2111,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10667:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10666:15:10"
            },
            "scope": 3561,
            "src": "10504:248:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4025
            ],
            "body": {
              "id": 2145,
              "nodeType": "Block",
              "src": "10951:69:10",
              "statements": [
                {
                  "expression": {
                    "id": 2143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2135,
                      "name": "signer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2133,
                      "src": "10961:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2141,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2126,
                          "src": "11007:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "expression": {
                            "baseExpression": {
                              "id": 2136,
                              "name": "documents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1486,
                              "src": "10970:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                              }
                            },
                            "id": 2138,
                            "indexExpression": {
                              "id": 2137,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2124,
                              "src": "10980:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10970:22:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage",
                              "typeString": "struct EthSign.Document storage ref"
                            }
                          },
                          "id": 2139,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "signersSet",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1448,
                          "src": "10970:33:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                            "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                          }
                        },
                        "id": 2140,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "at",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1304,
                        "src": "10970:36:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                          "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"
                        }
                      },
                      "id": 2142,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10970:43:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10961:52:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2144,
                  "nodeType": "ExpressionStatement",
                  "src": "10961:52:10"
                }
              ]
            },
            "functionSelector": "2608c8e9",
            "id": 2146,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2130,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2124,
                    "src": "10901:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2131,
                "modifierName": {
                  "id": 2129,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "10883:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "10883:30:10"
              }
            ],
            "name": "getDocumentSignerAtIndex",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2128,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "10866:8:10"
            },
            "parameters": {
              "id": 2127,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2124,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2146,
                  "src": "10792:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2123,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10792:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2126,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 2146,
                  "src": "10813:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2125,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10813:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10791:36:10"
            },
            "returnParameters": {
              "id": 2134,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2133,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2146,
                  "src": "10931:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2132,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10931:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10930:16:10"
            },
            "scope": 3561,
            "src": "10758:262:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2172,
              "nodeType": "Block",
              "src": "11197:276:10",
              "statements": [
                {
                  "assignments": [
                    2159
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2159,
                      "mutability": "mutable",
                      "name": "saltedAddressMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 2172,
                      "src": "11207:31:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2158,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11207:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2164,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2161,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2150,
                        "src": "11282:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2162,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2148,
                        "src": "11307:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2160,
                      "name": "hashSaltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1847
                      ],
                      "referencedDeclaration": 1847,
                      "src": "11241:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,address) view returns (bytes32)"
                      }
                    },
                    "id": 2163,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11241:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11207:116:10"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 2165,
                          "name": "documents",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1486,
                          "src": "11352:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                            "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                          }
                        },
                        "id": 2167,
                        "indexExpression": {
                          "id": 2166,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2150,
                          "src": "11362:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11352:22:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage",
                          "typeString": "struct EthSign.Document storage ref"
                        }
                      },
                      "id": 2168,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfSignatureFieldsForSaltedAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1462,
                      "src": "11352:59:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 2170,
                    "indexExpression": {
                      "id": 2169,
                      "name": "saltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2159,
                      "src": "11429:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11352:114:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2157,
                  "id": 2171,
                  "nodeType": "Return",
                  "src": "11333:133:10"
                }
              ]
            },
            "id": 2173,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2153,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2150,
                    "src": "11160:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2154,
                "modifierName": {
                  "id": 2152,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "11142:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "11142:30:10"
              }
            ],
            "name": "getNumberOfDocumentECDSAForSigner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2148,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2173,
                  "src": "11078:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2147,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11078:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2150,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2173,
                  "src": "11102:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2149,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11102:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11068:59:10"
            },
            "returnParameters": {
              "id": 2157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2156,
                  "mutability": "mutable",
                  "name": "count",
                  "nodeType": "VariableDeclaration",
                  "scope": 2173,
                  "src": "11182:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2155,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11182:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11181:15:10"
            },
            "scope": 3561,
            "src": "11026:447:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              4042
            ],
            "body": {
              "id": 2287,
              "nodeType": "Block",
              "src": "11721:881:10",
              "statements": [
                {
                  "assignments": [
                    2192
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2192,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2287,
                      "src": "11731:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2191,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2190,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "11731:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "11731:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2196,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2193,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "11754:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2195,
                    "indexExpression": {
                      "id": 2194,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2177,
                      "src": "11764:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11754:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11731:45:10"
                },
                {
                  "assignments": [
                    2198
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2198,
                      "mutability": "mutable",
                      "name": "numberOfSignatures",
                      "nodeType": "VariableDeclaration",
                      "scope": 2287,
                      "src": "11786:26:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2197,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11786:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2203,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2200,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2175,
                        "src": "11862:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2201,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2177,
                        "src": "11882:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2199,
                      "name": "getNumberOfDocumentECDSAForSigner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2173,
                      "src": "11815:33:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 2202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11815:88:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11786:117:10"
                },
                {
                  "assignments": [
                    2208
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2208,
                      "mutability": "mutable",
                      "name": "r_ret",
                      "nodeType": "VariableDeclaration",
                      "scope": 2287,
                      "src": "11913:22:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2206,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11913:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2207,
                        "nodeType": "ArrayTypeName",
                        "src": "11913:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2214,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2212,
                        "name": "numberOfSignatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2198,
                        "src": "11952:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2211,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "11938:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2209,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11942:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2210,
                        "nodeType": "ArrayTypeName",
                        "src": "11942:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 2213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11938:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11913:58:10"
                },
                {
                  "assignments": [
                    2219
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2219,
                      "mutability": "mutable",
                      "name": "s_ret",
                      "nodeType": "VariableDeclaration",
                      "scope": 2287,
                      "src": "11981:22:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2217,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11981:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2218,
                        "nodeType": "ArrayTypeName",
                        "src": "11981:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2225,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2223,
                        "name": "numberOfSignatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2198,
                        "src": "12020:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "12006:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2220,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12010:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2221,
                        "nodeType": "ArrayTypeName",
                        "src": "12010:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 2224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12006:33:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11981:58:10"
                },
                {
                  "assignments": [
                    2230
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2230,
                      "mutability": "mutable",
                      "name": "v_ret",
                      "nodeType": "VariableDeclaration",
                      "scope": 2287,
                      "src": "12049:20:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                        "typeString": "uint8[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2228,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "12049:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 2229,
                        "nodeType": "ArrayTypeName",
                        "src": "12049:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2236,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2234,
                        "name": "numberOfSignatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2198,
                        "src": "12084:18:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2233,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "12072:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint8_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint8[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2231,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "12076:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 2232,
                        "nodeType": "ArrayTypeName",
                        "src": "12076:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                          "typeString": "uint8[]"
                        }
                      }
                    },
                    "id": 2235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12072:31:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                      "typeString": "uint8[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12049:54:10"
                },
                {
                  "body": {
                    "id": 2280,
                    "nodeType": "Block",
                    "src": "12162:396:10",
                    "statements": [
                      {
                        "assignments": [
                          2249
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2249,
                            "mutability": "mutable",
                            "name": "ecs",
                            "nodeType": "VariableDeclaration",
                            "scope": 2280,
                            "src": "12176:23:10",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                              "typeString": "struct EthSign.ECSignature"
                            },
                            "typeName": {
                              "id": 2248,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2247,
                                "name": "ECSignature",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 1436,
                                "src": "12176:11:10"
                              },
                              "referencedDeclaration": 1436,
                              "src": "12176:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                "typeString": "struct EthSign.ECSignature"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2258,
                        "initialValue": {
                          "baseExpression": {
                            "expression": {
                              "id": 2250,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2192,
                              "src": "12202:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 2251,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "signatureFieldForSaltedAddressWithIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1471,
                            "src": "12202:60:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ECSignature_$1436_storage_$",
                              "typeString": "mapping(bytes32 => struct EthSign.ECSignature storage ref)"
                            }
                          },
                          "id": 2257,
                          "indexExpression": {
                            "arguments": [
                              {
                                "id": 2253,
                                "name": "documentKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2177,
                                "src": "12347:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 2254,
                                "name": "signer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2175,
                                "src": "12384:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2255,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2238,
                                "src": "12416:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2252,
                              "name": "_hashSaltedAddressWithIndexMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                1907
                              ],
                              "referencedDeclaration": 1907,
                              "src": "12284:37:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (bytes32,address,uint256) view returns (bytes32)"
                              }
                            },
                            "id": 2256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12284:155:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "12202:255:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ECSignature_$1436_storage",
                            "typeString": "struct EthSign.ECSignature storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12176:281:10"
                      },
                      {
                        "expression": {
                          "id": 2264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2259,
                              "name": "r_ret",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2208,
                              "src": "12471:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 2261,
                            "indexExpression": {
                              "id": 2260,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2238,
                              "src": "12477:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12471:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 2262,
                              "name": "ecs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2249,
                              "src": "12482:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                "typeString": "struct EthSign.ECSignature storage pointer"
                              }
                            },
                            "id": 2263,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "r",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1431,
                            "src": "12482:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12471:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2265,
                        "nodeType": "ExpressionStatement",
                        "src": "12471:16:10"
                      },
                      {
                        "expression": {
                          "id": 2271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2266,
                              "name": "s_ret",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2219,
                              "src": "12501:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 2268,
                            "indexExpression": {
                              "id": 2267,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2238,
                              "src": "12507:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12501:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 2269,
                              "name": "ecs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2249,
                              "src": "12512:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                "typeString": "struct EthSign.ECSignature storage pointer"
                              }
                            },
                            "id": 2270,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "s",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1433,
                            "src": "12512:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12501:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2272,
                        "nodeType": "ExpressionStatement",
                        "src": "12501:16:10"
                      },
                      {
                        "expression": {
                          "id": 2278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2273,
                              "name": "v_ret",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2230,
                              "src": "12531:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                                "typeString": "uint8[] memory"
                              }
                            },
                            "id": 2275,
                            "indexExpression": {
                              "id": 2274,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2238,
                              "src": "12537:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12531:8:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 2276,
                              "name": "ecs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2249,
                              "src": "12542:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                "typeString": "struct EthSign.ECSignature storage pointer"
                              }
                            },
                            "id": 2277,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "v",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1435,
                            "src": "12542:5:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "12531:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 2279,
                        "nodeType": "ExpressionStatement",
                        "src": "12531:16:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2241,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2238,
                      "src": "12133:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 2242,
                      "name": "numberOfSignatures",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2198,
                      "src": "12137:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "12133:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2281,
                  "initializationExpression": {
                    "assignments": [
                      2238
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2238,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2281,
                        "src": "12118:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2237,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12118:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 2240,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 2239,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12130:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "12118:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 2245,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "12157:3:10",
                      "subExpression": {
                        "id": 2244,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2238,
                        "src": "12159:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2246,
                    "nodeType": "ExpressionStatement",
                    "src": "12157:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "12113:445:10"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "id": 2282,
                        "name": "r_ret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2208,
                        "src": "12575:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      {
                        "id": 2283,
                        "name": "s_ret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2219,
                        "src": "12582:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      {
                        "id": 2284,
                        "name": "v_ret",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2230,
                        "src": "12589:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                          "typeString": "uint8[] memory"
                        }
                      }
                    ],
                    "id": 2285,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "12574:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_uint8_$dyn_memory_ptr_$",
                      "typeString": "tuple(bytes32[] memory,bytes32[] memory,uint8[] memory)"
                    }
                  },
                  "functionReturnParameters": 2189,
                  "id": 2286,
                  "nodeType": "Return",
                  "src": "12567:28:10"
                }
              ]
            },
            "functionSelector": "4fc62e71",
            "id": 2288,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDocumentRSVForLegacySigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2179,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "11593:8:10"
            },
            "parameters": {
              "id": 2178,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2175,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2288,
                  "src": "11518:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2174,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11518:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2177,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2288,
                  "src": "11534:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2176,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11534:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11517:37:10"
            },
            "returnParameters": {
              "id": 2189,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2182,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2288,
                  "src": "11632:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2180,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "11632:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 2181,
                    "nodeType": "ArrayTypeName",
                    "src": "11632:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2185,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2288,
                  "src": "11662:16:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2183,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "11662:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 2184,
                    "nodeType": "ArrayTypeName",
                    "src": "11662:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2188,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2288,
                  "src": "11692:14:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr",
                    "typeString": "uint8[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2186,
                      "name": "uint8",
                      "nodeType": "ElementaryTypeName",
                      "src": "11692:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 2187,
                    "nodeType": "ArrayTypeName",
                    "src": "11692:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr",
                      "typeString": "uint8[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11618:98:10"
            },
            "scope": 3561,
            "src": "11479:1123:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4054
            ],
            "body": {
              "id": 2310,
              "nodeType": "Block",
              "src": "12777:168:10",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "baseExpression": {
                          "id": 2300,
                          "name": "documentsExtended",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1536,
                          "src": "12806:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
                            "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended storage ref)"
                          }
                        },
                        "id": 2302,
                        "indexExpression": {
                          "id": 2301,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2292,
                          "src": "12824:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "12806:30:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DocumentExtended_$1549_storage",
                          "typeString": "struct EthSign.DocumentExtended storage ref"
                        }
                      },
                      "id": 2303,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ecdsaForSaltedAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1542,
                      "src": "12806:52:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bytes_storage_$20_storage_$",
                        "typeString": "mapping(bytes32 => bytes storage ref[20] storage ref)"
                      }
                    },
                    "id": 2308,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 2305,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2292,
                          "src": "12904:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "id": 2306,
                          "name": "signer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2290,
                          "src": "12917:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2304,
                        "name": "hashSaltedAddressMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1847
                        ],
                        "referencedDeclaration": 1847,
                        "src": "12876:27:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32,address) view returns (bytes32)"
                        }
                      },
                      "id": 2307,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12876:48:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "12806:132:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$20_storage",
                      "typeString": "bytes storage ref[20] storage ref"
                    }
                  },
                  "functionReturnParameters": 2299,
                  "id": 2309,
                  "nodeType": "Return",
                  "src": "12787:151:10"
                }
              ]
            },
            "functionSelector": "63638ae6",
            "id": 2311,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDocumentECDSAForSigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2294,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "12718:8:10"
            },
            "parameters": {
              "id": 2293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2290,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2311,
                  "src": "12643:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2289,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12643:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2292,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2311,
                  "src": "12659:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2291,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12659:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12642:37:10"
            },
            "returnParameters": {
              "id": 2299,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2298,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "scope": 2311,
                  "src": "12744:27:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$20_memory_ptr",
                    "typeString": "bytes[20]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2295,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "12744:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 2297,
                    "length": {
                      "hexValue": "3230",
                      "id": 2296,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12750:2:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_20_by_1",
                        "typeString": "int_const 20"
                      },
                      "value": "20"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "12744:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$20_storage_ptr",
                      "typeString": "bytes[20]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12743:29:10"
            },
            "scope": 3561,
            "src": "12608:337:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4068
            ],
            "body": {
              "id": 2358,
              "nodeType": "Block",
              "src": "13239:360:10",
              "statements": [
                {
                  "assignments": [
                    2330
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2330,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2358,
                      "src": "13249:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2329,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2328,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "13249:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "13249:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2334,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2331,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "13272:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2333,
                    "indexExpression": {
                      "id": 2332,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2315,
                      "src": "13282:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13272:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13249:45:10"
                },
                {
                  "assignments": [
                    2336
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2336,
                      "mutability": "mutable",
                      "name": "saltedAddressMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 2358,
                      "src": "13304:31:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2335,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "13304:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2341,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2338,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2315,
                        "src": "13379:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2339,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2313,
                        "src": "13404:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2337,
                      "name": "hashSaltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1847
                      ],
                      "referencedDeclaration": 1847,
                      "src": "13338:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,address) view returns (bytes32)"
                      }
                    },
                    "id": 2340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13338:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13304:116:10"
                },
                {
                  "assignments": [
                    2344
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2344,
                      "mutability": "mutable",
                      "name": "si",
                      "nodeType": "VariableDeclaration",
                      "scope": 2358,
                      "src": "13430:22:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 2343,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2342,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "13430:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "13430:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2349,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 2345,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2330,
                        "src": "13455:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2346,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "commentsForSaltedAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1476,
                      "src": "13455:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 2348,
                    "indexExpression": {
                      "id": 2347,
                      "name": "saltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2336,
                      "src": "13497:23:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13455:75:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13430:100:10"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "expression": {
                          "id": 2350,
                          "name": "si",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2344,
                          "src": "13548:2:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                            "typeString": "struct IEthSign.StorageInfo storage pointer"
                          }
                        },
                        "id": 2351,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "provider",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3950,
                        "src": "13548:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 2352,
                          "name": "si",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2344,
                          "src": "13561:2:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                            "typeString": "struct IEthSign.StorageInfo storage pointer"
                          }
                        },
                        "id": 2353,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "storage_id0",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3952,
                        "src": "13561:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 2354,
                          "name": "si",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2344,
                          "src": "13577:2:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                            "typeString": "struct IEthSign.StorageInfo storage pointer"
                          }
                        },
                        "id": 2355,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "storage_id1",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3954,
                        "src": "13577:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 2356,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "13547:45:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 2327,
                  "id": 2357,
                  "nodeType": "Return",
                  "src": "13540:52:10"
                }
              ]
            },
            "functionSelector": "e140fb84",
            "id": 2359,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2319,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2315,
                    "src": "13099:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2320,
                "modifierName": {
                  "id": 2318,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "13081:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "13081:30:10"
              }
            ],
            "name": "getDocumentCommentsForSigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2317,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13064:8:10"
            },
            "parameters": {
              "id": 2316,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2313,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2359,
                  "src": "12989:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2312,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12989:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2315,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2359,
                  "src": "13005:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2314,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13005:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12988:37:10"
            },
            "returnParameters": {
              "id": 2327,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2322,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "scope": 2359,
                  "src": "13142:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2321,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13142:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2324,
                  "mutability": "mutable",
                  "name": "storage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2359,
                  "src": "13172:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2323,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13172:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2326,
                  "mutability": "mutable",
                  "name": "storage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2359,
                  "src": "13205:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2325,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13205:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13128:106:10"
            },
            "scope": 3561,
            "src": "12951:648:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4078
            ],
            "body": {
              "id": 2401,
              "nodeType": "Block",
              "src": "13805:393:10",
              "statements": [
                {
                  "assignments": [
                    2374
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2374,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "13815:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2373,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2372,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "13815:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "13815:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2378,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2375,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "13838:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2377,
                    "indexExpression": {
                      "id": 2376,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2361,
                      "src": "13848:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13838:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13815:45:10"
                },
                {
                  "assignments": [
                    2380
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2380,
                      "mutability": "mutable",
                      "name": "saltedMetaDocumentMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 2401,
                      "src": "13870:36:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2379,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "13870:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2384,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2382,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2361,
                        "src": "13955:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2381,
                      "name": "hashSaltedMetaDocumentMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1790
                      ],
                      "referencedDeclaration": 1790,
                      "src": "13909:32:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 2383,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13909:67:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13870:106:10"
                },
                {
                  "expression": {
                    "id": 2390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2385,
                      "name": "totalSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2368,
                      "src": "13986:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "expression": {
                            "id": 2386,
                            "name": "doc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2374,
                            "src": "14001:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                              "typeString": "struct EthSign.Document storage pointer"
                            }
                          },
                          "id": 2387,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "signersSet",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1448,
                          "src": "14001:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                            "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                          }
                        },
                        "id": 2388,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1277,
                        "src": "14001:21:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                          "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 2389,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14001:23:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13986:38:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2391,
                  "nodeType": "ExpressionStatement",
                  "src": "13986:38:10"
                },
                {
                  "expression": {
                    "id": 2399,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2392,
                      "name": "signedSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2370,
                      "src": "14034:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "baseExpression": {
                            "expression": {
                              "id": 2393,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2374,
                              "src": "14050:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 2394,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "numOfSignedSignersSetForSaltedMetaDocument",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1458,
                            "src": "14050:59:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$1181_storage_$",
                              "typeString": "mapping(bytes32 => struct EnumerableSetUpgradeable.AddressSet storage ref)"
                            }
                          },
                          "id": 2396,
                          "indexExpression": {
                            "id": 2395,
                            "name": "saltedMetaDocumentMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2380,
                            "src": "14127:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14050:119:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                            "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                          }
                        },
                        "id": 2397,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1277,
                        "src": "14050:139:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                          "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                        }
                      },
                      "id": 2398,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14050:141:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14034:157:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2400,
                  "nodeType": "ExpressionStatement",
                  "src": "14034:157:10"
                }
              ]
            },
            "functionSelector": "acf76182",
            "id": 2402,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2365,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2361,
                    "src": "13726:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2366,
                "modifierName": {
                  "id": 2364,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "13708:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "13708:30:10"
              }
            ],
            "name": "getDocumentStatus",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2363,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13691:8:10"
            },
            "parameters": {
              "id": 2362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2361,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "13632:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2360,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13632:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13631:21:10"
            },
            "returnParameters": {
              "id": 2371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2368,
                  "mutability": "mutable",
                  "name": "totalSigners",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "13756:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2367,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13756:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2370,
                  "mutability": "mutable",
                  "name": "signedSigners",
                  "nodeType": "VariableDeclaration",
                  "scope": 2402,
                  "src": "13778:21:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2369,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13778:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13755:45:10"
            },
            "scope": 3561,
            "src": "13605:593:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4088
            ],
            "body": {
              "id": 2556,
              "nodeType": "Block",
              "src": "14443:1549:10",
              "statements": [
                {
                  "assignments": [
                    2417
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2417,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2556,
                      "src": "14453:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2416,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2415,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "14453:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "14453:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2421,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2418,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "14476:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2420,
                    "indexExpression": {
                      "id": 2419,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2404,
                      "src": "14486:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14476:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14453:45:10"
                },
                {
                  "assignments": [
                    2426
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2426,
                      "mutability": "mutable",
                      "name": "signersSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 2556,
                      "src": "14508:54:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                        "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                      },
                      "typeName": {
                        "id": 2425,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2424,
                          "name": "EnumerableSetUpgradeable.AddressSet",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1181,
                          "src": "14508:35:10"
                        },
                        "referencedDeclaration": 1181,
                        "src": "14508:35:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2429,
                  "initialValue": {
                    "expression": {
                      "id": 2427,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2417,
                      "src": "14565:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 2428,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "signersSet",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1448,
                    "src": "14565:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                      "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14508:71:10"
                },
                {
                  "assignments": [
                    2431
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2431,
                      "mutability": "mutable",
                      "name": "numOfSigners",
                      "nodeType": "VariableDeclaration",
                      "scope": 2556,
                      "src": "14589:20:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2430,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14589:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2435,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 2432,
                        "name": "signersSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2426,
                        "src": "14612:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet storage pointer"
                        }
                      },
                      "id": 2433,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1277,
                      "src": "14612:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                        "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 2434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14612:19:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14589:42:10"
                },
                {
                  "expression": {
                    "id": 2443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2436,
                      "name": "fieldSignedInfo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2413,
                      "src": "14641:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2441,
                          "name": "numOfSigners",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2431,
                          "src": "14699:12:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "14659:39:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2438,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2437,
                              "name": "_HelperSignerSignatureFieldStatus",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3961,
                              "src": "14663:33:10"
                            },
                            "referencedDeclaration": 3961,
                            "src": "14663:33:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$__HelperSignerSignatureFieldStatus_$3961_storage_ptr",
                              "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus"
                            }
                          },
                          "id": 2439,
                          "nodeType": "ArrayTypeName",
                          "src": "14663:35:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_storage_$dyn_storage_ptr",
                            "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus[]"
                          }
                        }
                      },
                      "id": 2442,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14659:53:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory"
                      }
                    },
                    "src": "14641:71:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory"
                    }
                  },
                  "id": 2444,
                  "nodeType": "ExpressionStatement",
                  "src": "14641:71:10"
                },
                {
                  "body": {
                    "id": 2554,
                    "nodeType": "Block",
                    "src": "14765:1221:10",
                    "statements": [
                      {
                        "assignments": [
                          2456
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2456,
                            "mutability": "mutable",
                            "name": "signer",
                            "nodeType": "VariableDeclaration",
                            "scope": 2554,
                            "src": "14779:14:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2455,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14779:7:10",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2461,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2459,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2446,
                              "src": "14810:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2457,
                              "name": "signersSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2426,
                              "src": "14796:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                                "typeString": "struct EnumerableSetUpgradeable.AddressSet storage pointer"
                              }
                            },
                            "id": 2458,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "at",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1304,
                            "src": "14796:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                              "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"
                            }
                          },
                          "id": 2460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14796:16:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14779:33:10"
                      },
                      {
                        "assignments": [
                          2463
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2463,
                            "mutability": "mutable",
                            "name": "saltedAddressMappingKey",
                            "nodeType": "VariableDeclaration",
                            "scope": 2554,
                            "src": "14826:31:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2462,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "14826:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2468,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2465,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2404,
                              "src": "14905:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2466,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2456,
                              "src": "14934:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2464,
                            "name": "hashSaltedAddressMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1847
                            ],
                            "referencedDeclaration": 1847,
                            "src": "14860:27:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,address) view returns (bytes32)"
                            }
                          },
                          "id": 2467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14860:94:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14826:128:10"
                      },
                      {
                        "assignments": [
                          2470
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2470,
                            "mutability": "mutable",
                            "name": "numOfSignatureFieldsForSigner",
                            "nodeType": "VariableDeclaration",
                            "scope": 2554,
                            "src": "14968:37:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2469,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14968:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2475,
                        "initialValue": {
                          "baseExpression": {
                            "expression": {
                              "id": 2471,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2417,
                              "src": "15008:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 2472,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "numOfSignatureFieldsForSaltedAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1462,
                            "src": "15008:57:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 2474,
                          "indexExpression": {
                            "id": 2473,
                            "name": "saltedAddressMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2463,
                            "src": "15066:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15008:82:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14968:122:10"
                      },
                      {
                        "assignments": [
                          2480
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2480,
                            "mutability": "mutable",
                            "name": "nestedElement",
                            "nodeType": "VariableDeclaration",
                            "scope": 2554,
                            "src": "15104:27:10",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2478,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "15104:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2479,
                              "nodeType": "ArrayTypeName",
                              "src": "15104:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2486,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2484,
                              "name": "numOfSignatureFieldsForSigner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2470,
                              "src": "15162:29:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "15134:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bool[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 2481,
                                "name": "bool",
                                "nodeType": "ElementaryTypeName",
                                "src": "15138:4:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2482,
                              "nodeType": "ArrayTypeName",
                              "src": "15138:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                "typeString": "bool[]"
                              }
                            }
                          },
                          "id": 2485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15134:71:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15104:101:10"
                      },
                      {
                        "body": {
                          "id": 2538,
                          "nodeType": "Block",
                          "src": "15279:589:10",
                          "statements": [
                            {
                              "assignments": [
                                2498
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2498,
                                  "mutability": "mutable",
                                  "name": "saltedAddressWithIndexMappingKey",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2538,
                                  "src": "15297:40:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 2497,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15297:7:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2504,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 2500,
                                    "name": "documentKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2404,
                                    "src": "15403:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 2501,
                                    "name": "signer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2456,
                                    "src": "15440:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2502,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2488,
                                    "src": "15472:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2499,
                                  "name": "_hashSaltedAddressWithIndexMappingKey",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    1907
                                  ],
                                  "referencedDeclaration": 1907,
                                  "src": "15340:37:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes32,address,uint256) view returns (bytes32)"
                                  }
                                },
                                "id": 2503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15340:155:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15297:198:10"
                            },
                            {
                              "assignments": [
                                2507
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2507,
                                  "mutability": "mutable",
                                  "name": "ecs",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2538,
                                  "src": "15513:23:10",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                    "typeString": "struct EthSign.ECSignature"
                                  },
                                  "typeName": {
                                    "id": 2506,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 2505,
                                      "name": "ECSignature",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 1436,
                                      "src": "15513:11:10"
                                    },
                                    "referencedDeclaration": 1436,
                                    "src": "15513:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                      "typeString": "struct EthSign.ECSignature"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2512,
                              "initialValue": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 2508,
                                    "name": "doc",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2417,
                                    "src": "15539:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                      "typeString": "struct EthSign.Document storage pointer"
                                    }
                                  },
                                  "id": 2509,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "signatureFieldForSaltedAddressWithIndex",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1471,
                                  "src": "15539:64:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ECSignature_$1436_storage_$",
                                    "typeString": "mapping(bytes32 => struct EthSign.ECSignature storage ref)"
                                  }
                                },
                                "id": 2511,
                                "indexExpression": {
                                  "id": 2510,
                                  "name": "saltedAddressWithIndexMappingKey",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2498,
                                  "src": "15629:32:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15539:144:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ECSignature_$1436_storage",
                                  "typeString": "struct EthSign.ECSignature storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15513:170:10"
                            },
                            {
                              "assignments": [
                                2514
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2514,
                                  "mutability": "mutable",
                                  "name": "fieldSigned",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2538,
                                  "src": "15701:16:10",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 2513,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15701:4:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2531,
                              "initialValue": {
                                "id": 2530,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "15720:85:10",
                                "subExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 2528,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 2523,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          "id": 2518,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 2515,
                                              "name": "ecs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2507,
                                              "src": "15722:3:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                                "typeString": "struct EthSign.ECSignature storage pointer"
                                              }
                                            },
                                            "id": 2516,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "r",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1431,
                                            "src": "15722:5:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "307830",
                                            "id": 2517,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "15731:3:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0x0"
                                          },
                                          "src": "15722:12:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          "id": 2522,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 2519,
                                              "name": "ecs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2507,
                                              "src": "15758:3:10",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                                "typeString": "struct EthSign.ECSignature storage pointer"
                                              }
                                            },
                                            "id": 2520,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "s",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1433,
                                            "src": "15758:5:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "307830",
                                            "id": 2521,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "15767:3:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0x0"
                                          },
                                          "src": "15758:12:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "15722:48:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        "id": 2527,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 2524,
                                            "name": "ecs",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2507,
                                            "src": "15794:3:10",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ECSignature_$1436_storage_ptr",
                                              "typeString": "struct EthSign.ECSignature storage pointer"
                                            }
                                          },
                                          "id": 2525,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "v",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 1435,
                                          "src": "15794:5:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 2526,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15803:1:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "15794:10:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "15722:82:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 2529,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "15721:84:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15701:104:10"
                            },
                            {
                              "expression": {
                                "id": 2536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 2532,
                                    "name": "nestedElement",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2480,
                                    "src": "15823:13:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                      "typeString": "bool[] memory"
                                    }
                                  },
                                  "id": 2534,
                                  "indexExpression": {
                                    "id": 2533,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2488,
                                    "src": "15837:1:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "15823:16:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 2535,
                                  "name": "fieldSigned",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2514,
                                  "src": "15842:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "15823:30:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2537,
                              "nodeType": "ExpressionStatement",
                              "src": "15823:30:10"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2491,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2488,
                            "src": "15239:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 2492,
                            "name": "numOfSignatureFieldsForSigner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2470,
                            "src": "15243:29:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15239:33:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2539,
                        "initializationExpression": {
                          "assignments": [
                            2488
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2488,
                              "mutability": "mutable",
                              "name": "j",
                              "nodeType": "VariableDeclaration",
                              "scope": 2539,
                              "src": "15224:9:10",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2487,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15224:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2490,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 2489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15236:1:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15224:13:10"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 2495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "15274:3:10",
                            "subExpression": {
                              "id": 2494,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2488,
                              "src": "15276:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2496,
                          "nodeType": "ExpressionStatement",
                          "src": "15274:3:10"
                        },
                        "nodeType": "ForStatement",
                        "src": "15219:649:10"
                      },
                      {
                        "expression": {
                          "id": 2545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 2540,
                                "name": "fieldSignedInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2413,
                                "src": "15881:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory"
                                }
                              },
                              "id": 2542,
                              "indexExpression": {
                                "id": 2541,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2446,
                                "src": "15897:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15881:18:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr",
                                "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory"
                              }
                            },
                            "id": 2543,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "signer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3957,
                            "src": "15881:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2544,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2456,
                            "src": "15909:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "15881:34:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2546,
                        "nodeType": "ExpressionStatement",
                        "src": "15881:34:10"
                      },
                      {
                        "expression": {
                          "id": 2552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 2547,
                                "name": "fieldSignedInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2413,
                                "src": "15929:15:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory[] memory"
                                }
                              },
                              "id": 2549,
                              "indexExpression": {
                                "id": 2548,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2446,
                                "src": "15945:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15929:18:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr",
                                "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus memory"
                              }
                            },
                            "id": 2550,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "fieldSigned",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3960,
                            "src": "15929:30:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2551,
                            "name": "nestedElement",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2480,
                            "src": "15962:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "src": "15929:46:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "id": 2553,
                        "nodeType": "ExpressionStatement",
                        "src": "15929:46:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2449,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2446,
                      "src": "14742:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 2450,
                      "name": "numOfSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2431,
                      "src": "14746:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14742:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2555,
                  "initializationExpression": {
                    "assignments": [
                      2446
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2446,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2555,
                        "src": "14727:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2445,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14727:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 2448,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 2447,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14739:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "14727:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 2453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "14760:3:10",
                      "subExpression": {
                        "id": 2452,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2446,
                        "src": "14762:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2454,
                    "nodeType": "ExpressionStatement",
                    "src": "14760:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "14722:1264:10"
                }
              ]
            },
            "functionSelector": "e894974f",
            "id": 2557,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2408,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2404,
                    "src": "14349:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2409,
                "modifierName": {
                  "id": 2407,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "14331:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "14331:30:10"
              }
            ],
            "name": "aggregateGetIsSignedForAllSignatureFields",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2406,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "14314:8:10"
            },
            "parameters": {
              "id": 2405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2404,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2557,
                  "src": "14255:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2403,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14255:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14254:21:10"
            },
            "returnParameters": {
              "id": 2414,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2413,
                  "mutability": "mutable",
                  "name": "fieldSignedInfo",
                  "nodeType": "VariableDeclaration",
                  "scope": 2557,
                  "src": "14379:58:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2411,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2410,
                        "name": "_HelperSignerSignatureFieldStatus",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3961,
                        "src": "14379:33:10"
                      },
                      "referencedDeclaration": 3961,
                      "src": "14379:33:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$__HelperSignerSignatureFieldStatus_$3961_storage_ptr",
                        "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus"
                      }
                    },
                    "id": 2412,
                    "nodeType": "ArrayTypeName",
                    "src": "14379:35:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$__HelperSignerSignatureFieldStatus_$3961_storage_$dyn_storage_ptr",
                      "typeString": "struct IEthSign._HelperSignerSignatureFieldStatus[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14378:60:10"
            },
            "scope": 3561,
            "src": "14204:1788:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4098
            ],
            "body": {
              "id": 2643,
              "nodeType": "Block",
              "src": "16204:662:10",
              "statements": [
                {
                  "assignments": [
                    2572
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2572,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2643,
                      "src": "16214:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2571,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2570,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "16214:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "16214:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2576,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2573,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "16237:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2575,
                    "indexExpression": {
                      "id": 2574,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2559,
                      "src": "16247:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "16237:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16214:45:10"
                },
                {
                  "assignments": [
                    2581
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2581,
                      "mutability": "mutable",
                      "name": "signersSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 2643,
                      "src": "16269:54:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                        "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                      },
                      "typeName": {
                        "id": 2580,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2579,
                          "name": "EnumerableSetUpgradeable.AddressSet",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1181,
                          "src": "16269:35:10"
                        },
                        "referencedDeclaration": 1181,
                        "src": "16269:35:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2584,
                  "initialValue": {
                    "expression": {
                      "id": 2582,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2572,
                      "src": "16326:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 2583,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "signersSet",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1448,
                    "src": "16326:14:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                      "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16269:71:10"
                },
                {
                  "assignments": [
                    2586
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2586,
                      "mutability": "mutable",
                      "name": "numOfSigners",
                      "nodeType": "VariableDeclaration",
                      "scope": 2643,
                      "src": "16350:20:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2585,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16350:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2590,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 2587,
                        "name": "signersSet",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2581,
                        "src": "16373:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet storage pointer"
                        }
                      },
                      "id": 2588,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1277,
                      "src": "16373:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                        "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 2589,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16373:19:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16350:42:10"
                },
                {
                  "expression": {
                    "id": 2598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2591,
                      "name": "hci",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2568,
                      "src": "16402:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct IEthSign._HelperCommentInfo memory[] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2596,
                          "name": "numOfSigners",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2586,
                          "src": "16433:12:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "16408:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (struct IEthSign._HelperCommentInfo memory[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2593,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2592,
                              "name": "_HelperCommentInfo",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3967,
                              "src": "16412:18:10"
                            },
                            "referencedDeclaration": 3967,
                            "src": "16412:18:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$__HelperCommentInfo_$3967_storage_ptr",
                              "typeString": "struct IEthSign._HelperCommentInfo"
                            }
                          },
                          "id": 2594,
                          "nodeType": "ArrayTypeName",
                          "src": "16412:20:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_storage_$dyn_storage_ptr",
                            "typeString": "struct IEthSign._HelperCommentInfo[]"
                          }
                        }
                      },
                      "id": 2597,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16408:38:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct IEthSign._HelperCommentInfo memory[] memory"
                      }
                    },
                    "src": "16402:44:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct IEthSign._HelperCommentInfo memory[] memory"
                    }
                  },
                  "id": 2599,
                  "nodeType": "ExpressionStatement",
                  "src": "16402:44:10"
                },
                {
                  "body": {
                    "id": 2641,
                    "nodeType": "Block",
                    "src": "16499:361:10",
                    "statements": [
                      {
                        "assignments": [
                          2611
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2611,
                            "mutability": "mutable",
                            "name": "signer",
                            "nodeType": "VariableDeclaration",
                            "scope": 2641,
                            "src": "16513:14:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2610,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16513:7:10",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2616,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2614,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2601,
                              "src": "16544:1:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2612,
                              "name": "signersSet",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2581,
                              "src": "16530:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1181_storage_ptr",
                                "typeString": "struct EnumerableSetUpgradeable.AddressSet storage pointer"
                              }
                            },
                            "id": 2613,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "at",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1304,
                            "src": "16530:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                              "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"
                            }
                          },
                          "id": 2615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16530:16:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16513:33:10"
                      },
                      {
                        "assignments": [
                          2618
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2618,
                            "mutability": "mutable",
                            "name": "saltedAddressMappingKey",
                            "nodeType": "VariableDeclaration",
                            "scope": 2641,
                            "src": "16560:31:10",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2617,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16560:7:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2623,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2620,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2559,
                              "src": "16639:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2621,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2611,
                              "src": "16668:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2619,
                            "name": "hashSaltedAddressMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              1847
                            ],
                            "referencedDeclaration": 1847,
                            "src": "16594:27:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,address) view returns (bytes32)"
                            }
                          },
                          "id": 2622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16594:94:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16560:128:10"
                      },
                      {
                        "expression": {
                          "id": 2629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 2624,
                                "name": "hci",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2568,
                                "src": "16702:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IEthSign._HelperCommentInfo memory[] memory"
                                }
                              },
                              "id": 2626,
                              "indexExpression": {
                                "id": 2625,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2601,
                                "src": "16706:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16702:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$__HelperCommentInfo_$3967_memory_ptr",
                                "typeString": "struct IEthSign._HelperCommentInfo memory"
                              }
                            },
                            "id": 2627,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "signer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3963,
                            "src": "16702:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2628,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2611,
                            "src": "16718:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16702:22:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2630,
                        "nodeType": "ExpressionStatement",
                        "src": "16702:22:10"
                      },
                      {
                        "expression": {
                          "id": 2639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 2631,
                                "name": "hci",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2568,
                                "src": "16738:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IEthSign._HelperCommentInfo memory[] memory"
                                }
                              },
                              "id": 2633,
                              "indexExpression": {
                                "id": 2632,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2601,
                                "src": "16742:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16738:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$__HelperCommentInfo_$3967_memory_ptr",
                                "typeString": "struct IEthSign._HelperCommentInfo memory"
                              }
                            },
                            "id": 2634,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "commentStorageInfo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3966,
                            "src": "16738:25:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StorageInfo_$3955_memory_ptr",
                              "typeString": "struct IEthSign.StorageInfo memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "expression": {
                                "id": 2635,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2572,
                                "src": "16766:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 2636,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "commentsForSaltedAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1476,
                              "src": "16766:28:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                                "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                              }
                            },
                            "id": 2638,
                            "indexExpression": {
                              "id": 2637,
                              "name": "saltedAddressMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2618,
                              "src": "16812:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16766:83:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                              "typeString": "struct IEthSign.StorageInfo storage ref"
                            }
                          },
                          "src": "16738:111:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StorageInfo_$3955_memory_ptr",
                            "typeString": "struct IEthSign.StorageInfo memory"
                          }
                        },
                        "id": 2640,
                        "nodeType": "ExpressionStatement",
                        "src": "16738:111:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2604,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2601,
                      "src": "16476:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 2605,
                      "name": "numOfSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2586,
                      "src": "16480:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16476:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2642,
                  "initializationExpression": {
                    "assignments": [
                      2601
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2601,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2642,
                        "src": "16461:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2600,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16461:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 2603,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 2602,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16473:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "16461:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 2608,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "16494:3:10",
                      "subExpression": {
                        "id": 2607,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2601,
                        "src": "16496:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2609,
                    "nodeType": "ExpressionStatement",
                    "src": "16494:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "16456:404:10"
                }
              ]
            },
            "functionSelector": "da7ead23",
            "id": 2644,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 2563,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2559,
                    "src": "16137:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 2564,
                "modifierName": {
                  "id": 2562,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "16119:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "16119:30:10"
              }
            ],
            "name": "aggregateGetAllCommentsOfAllSigners",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2561,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "16102:8:10"
            },
            "parameters": {
              "id": 2560,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2559,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2644,
                  "src": "16043:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2558,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16043:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16042:21:10"
            },
            "returnParameters": {
              "id": 2569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2568,
                  "mutability": "mutable",
                  "name": "hci",
                  "nodeType": "VariableDeclaration",
                  "scope": 2644,
                  "src": "16167:31:10",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct IEthSign._HelperCommentInfo[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2566,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2565,
                        "name": "_HelperCommentInfo",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3967,
                        "src": "16167:18:10"
                      },
                      "referencedDeclaration": 3967,
                      "src": "16167:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$__HelperCommentInfo_$3967_storage_ptr",
                        "typeString": "struct IEthSign._HelperCommentInfo"
                      }
                    },
                    "id": 2567,
                    "nodeType": "ArrayTypeName",
                    "src": "16167:20:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$__HelperCommentInfo_$3967_storage_$dyn_storage_ptr",
                      "typeString": "struct IEthSign._HelperCommentInfo[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16166:33:10"
            },
            "scope": 3561,
            "src": "15998:868:10",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2705,
              "nodeType": "Block",
              "src": "17038:404:10",
              "statements": [
                {
                  "assignments": [
                    2657
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2657,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2705,
                      "src": "17048:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2656,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2655,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "17048:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "17048:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2661,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2658,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "17071:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2660,
                    "indexExpression": {
                      "id": 2659,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2646,
                      "src": "17081:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "17071:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17048:45:10"
                },
                {
                  "expression": {
                    "id": 2666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2662,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2657,
                        "src": "17103:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2664,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1480,
                      "src": "17103:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2665,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2648,
                      "src": "17114:4:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "17103:15:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2667,
                  "nodeType": "ExpressionStatement",
                  "src": "17103:15:10"
                },
                {
                  "expression": {
                    "id": 2673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2668,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2657,
                        "src": "17128:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2670,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "birth",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1438,
                      "src": "17128:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2671,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967292,
                        "src": "17140:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 2672,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "number",
                      "nodeType": "MemberAccess",
                      "src": "17140:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17128:24:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2674,
                  "nodeType": "ExpressionStatement",
                  "src": "17128:24:10"
                },
                {
                  "expression": {
                    "id": 2679,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2675,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2657,
                        "src": "17162:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2677,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "expiration",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1440,
                      "src": "17162:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2678,
                      "name": "expiration",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2650,
                      "src": "17179:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17162:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2680,
                  "nodeType": "ExpressionStatement",
                  "src": "17162:27:10"
                },
                {
                  "expression": {
                    "id": 2686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2681,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2657,
                        "src": "17199:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2683,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "initiator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1478,
                      "src": "17199:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 2684,
                        "name": "_msgSender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3587
                        ],
                        "referencedDeclaration": 3587,
                        "src": "17215:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                          "typeString": "function () view returns (address)"
                        }
                      },
                      "id": 2685,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17215:12:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "17199:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2687,
                  "nodeType": "ExpressionStatement",
                  "src": "17199:28:10"
                },
                {
                  "expression": {
                    "id": 2692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2688,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2657,
                        "src": "17237:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2690,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "numOfSigners",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1442,
                      "src": "17237:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2691,
                      "name": "numOfSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2652,
                      "src": "17256:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17237:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2693,
                  "nodeType": "ExpressionStatement",
                  "src": "17237:31:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 2695,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2657,
                          "src": "17311:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 2696,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "initiator",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1478,
                        "src": "17311:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2697,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2646,
                        "src": "17338:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 2698,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2657,
                          "src": "17363:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 2699,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "name",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1480,
                        "src": "17363:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 2700,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2657,
                          "src": "17385:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 2701,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "numOfSigners",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1442,
                        "src": "17385:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2702,
                        "name": "expiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2650,
                        "src": "17415:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2694,
                      "name": "LogNewDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4201,
                      "src": "17283:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32,uint256,uint256)"
                      }
                    },
                    "id": 2703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17283:152:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2704,
                  "nodeType": "EmitStatement",
                  "src": "17278:157:10"
                }
              ]
            },
            "id": 2706,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_newBasicDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2653,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2646,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "16923:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2645,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16923:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2648,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "16952:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2647,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16952:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2650,
                  "mutability": "mutable",
                  "name": "expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "16974:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16974:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2652,
                  "mutability": "mutable",
                  "name": "numOfSigners",
                  "nodeType": "VariableDeclaration",
                  "scope": 2706,
                  "src": "17002:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2651,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17002:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16913:115:10"
            },
            "returnParameters": {
              "id": 2654,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17038:0:10"
            },
            "scope": 3561,
            "src": "16887:555:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2733,
              "nodeType": "Block",
              "src": "17537:162:10",
              "statements": [
                {
                  "assignments": [
                    2715
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2715,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2733,
                      "src": "17547:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2714,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2713,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "17547:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "17547:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2719,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2716,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "17570:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2718,
                    "indexExpression": {
                      "id": 2717,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2708,
                      "src": "17580:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "17570:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17547:45:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2725,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2710,
                        "src": "17621:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "expression": {
                          "id": 2720,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2715,
                          "src": "17602:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 2723,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signersSet",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1448,
                        "src": "17602:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                        }
                      },
                      "id": 2724,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1208,
                      "src": "17602:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$1181_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                        "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,address) returns (bool)"
                      }
                    },
                    "id": 2726,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17602:26:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2727,
                  "nodeType": "ExpressionStatement",
                  "src": "17602:26:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2729,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2710,
                        "src": "17672:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2730,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2708,
                        "src": "17680:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2728,
                      "name": "LogAddedNewSignerForDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4207,
                      "src": "17643:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 2731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17643:49:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2732,
                  "nodeType": "EmitStatement",
                  "src": "17638:54:10"
                }
              ]
            },
            "id": 2734,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_addSignerForDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2711,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2708,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2734,
                  "src": "17479:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2707,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17479:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2710,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2734,
                  "src": "17500:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2709,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17500:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17478:37:10"
            },
            "returnParameters": {
              "id": 2712,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17537:0:10"
            },
            "scope": 3561,
            "src": "17448:251:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2783,
              "nodeType": "Block",
              "src": "17868:386:10",
              "statements": [
                {
                  "assignments": [
                    2747
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2747,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2783,
                      "src": "17878:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2746,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2745,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "17878:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "17878:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2751,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2748,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "17901:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2750,
                    "indexExpression": {
                      "id": 2749,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2736,
                      "src": "17911:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "17901:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17878:45:10"
                },
                {
                  "assignments": [
                    2754
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2754,
                      "mutability": "mutable",
                      "name": "doc_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 2783,
                      "src": "17933:26:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 2753,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2752,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "17933:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "17933:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2757,
                  "initialValue": {
                    "expression": {
                      "id": 2755,
                      "name": "doc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2747,
                      "src": "17962:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document storage pointer"
                      }
                    },
                    "id": 2756,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "docStorageInfo",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 1445,
                    "src": "17962:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17933:47:10"
                },
                {
                  "expression": {
                    "id": 2762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2758,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2754,
                        "src": "17990:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2760,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "17990:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2761,
                      "name": "provider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2738,
                      "src": "18008:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "17990:26:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2763,
                  "nodeType": "ExpressionStatement",
                  "src": "17990:26:10"
                },
                {
                  "expression": {
                    "id": 2768,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2764,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2754,
                        "src": "18026:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2766,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id0",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3952,
                      "src": "18026:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2767,
                      "name": "storage_id0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2740,
                      "src": "18047:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18026:32:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2769,
                  "nodeType": "ExpressionStatement",
                  "src": "18026:32:10"
                },
                {
                  "expression": {
                    "id": 2774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2770,
                        "name": "doc_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2754,
                        "src": "18068:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2772,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3954,
                      "src": "18068:18:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2773,
                      "name": "storage_id1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2742,
                      "src": "18089:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18068:32:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2775,
                  "nodeType": "ExpressionStatement",
                  "src": "18068:32:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2777,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2736,
                        "src": "18154:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2778,
                        "name": "provider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2738,
                        "src": "18179:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2779,
                        "name": "storage_id0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2740,
                        "src": "18201:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2780,
                        "name": "storage_id1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2742,
                        "src": "18226:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2776,
                      "name": "LogChangedDocumentStorage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4217,
                      "src": "18115:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 2781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18115:132:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2782,
                  "nodeType": "EmitStatement",
                  "src": "18110:137:10"
                }
              ]
            },
            "id": 2784,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setDocStorageForDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2743,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2736,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "17749:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2735,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17749:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2738,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "17778:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2737,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17778:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2740,
                  "mutability": "mutable",
                  "name": "storage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "17804:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2739,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17804:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2742,
                  "mutability": "mutable",
                  "name": "storage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2784,
                  "src": "17833:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2741,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17833:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17739:119:10"
            },
            "returnParameters": {
              "id": 2744,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17868:0:10"
            },
            "scope": 3561,
            "src": "17705:549:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2837,
              "nodeType": "Block",
              "src": "18424:477:10",
              "statements": [
                {
                  "assignments": [
                    2797
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2797,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2837,
                      "src": "18434:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2796,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2795,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "18434:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "18434:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2801,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2798,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "18457:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2800,
                    "indexExpression": {
                      "id": 2799,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2786,
                      "src": "18467:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18457:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18434:45:10"
                },
                {
                  "assignments": [
                    2804
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2804,
                      "mutability": "mutable",
                      "name": "meta_si",
                      "nodeType": "VariableDeclaration",
                      "scope": 2837,
                      "src": "18489:27:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 2803,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2802,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "18489:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "18489:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2811,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 2805,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2797,
                        "src": "18519:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 2806,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metadataStorageInfoForSaltedDocument",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1453,
                      "src": "18519:40:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 2810,
                    "indexExpression": {
                      "arguments": [
                        {
                          "id": 2808,
                          "name": "documentKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2786,
                          "src": "18602:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 2807,
                        "name": "hashSaltedDocumentMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          1739
                        ],
                        "referencedDeclaration": 1739,
                        "src": "18573:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32) view returns (bytes32)"
                        }
                      },
                      "id": 2809,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "18573:41:10",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "18519:105:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18489:135:10"
                },
                {
                  "expression": {
                    "id": 2816,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2812,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2804,
                        "src": "18634:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2814,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "18634:16:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2815,
                      "name": "provider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2788,
                      "src": "18653:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18634:27:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2817,
                  "nodeType": "ExpressionStatement",
                  "src": "18634:27:10"
                },
                {
                  "expression": {
                    "id": 2822,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2818,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2804,
                        "src": "18671:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2820,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id0",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3952,
                      "src": "18671:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2821,
                      "name": "storage_id0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2790,
                      "src": "18693:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18671:33:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2823,
                  "nodeType": "ExpressionStatement",
                  "src": "18671:33:10"
                },
                {
                  "expression": {
                    "id": 2828,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 2824,
                        "name": "meta_si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2804,
                        "src": "18714:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 2826,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3954,
                      "src": "18714:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2827,
                      "name": "storage_id1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2792,
                      "src": "18736:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "18714:33:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 2829,
                  "nodeType": "ExpressionStatement",
                  "src": "18714:33:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2831,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2786,
                        "src": "18801:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2832,
                        "name": "provider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2788,
                        "src": "18826:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2833,
                        "name": "storage_id0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2790,
                        "src": "18848:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2834,
                        "name": "storage_id1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2792,
                        "src": "18873:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2830,
                      "name": "LogChangedMetadataStorage",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4227,
                      "src": "18762:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 2835,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18762:132:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2836,
                  "nodeType": "EmitStatement",
                  "src": "18757:137:10"
                }
              ]
            },
            "id": 2838,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setMetaStorageForDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2793,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2786,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2838,
                  "src": "18305:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2785,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18305:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2788,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "scope": 2838,
                  "src": "18334:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2787,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18334:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2790,
                  "mutability": "mutable",
                  "name": "storage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 2838,
                  "src": "18360:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2789,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18360:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2792,
                  "mutability": "mutable",
                  "name": "storage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2838,
                  "src": "18389:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2791,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18389:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18295:119:10"
            },
            "returnParameters": {
              "id": 2794,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18424:0:10"
            },
            "scope": 3561,
            "src": "18260:641:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2885,
              "nodeType": "Block",
              "src": "19067:524:10",
              "statements": [
                {
                  "assignments": [
                    2849
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2849,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 2885,
                      "src": "19077:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2848,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2847,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "19077:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "19077:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2853,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2850,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "19100:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2852,
                    "indexExpression": {
                      "id": 2851,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2840,
                      "src": "19110:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19100:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19077:45:10"
                },
                {
                  "assignments": [
                    2855
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2855,
                      "mutability": "mutable",
                      "name": "saltedAddressMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 2885,
                      "src": "19132:31:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2854,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "19132:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2860,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2857,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2840,
                        "src": "19207:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2858,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2842,
                        "src": "19232:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2856,
                      "name": "hashSaltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1847
                      ],
                      "referencedDeclaration": 1847,
                      "src": "19166:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,address) view returns (bytes32)"
                      }
                    },
                    "id": 2859,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19166:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19132:116:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "expression": {
                              "id": 2862,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2849,
                              "src": "19279:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 2863,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "numOfSignatureFieldsForSaltedAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1462,
                            "src": "19279:40:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 2865,
                          "indexExpression": {
                            "id": 2864,
                            "name": "saltedAddressMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2855,
                            "src": "19320:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "19279:65:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 2866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "19364:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "19279:86:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e554d5f5349475f455849535453",
                        "id": 2868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19379:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4caa10563f3964f7d3c9b94751dc759015856f997e1a275c1cc7fe40afcd7ba8",
                          "typeString": "literal_string \"NUM_SIG_EXISTS\""
                        },
                        "value": "NUM_SIG_EXISTS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4caa10563f3964f7d3c9b94751dc759015856f997e1a275c1cc7fe40afcd7ba8",
                          "typeString": "literal_string \"NUM_SIG_EXISTS\""
                        }
                      ],
                      "id": 2861,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "19258:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2869,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19258:147:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2870,
                  "nodeType": "ExpressionStatement",
                  "src": "19258:147:10"
                },
                {
                  "expression": {
                    "id": 2877,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "expression": {
                          "id": 2871,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2849,
                          "src": "19415:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 2874,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "numOfSignatureFieldsForSaltedAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1462,
                        "src": "19415:40:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 2875,
                      "indexExpression": {
                        "id": 2873,
                        "name": "saltedAddressMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2855,
                        "src": "19469:23:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19415:87:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2876,
                      "name": "number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2844,
                      "src": "19505:6:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19415:96:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2878,
                  "nodeType": "ExpressionStatement",
                  "src": "19415:96:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2880,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2840,
                        "src": "19556:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2881,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2842,
                        "src": "19569:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2882,
                        "name": "number",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2844,
                        "src": "19577:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2879,
                      "name": "LogSetNumberOfSignatureFields",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4235,
                      "src": "19526:29:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 2883,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19526:58:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2884,
                  "nodeType": "EmitStatement",
                  "src": "19521:63:10"
                }
              ]
            },
            "id": 2886,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setNumberOfSignatureFieldsAsInitiatorForSignerForDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2845,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2840,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 2886,
                  "src": "18984:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2839,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "18984:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2842,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 2886,
                  "src": "19013:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2841,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19013:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2844,
                  "mutability": "mutable",
                  "name": "number",
                  "nodeType": "VariableDeclaration",
                  "scope": 2886,
                  "src": "19037:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2843,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19037:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18974:83:10"
            },
            "returnParameters": {
              "id": 2846,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19067:0:10"
            },
            "scope": 3561,
            "src": "18907:684:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3017,
              "nodeType": "Block",
              "src": "19850:2037:10",
              "statements": [
                {
                  "assignments": [
                    2899
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2899,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 3017,
                      "src": "19860:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 2898,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2897,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "19860:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "19860:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2903,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2900,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "19883:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 2902,
                    "indexExpression": {
                      "id": 2901,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2888,
                      "src": "19893:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19883:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19860:45:10"
                },
                {
                  "assignments": [
                    2905
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2905,
                      "mutability": "mutable",
                      "name": "saltedAddressMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 3017,
                      "src": "19915:31:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 2904,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "19915:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2910,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2907,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2888,
                        "src": "19990:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2908,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2890,
                        "src": "20015:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2906,
                      "name": "hashSaltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        1847
                      ],
                      "referencedDeclaration": 1847,
                      "src": "19949:27:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,address) view returns (bytes32)"
                      }
                    },
                    "id": 2909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19949:82:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19915:116:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2918,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 2912,
                            "name": "doc",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2899,
                            "src": "20062:3:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                              "typeString": "struct EthSign.Document storage pointer"
                            }
                          },
                          "id": 2913,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numOfSigners",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1442,
                          "src": "20062:16:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 2914,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2899,
                                "src": "20082:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 2915,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "signersSet",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1448,
                              "src": "20082:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                                "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                              }
                            },
                            "id": 2916,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1277,
                            "src": "20082:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                              "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 2917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20082:23:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20062:43:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5349474e4552535f4e4f545f46494e414c495a4544",
                        "id": 2919,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20119:23:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c9649649b538c488892778461d94528c2432c82381666c9bc88b793e71eb8daa",
                          "typeString": "literal_string \"SIGNERS_NOT_FINALIZED\""
                        },
                        "value": "SIGNERS_NOT_FINALIZED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c9649649b538c488892778461d94528c2432c82381666c9bc88b793e71eb8daa",
                          "typeString": "literal_string \"SIGNERS_NOT_FINALIZED\""
                        }
                      ],
                      "id": 2911,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "20041:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2920,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20041:111:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2921,
                  "nodeType": "ExpressionStatement",
                  "src": "20041:111:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2923,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2892,
                          "src": "20183:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "baseExpression": {
                            "expression": {
                              "id": 2924,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2899,
                              "src": "20207:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 2925,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "numOfSignatureFieldsForSaltedAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1462,
                            "src": "20207:40:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 2927,
                          "indexExpression": {
                            "id": 2926,
                            "name": "saltedAddressMappingKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2905,
                            "src": "20269:23:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "20207:103:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20183:127:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4f55545f4f465f424f554e4453",
                        "id": 2929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20324:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_01a63436c63f1d19f1f540ffbc42d170040b95f28e88d83e291ae055ac1ff22e",
                          "typeString": "literal_string \"OUT_OF_BOUNDS\""
                        },
                        "value": "OUT_OF_BOUNDS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_01a63436c63f1d19f1f540ffbc42d170040b95f28e88d83e291ae055ac1ff22e",
                          "typeString": "literal_string \"OUT_OF_BOUNDS\""
                        }
                      ],
                      "id": 2922,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "20162:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20162:187:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2931,
                  "nodeType": "ExpressionStatement",
                  "src": "20162:187:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2934,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2890,
                            "src": "20421:6:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "id": 2936,
                                "name": "documentKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2888,
                                "src": "20504:11:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 2937,
                                "name": "signer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2890,
                                "src": "20537:6:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2938,
                                "name": "index",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2892,
                                "src": "20565:5:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 2935,
                              "name": "_hashSaltedAddressWithIndexMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                1907
                              ],
                              "referencedDeclaration": 1907,
                              "src": "20445:37:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (bytes32,address,uint256) view returns (bytes32)"
                              }
                            },
                            "id": 2939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20445:143:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 2940,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2894,
                            "src": "20606:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "id": 2933,
                          "name": "verifyECSignatureSigner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3685,
                          "src": "20380:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,bytes calldata) view returns (bool)"
                          }
                        },
                        "id": 2941,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20380:249:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "494e56414c49445f5349474e4552",
                        "id": 2942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "20643:16:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c",
                          "typeString": "literal_string \"INVALID_SIGNER\""
                        },
                        "value": "INVALID_SIGNER"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c",
                          "typeString": "literal_string \"INVALID_SIGNER\""
                        }
                      ],
                      "id": 2932,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "20359:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2943,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20359:310:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2944,
                  "nodeType": "ExpressionStatement",
                  "src": "20359:310:10"
                },
                {
                  "expression": {
                    "id": 2954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 2945,
                              "name": "documentsExtended",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1536,
                              "src": "20679:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended storage ref)"
                              }
                            },
                            "id": 2947,
                            "indexExpression": {
                              "id": 2946,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2888,
                              "src": "20697:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "20679:30:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentExtended_$1549_storage",
                              "typeString": "struct EthSign.DocumentExtended storage ref"
                            }
                          },
                          "id": 2948,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ecdsaForSaltedAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1542,
                          "src": "20679:52:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bytes_storage_$20_storage_$",
                            "typeString": "mapping(bytes32 => bytes storage ref[20] storage ref)"
                          }
                        },
                        "id": 2950,
                        "indexExpression": {
                          "id": 2949,
                          "name": "saltedAddressMappingKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2905,
                          "src": "20745:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "20679:99:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$20_storage",
                          "typeString": "bytes storage ref[20] storage ref"
                        }
                      },
                      "id": 2952,
                      "indexExpression": {
                        "id": 2951,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2892,
                        "src": "20779:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20679:106:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2953,
                      "name": "signature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2894,
                      "src": "20788:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes calldata"
                      }
                    },
                    "src": "20679:118:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 2955,
                  "nodeType": "ExpressionStatement",
                  "src": "20679:118:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2957,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2888,
                        "src": "20844:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 2958,
                        "name": "signer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2890,
                        "src": "20857:6:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2959,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2892,
                        "src": "20865:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2956,
                      "name": "LogSignedDocumentSignatureField",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4243,
                      "src": "20812:31:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,uint256)"
                      }
                    },
                    "id": 2960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20812:59:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2961,
                  "nodeType": "EmitStatement",
                  "src": "20807:64:10"
                },
                {
                  "condition": {
                    "id": 2970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "20898:128:10",
                    "subExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "expression": {
                            "baseExpression": {
                              "id": 2962,
                              "name": "documentsExtended",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1536,
                              "src": "20899:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
                                "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended storage ref)"
                              }
                            },
                            "id": 2964,
                            "indexExpression": {
                              "id": 2963,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2888,
                              "src": "20917:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "20899:30:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DocumentExtended_$1549_storage",
                              "typeString": "struct EthSign.DocumentExtended storage ref"
                            }
                          },
                          "id": 2965,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ecdsaForSaltedAddressHasBeenFilled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1548,
                          "src": "20899:65:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$20_storage_$",
                            "typeString": "mapping(bytes32 => bool[20] storage ref)"
                          }
                        },
                        "id": 2967,
                        "indexExpression": {
                          "id": 2966,
                          "name": "saltedAddressMappingKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2905,
                          "src": "20982:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "20899:120:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$20_storage",
                          "typeString": "bool[20] storage ref"
                        }
                      },
                      "id": 2969,
                      "indexExpression": {
                        "id": 2968,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2892,
                        "src": "21020:5:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "20899:127:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3016,
                  "nodeType": "IfStatement",
                  "src": "20881:1000:10",
                  "trueBody": {
                    "id": 3015,
                    "nodeType": "Block",
                    "src": "21037:844:10",
                    "statements": [
                      {
                        "expression": {
                          "id": 2980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 2971,
                                    "name": "documentsExtended",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1536,
                                    "src": "21051:17:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_DocumentExtended_$1549_storage_$",
                                      "typeString": "mapping(bytes32 => struct EthSign.DocumentExtended storage ref)"
                                    }
                                  },
                                  "id": 2973,
                                  "indexExpression": {
                                    "id": 2972,
                                    "name": "documentKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2888,
                                    "src": "21069:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "21051:30:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DocumentExtended_$1549_storage",
                                    "typeString": "struct EthSign.DocumentExtended storage ref"
                                  }
                                },
                                "id": 2974,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "ecdsaForSaltedAddressHasBeenFilled",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1548,
                                "src": "21051:65:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_bool_$20_storage_$",
                                  "typeString": "mapping(bytes32 => bool[20] storage ref)"
                                }
                              },
                              "id": 2976,
                              "indexExpression": {
                                "id": 2975,
                                "name": "saltedAddressMappingKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2905,
                                "src": "21134:23:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21051:120:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$20_storage",
                                "typeString": "bool[20] storage ref"
                              }
                            },
                            "id": 2978,
                            "indexExpression": {
                              "id": 2977,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2892,
                              "src": "21172:5:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "21051:127:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 2979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21181:4:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "21051:134:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2981,
                        "nodeType": "ExpressionStatement",
                        "src": "21051:134:10"
                      },
                      {
                        "expression": {
                          "id": 2986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": true,
                          "src": "21199:103:10",
                          "subExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 2982,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2899,
                                "src": "21201:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 2983,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numOfSignedSignatureFieldsForSaltedAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1466,
                              "src": "21201:46:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 2985,
                            "indexExpression": {
                              "id": 2984,
                              "name": "saltedAddressMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2905,
                              "src": "21265:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "21201:101:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2987,
                        "nodeType": "ExpressionStatement",
                        "src": "21199:103:10"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 2988,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2899,
                                "src": "21337:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 2989,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numOfSignedSignatureFieldsForSaltedAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1466,
                              "src": "21337:46:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 2991,
                            "indexExpression": {
                              "id": 2990,
                              "name": "saltedAddressMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2905,
                              "src": "21405:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "21337:109:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "baseExpression": {
                              "expression": {
                                "id": 2992,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2899,
                                "src": "21466:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 2993,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numOfSignatureFieldsForSaltedAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1462,
                              "src": "21466:40:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 2995,
                            "indexExpression": {
                              "id": 2994,
                              "name": "saltedAddressMappingKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2905,
                              "src": "21528:23:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "21466:103:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "21337:232:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3014,
                        "nodeType": "IfStatement",
                        "src": "21316:555:10",
                        "trueBody": {
                          "id": 3013,
                          "nodeType": "Block",
                          "src": "21584:287:10",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3005,
                                    "name": "signer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2890,
                                    "src": "21788:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "baseExpression": {
                                      "expression": {
                                        "id": 2997,
                                        "name": "doc",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2899,
                                        "src": "21602:3:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                          "typeString": "struct EthSign.Document storage pointer"
                                        }
                                      },
                                      "id": 3002,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "numOfSignedSignersSetForSaltedMetaDocument",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1458,
                                      "src": "21602:67:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$1181_storage_$",
                                        "typeString": "mapping(bytes32 => struct EnumerableSetUpgradeable.AddressSet storage ref)"
                                      }
                                    },
                                    "id": 3003,
                                    "indexExpression": {
                                      "arguments": [
                                        {
                                          "id": 3000,
                                          "name": "documentKey",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2888,
                                          "src": "21728:11:10",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 2999,
                                        "name": "hashSaltedMetaDocumentMappingKey",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          1790
                                        ],
                                        "referencedDeclaration": 1790,
                                        "src": "21695:32:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes32) view returns (bytes32)"
                                        }
                                      },
                                      "id": 3001,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "21695:45:10",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "21602:160:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                                      "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                                    }
                                  },
                                  "id": 3004,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1208,
                                  "src": "21602:185:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$1181_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                                    "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,address) returns (bool)"
                                  }
                                },
                                "id": 3006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21602:193:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 3007,
                              "nodeType": "ExpressionStatement",
                              "src": "21602:193:10"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 3009,
                                    "name": "documentKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2888,
                                    "src": "21836:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3010,
                                    "name": "signer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2890,
                                    "src": "21849:6:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3008,
                                  "name": "LogSignedDocument",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4249,
                                  "src": "21818:17:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address)"
                                  }
                                },
                                "id": 3011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21818:38:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3012,
                              "nodeType": "EmitStatement",
                              "src": "21813:43:10"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "id": 3018,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setSignatureFieldAtIndexForSignerForDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2895,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2888,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3018,
                  "src": "19734:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2887,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "19734:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2890,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3018,
                  "src": "19763:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2889,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19763:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2892,
                  "mutability": "mutable",
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 3018,
                  "src": "19787:13:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2891,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "19787:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2894,
                  "mutability": "mutable",
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 3018,
                  "src": "19810:24:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2893,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "19810:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19724:116:10"
            },
            "returnParameters": {
              "id": 2896,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19850:0:10"
            },
            "scope": 3561,
            "src": "19670:2217:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              4166
            ],
            "body": {
              "id": 3051,
              "nodeType": "Block",
              "src": "22247:169:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3044,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3020,
                        "src": "22299:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "hexValue": "307830",
                        "id": 3045,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22324:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0x0"
                      },
                      {
                        "id": 3046,
                        "name": "provider",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3022,
                        "src": "22341:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3047,
                        "name": "storage_id0",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3024,
                        "src": "22363:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3048,
                        "name": "storage_id1",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3026,
                        "src": "22388:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3043,
                      "name": "_setDocumentCommentsAsSigner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3199,
                      "src": "22257:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 3049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22257:152:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3050,
                  "nodeType": "ExpressionStatement",
                  "src": "22257:152:10"
                }
              ]
            },
            "functionSelector": "23a559d5",
            "id": 3052,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3030,
                "modifierName": {
                  "id": 3029,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "22091:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22091:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3032,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3020,
                    "src": "22131:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3033,
                "modifierName": {
                  "id": 3031,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "22113:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22113:30:10"
              },
              {
                "arguments": [
                  {
                    "id": 3035,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3020,
                    "src": "22174:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3036,
                "modifierName": {
                  "id": 3034,
                  "name": "documentHasNotExpired",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1639,
                  "src": "22152:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22152:34:10"
              },
              {
                "arguments": [
                  {
                    "id": 3038,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3020,
                    "src": "22216:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3039,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3587
                      ],
                      "referencedDeclaration": 3587,
                      "src": "22229:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 3040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22229:12:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3041,
                "modifierName": {
                  "id": 3037,
                  "name": "onlyAuthorizedSigner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1685,
                  "src": "22195:20:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22195:47:10"
              }
            ],
            "name": "setDocumentCommentsAsSigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3028,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "22074:8:10"
            },
            "parameters": {
              "id": 3027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3020,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3052,
                  "src": "21939:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3019,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21939:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3022,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "scope": 3052,
                  "src": "21968:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3021,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21968:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3024,
                  "mutability": "mutable",
                  "name": "storage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 3052,
                  "src": "21994:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3023,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "21994:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3026,
                  "mutability": "mutable",
                  "name": "storage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3052,
                  "src": "22023:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3025,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "22023:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21929:119:10"
            },
            "returnParameters": {
              "id": 3042,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22247:0:10"
            },
            "scope": 3561,
            "src": "21893:523:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4172
            ],
            "body": {
              "id": 3110,
              "nodeType": "Block",
              "src": "22670:415:10",
              "statements": [
                {
                  "assignments": [
                    3071
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3071,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 3110,
                      "src": "22680:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 3070,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 3069,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "22680:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "22680:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3075,
                  "initialValue": {
                    "baseExpression": {
                      "id": 3072,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "22703:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 3074,
                    "indexExpression": {
                      "id": 3073,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3054,
                      "src": "22713:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "22703:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22680:45:10"
                },
                {
                  "assignments": [
                    3077
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3077,
                      "mutability": "mutable",
                      "name": "numberOfSigners",
                      "nodeType": "VariableDeclaration",
                      "scope": 3110,
                      "src": "22735:23:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3076,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "22735:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3082,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "expression": {
                          "id": 3078,
                          "name": "doc",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3071,
                          "src": "22761:3:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                            "typeString": "struct EthSign.Document storage pointer"
                          }
                        },
                        "id": 3079,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signersSet",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1448,
                        "src": "22761:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                          "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                        }
                      },
                      "id": 3080,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1277,
                      "src": "22761:21:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                        "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 3081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22761:23:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "22735:49:10"
                },
                {
                  "body": {
                    "id": 3108,
                    "nodeType": "Block",
                    "src": "22840:239:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3094,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3054,
                              "src": "22900:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 3096,
                                  "name": "documentKey",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3054,
                                  "src": "22957:11:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 3100,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3084,
                                      "src": "22988:1:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "expression": {
                                        "id": 3097,
                                        "name": "doc",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3071,
                                        "src": "22970:3:10",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                          "typeString": "struct EthSign.Document storage pointer"
                                        }
                                      },
                                      "id": 3098,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "signersSet",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1448,
                                      "src": "22970:14:10",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                                        "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                                      }
                                    },
                                    "id": 3099,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "at",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1304,
                                    "src": "22970:17:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                                      "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer,uint256) view returns (address)"
                                    }
                                  },
                                  "id": 3101,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22970:20:10",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3095,
                                "name": "hashSaltedAddressMappingKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  1847
                                ],
                                "referencedDeclaration": 1847,
                                "src": "22929:27:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes32,address) view returns (bytes32)"
                                }
                              },
                              "id": 3102,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22929:62:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "hexValue": "307830",
                              "id": 3103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23009:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0x0"
                            },
                            {
                              "hexValue": "307830",
                              "id": 3104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23030:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0x0"
                            },
                            {
                              "hexValue": "307830",
                              "id": 3105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "23051:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0x0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 3093,
                            "name": "_setDocumentCommentsAsSigner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3199,
                            "src": "22854:28:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32,bytes32,bytes32,bytes32)"
                            }
                          },
                          "id": 3106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22854:214:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3107,
                        "nodeType": "ExpressionStatement",
                        "src": "22854:214:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3087,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3084,
                      "src": "22814:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "id": 3088,
                      "name": "numberOfSigners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3077,
                      "src": "22818:15:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "22814:19:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3109,
                  "initializationExpression": {
                    "assignments": [
                      3084
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3084,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3109,
                        "src": "22799:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3083,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22799:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3086,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3085,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "22811:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "22799:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "22835:3:10",
                      "subExpression": {
                        "id": 3090,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3084,
                        "src": "22837:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3092,
                    "nodeType": "ExpressionStatement",
                    "src": "22835:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "22794:285:10"
                }
              ]
            },
            "functionSelector": "039a2195",
            "id": 3111,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3058,
                "modifierName": {
                  "id": 3057,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "22527:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22527:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3060,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3054,
                    "src": "22567:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3061,
                "modifierName": {
                  "id": 3059,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "22549:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22549:30:10"
              },
              {
                "arguments": [
                  {
                    "id": 3063,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3054,
                    "src": "22610:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3064,
                "modifierName": {
                  "id": 3062,
                  "name": "documentHasNotExpired",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1639,
                  "src": "22588:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22588:34:10"
              },
              {
                "arguments": [
                  {
                    "id": 3066,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3054,
                    "src": "22653:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3067,
                "modifierName": {
                  "id": 3065,
                  "name": "onlyDocumentInitiator",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1661,
                  "src": "22631:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "22631:34:10"
              }
            ],
            "name": "clearDocumentCommentsAsInitiator",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3056,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "22510:8:10"
            },
            "parameters": {
              "id": 3055,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3054,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3111,
                  "src": "22464:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3053,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "22464:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22463:21:10"
            },
            "returnParameters": {
              "id": 3068,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22670:0:10"
            },
            "scope": 3561,
            "src": "22422:663:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3198,
              "nodeType": "Block",
              "src": "23298:999:10",
              "statements": [
                {
                  "assignments": [
                    3126
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3126,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 3198,
                      "src": "23308:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 3125,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 3124,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "23308:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "23308:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3130,
                  "initialValue": {
                    "baseExpression": {
                      "id": 3127,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "23331:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 3129,
                    "indexExpression": {
                      "id": 3128,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3113,
                      "src": "23341:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "23331:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23308:45:10"
                },
                {
                  "assignments": [
                    3132
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3132,
                      "mutability": "mutable",
                      "name": "_saltedAddressMappingKey",
                      "nodeType": "VariableDeclaration",
                      "scope": 3198,
                      "src": "23363:32:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3131,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "23363:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3134,
                  "initialValue": {
                    "id": 3133,
                    "name": "saltedAddressMappingKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3115,
                    "src": "23398:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23363:58:10"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3137,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3135,
                      "name": "_saltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3132,
                      "src": "23435:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "307830",
                      "id": 3136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23463:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0x0"
                    },
                    "src": "23435:31:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3146,
                  "nodeType": "IfStatement",
                  "src": "23431:176:10",
                  "trueBody": {
                    "expression": {
                      "id": 3144,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "id": 3138,
                        "name": "_saltedAddressMappingKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3132,
                        "src": "23480:24:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "arguments": [
                          {
                            "id": 3140,
                            "name": "documentKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3113,
                            "src": "23552:11:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 3141,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3587
                              ],
                              "referencedDeclaration": 3587,
                              "src": "23581:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 3142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23581:12:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3139,
                          "name": "hashSaltedAddressMappingKey",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1847
                          ],
                          "referencedDeclaration": 1847,
                          "src": "23507:27:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32,address) view returns (bytes32)"
                          }
                        },
                        "id": 3143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23507:100:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "src": "23480:127:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3145,
                    "nodeType": "ExpressionStatement",
                    "src": "23480:127:10"
                  }
                },
                {
                  "assignments": [
                    3149
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3149,
                      "mutability": "mutable",
                      "name": "si",
                      "nodeType": "VariableDeclaration",
                      "scope": 3198,
                      "src": "23617:22:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                        "typeString": "struct IEthSign.StorageInfo"
                      },
                      "typeName": {
                        "id": 3148,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 3147,
                          "name": "StorageInfo",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 3955,
                          "src": "23617:11:10"
                        },
                        "referencedDeclaration": 3955,
                        "src": "23617:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3154,
                  "initialValue": {
                    "baseExpression": {
                      "expression": {
                        "id": 3150,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3126,
                        "src": "23642:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 3151,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "commentsForSaltedAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1476,
                      "src": "23642:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_StorageInfo_$3955_storage_$",
                        "typeString": "mapping(bytes32 => struct IEthSign.StorageInfo storage ref)"
                      }
                    },
                    "id": 3153,
                    "indexExpression": {
                      "id": 3152,
                      "name": "_saltedAddressMappingKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3132,
                      "src": "23684:24:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "23642:76:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_StorageInfo_$3955_storage",
                      "typeString": "struct IEthSign.StorageInfo storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "23617:101:10"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 3155,
                        "name": "si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3149,
                        "src": "23732:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 3156,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "23732:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 3157,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "23747:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "23732:16:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 3178,
                    "nodeType": "Block",
                    "src": "23970:213:10",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3170,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3587
                                ],
                                "referencedDeclaration": 3587,
                                "src": "24033:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 3171,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24033:12:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3172,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3113,
                              "src": "24063:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3173,
                              "name": "provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3117,
                              "src": "24092:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3174,
                              "name": "storage_id0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3119,
                              "src": "24118:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3175,
                              "name": "storage_id1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3121,
                              "src": "24147:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3169,
                            "name": "LogEditedCommentOnDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4273,
                            "src": "23989:26:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32,bytes32,bytes32,bytes32)"
                            }
                          },
                          "id": 3176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23989:183:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3177,
                        "nodeType": "EmitStatement",
                        "src": "23984:188:10"
                      }
                    ]
                  },
                  "id": 3179,
                  "nodeType": "IfStatement",
                  "src": "23728:455:10",
                  "trueBody": {
                    "id": 3168,
                    "nodeType": "Block",
                    "src": "23750:214:10",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3160,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3587
                                ],
                                "referencedDeclaration": 3587,
                                "src": "23814:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 3161,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23814:12:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3162,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3113,
                              "src": "23844:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3163,
                              "name": "provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3117,
                              "src": "23873:8:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3164,
                              "name": "storage_id0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3119,
                              "src": "23899:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3165,
                              "name": "storage_id1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3121,
                              "src": "23928:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3159,
                            "name": "LogLeftNewCommentOnDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4261,
                            "src": "23769:27:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32,bytes32,bytes32,bytes32)"
                            }
                          },
                          "id": 3166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23769:184:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3167,
                        "nodeType": "EmitStatement",
                        "src": "23764:189:10"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 3184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 3180,
                        "name": "si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3149,
                        "src": "24192:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 3182,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "provider",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3950,
                      "src": "24192:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3183,
                      "name": "provider",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3117,
                      "src": "24206:8:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "24192:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3185,
                  "nodeType": "ExpressionStatement",
                  "src": "24192:22:10"
                },
                {
                  "expression": {
                    "id": 3190,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 3186,
                        "name": "si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3149,
                        "src": "24224:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 3188,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id0",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3952,
                      "src": "24224:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3189,
                      "name": "storage_id0",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3119,
                      "src": "24241:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "24224:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3191,
                  "nodeType": "ExpressionStatement",
                  "src": "24224:28:10"
                },
                {
                  "expression": {
                    "id": 3196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 3192,
                        "name": "si",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3149,
                        "src": "24262:2:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StorageInfo_$3955_storage_ptr",
                          "typeString": "struct IEthSign.StorageInfo storage pointer"
                        }
                      },
                      "id": 3194,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "storage_id1",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3954,
                      "src": "24262:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3195,
                      "name": "storage_id1",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3121,
                      "src": "24279:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "24262:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 3197,
                  "nodeType": "ExpressionStatement",
                  "src": "24262:28:10"
                }
              ]
            },
            "id": 3199,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setDocumentCommentsAsSigner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3113,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3199,
                  "src": "23138:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3112,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "23138:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3115,
                  "mutability": "mutable",
                  "name": "saltedAddressMappingKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3199,
                  "src": "23167:31:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3114,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "23167:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3117,
                  "mutability": "mutable",
                  "name": "provider",
                  "nodeType": "VariableDeclaration",
                  "scope": 3199,
                  "src": "23208:16:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3116,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "23208:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3119,
                  "mutability": "mutable",
                  "name": "storage_id0",
                  "nodeType": "VariableDeclaration",
                  "scope": 3199,
                  "src": "23234:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3118,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "23234:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3121,
                  "mutability": "mutable",
                  "name": "storage_id1",
                  "nodeType": "VariableDeclaration",
                  "scope": 3199,
                  "src": "23263:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3120,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "23263:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23128:160:10"
            },
            "returnParameters": {
              "id": 3123,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23298:0:10"
            },
            "scope": 3561,
            "src": "23091:1206:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3215,
              "nodeType": "Block",
              "src": "24432:68:10",
              "statements": [
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 3210,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3587
                          ],
                          "referencedDeclaration": 3587,
                          "src": "24467:10:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                            "typeString": "function () view returns (address)"
                          }
                        },
                        "id": 3211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24467:12:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3212,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3201,
                        "src": "24481:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3209,
                      "name": "LogArchivedDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4279,
                      "src": "24447:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 3213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24447:46:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3214,
                  "nodeType": "EmitStatement",
                  "src": "24442:51:10"
                }
              ]
            },
            "id": 3216,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3204,
                "modifierName": {
                  "id": 3203,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "24375:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "24375:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3206,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3201,
                    "src": "24415:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3207,
                "modifierName": {
                  "id": 3205,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "24397:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "24397:30:10"
              }
            ],
            "name": "_archiveDocument",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3201,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3216,
                  "src": "24329:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3200,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "24329:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24328:21:10"
            },
            "returnParameters": {
              "id": 3208,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24432:0:10"
            },
            "scope": 3561,
            "src": "24303:197:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              4179
            ],
            "body": {
              "id": 3242,
              "nodeType": "Block",
              "src": "24603:124:10",
              "statements": [
                {
                  "body": {
                    "id": 3240,
                    "nodeType": "Block",
                    "src": "24663:58:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 3235,
                                "name": "documentKeys",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3219,
                                "src": "24694:12:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                  "typeString": "bytes32[] calldata"
                                }
                              },
                              "id": 3237,
                              "indexExpression": {
                                "id": 3236,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3224,
                                "src": "24707:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "24694:15:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 3234,
                            "name": "_archiveDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3216,
                            "src": "24677:16:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 3238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24677:33:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3239,
                        "nodeType": "ExpressionStatement",
                        "src": "24677:33:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3227,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3224,
                      "src": "24633:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3228,
                        "name": "documentKeys",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3219,
                        "src": "24637:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      "id": 3229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "24637:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "24633:23:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3241,
                  "initializationExpression": {
                    "assignments": [
                      3224
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3224,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3241,
                        "src": "24618:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3223,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24618:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3226,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3225,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24630:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "24618:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3232,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "24658:3:10",
                      "subExpression": {
                        "id": 3231,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3224,
                        "src": "24660:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3233,
                    "nodeType": "ExpressionStatement",
                    "src": "24658:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "24613:108:10"
                }
              ]
            },
            "functionSelector": "14036eca",
            "id": 3243,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "archiveDocuments",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3221,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "24590:8:10"
            },
            "parameters": {
              "id": 3220,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3219,
                  "mutability": "mutable",
                  "name": "documentKeys",
                  "nodeType": "VariableDeclaration",
                  "scope": 3243,
                  "src": "24532:31:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3217,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "24532:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3218,
                    "nodeType": "ArrayTypeName",
                    "src": "24532:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24531:33:10"
            },
            "returnParameters": {
              "id": 3222,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24603:0:10"
            },
            "scope": 3561,
            "src": "24506:221:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4124
            ],
            "body": {
              "id": 3367,
              "nodeType": "Block",
              "src": "25159:972:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3279,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 3275,
                            "name": "signers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3262,
                            "src": "25177:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          "id": 3276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "25177:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 3277,
                            "name": "numOfSigFields",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3265,
                            "src": "25195:14:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 3278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "25195:21:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "25177:39:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4241445f415252415953",
                        "id": 3280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25218:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8d3abf6957467ba1296751ef18ad93f3af995856323280442481f13ba501b7fd",
                          "typeString": "literal_string \"BAD_ARRAYS\""
                        },
                        "value": "BAD_ARRAYS"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8d3abf6957467ba1296751ef18ad93f3af995856323280442481f13ba501b7fd",
                          "typeString": "literal_string \"BAD_ARRAYS\""
                        }
                      ],
                      "id": 3274,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "25169:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25169:62:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3282,
                  "nodeType": "ExpressionStatement",
                  "src": "25169:62:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3284,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3245,
                        "src": "25259:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3285,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3247,
                        "src": "25272:4:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 3286,
                        "name": "expiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3249,
                        "src": "25278:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3287,
                        "name": "numOfSigners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3251,
                        "src": "25290:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3283,
                      "name": "_newBasicDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2706,
                      "src": "25241:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,bytes32,uint256,uint256)"
                      }
                    },
                    "id": 3288,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25241:62:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3289,
                  "nodeType": "ExpressionStatement",
                  "src": "25241:62:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3291,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3245,
                        "src": "25352:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3292,
                          "name": "providers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3255,
                          "src": "25377:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3294,
                        "indexExpression": {
                          "hexValue": "30",
                          "id": 3293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25387:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25377:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3295,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25403:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3297,
                        "indexExpression": {
                          "hexValue": "30",
                          "id": 3296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25415:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25403:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3298,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25431:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3300,
                        "indexExpression": {
                          "hexValue": "31",
                          "id": 3299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25443:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25431:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3290,
                      "name": "_setDocStorageForDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2784,
                      "src": "25313:25:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 3301,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25313:142:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3302,
                  "nodeType": "ExpressionStatement",
                  "src": "25313:142:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3304,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3245,
                        "src": "25505:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3305,
                          "name": "providers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3255,
                          "src": "25530:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3307,
                        "indexExpression": {
                          "hexValue": "31",
                          "id": 3306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25540:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25530:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3308,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25556:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3310,
                        "indexExpression": {
                          "hexValue": "32",
                          "id": 3309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25568:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25556:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3311,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25584:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3313,
                        "indexExpression": {
                          "hexValue": "33",
                          "id": 3312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25596:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25584:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3303,
                      "name": "_setMetaStorageForDocument",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2838,
                      "src": "25465:26:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 3314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25465:143:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3315,
                  "nodeType": "ExpressionStatement",
                  "src": "25465:143:10"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    },
                    "id": 3320,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 3316,
                        "name": "providers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3255,
                        "src": "25622:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                          "typeString": "bytes32[3] calldata"
                        }
                      },
                      "id": 3318,
                      "indexExpression": {
                        "hexValue": "32",
                        "id": 3317,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25632:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "25622:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "307830",
                      "id": 3319,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25638:3:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0x0"
                    },
                    "src": "25622:19:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3322,
                  "nodeType": "IfStatement",
                  "src": "25618:32:10",
                  "trueBody": {
                    "functionReturnParameters": 3273,
                    "id": 3321,
                    "nodeType": "Return",
                    "src": "25643:7:10"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3324,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3245,
                        "src": "25701:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "hexValue": "307830",
                        "id": 3325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "25726:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0x0"
                      },
                      {
                        "baseExpression": {
                          "id": 3326,
                          "name": "providers",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3255,
                          "src": "25743:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3328,
                        "indexExpression": {
                          "hexValue": "32",
                          "id": 3327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25753:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25743:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3329,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25769:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3331,
                        "indexExpression": {
                          "hexValue": "34",
                          "id": 3330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25781:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4_by_1",
                            "typeString": "int_const 4"
                          },
                          "value": "4"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25769:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3332,
                          "name": "storage_ids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3259,
                          "src": "25797:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                            "typeString": "bytes32[6] calldata"
                          }
                        },
                        "id": 3334,
                        "indexExpression": {
                          "hexValue": "35",
                          "id": 3333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25809:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          "value": "5"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "25797:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3323,
                      "name": "_setDocumentCommentsAsSigner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3199,
                      "src": "25659:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 3335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25659:162:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3336,
                  "nodeType": "ExpressionStatement",
                  "src": "25659:162:10"
                },
                {
                  "body": {
                    "id": 3365,
                    "nodeType": "Block",
                    "src": "25876:249:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3349,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3245,
                              "src": "25912:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3350,
                                "name": "signers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3262,
                                "src": "25925:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3352,
                              "indexExpression": {
                                "id": 3351,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3338,
                                "src": "25933:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "25925:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3348,
                            "name": "_addSignerForDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2734,
                            "src": "25890:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 3353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25890:46:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3354,
                        "nodeType": "ExpressionStatement",
                        "src": "25890:46:10"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3356,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3245,
                              "src": "26026:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3357,
                                "name": "signers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3262,
                                "src": "26055:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3359,
                              "indexExpression": {
                                "id": 3358,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3338,
                                "src": "26063:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26055:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3360,
                                "name": "numOfSigFields",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3265,
                                "src": "26083:14:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3362,
                              "indexExpression": {
                                "id": 3361,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3338,
                                "src": "26098:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26083:17:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3355,
                            "name": "_setNumberOfSignatureFieldsAsInitiatorForSignerForDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2886,
                            "src": "25950:58:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,address,uint256)"
                            }
                          },
                          "id": 3363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25950:164:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3364,
                        "nodeType": "ExpressionStatement",
                        "src": "25950:164:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3341,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3338,
                      "src": "25851:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3342,
                        "name": "signers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3262,
                        "src": "25855:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 3343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "25855:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "25851:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3366,
                  "initializationExpression": {
                    "assignments": [
                      3338
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3338,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3366,
                        "src": "25836:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3337,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25836:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3340,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3339,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "25848:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "25836:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "25871:3:10",
                      "subExpression": {
                        "id": 3345,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3338,
                        "src": "25873:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3347,
                    "nodeType": "ExpressionStatement",
                    "src": "25871:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "25831:294:10"
                }
              ]
            },
            "functionSelector": "c26ce544",
            "id": 3368,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3269,
                "modifierName": {
                  "id": 3268,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "25111:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "25111:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3271,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3245,
                    "src": "25146:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3272,
                "modifierName": {
                  "id": 3270,
                  "name": "documentDoesNotExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1597,
                  "src": "25125:20:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "25125:33:10"
              }
            ],
            "name": "aggregateNewBasicDocumentAndSetStorage",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3267,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "25102:8:10"
            },
            "parameters": {
              "id": 3266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3245,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24828:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3244,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "24828:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3247,
                  "mutability": "mutable",
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24857:12:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3246,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "24857:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3249,
                  "mutability": "mutable",
                  "name": "expiration",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24879:18:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3248,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24879:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3251,
                  "mutability": "mutable",
                  "name": "numOfSigners",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24907:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3250,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "24907:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3255,
                  "mutability": "mutable",
                  "name": "providers",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24937:29:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                    "typeString": "bytes32[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3252,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "24937:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3254,
                    "length": {
                      "hexValue": "33",
                      "id": 3253,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24945:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24937:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                      "typeString": "bytes32[3]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3259,
                  "mutability": "mutable",
                  "name": "storage_ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "24976:31:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$6_calldata_ptr",
                    "typeString": "bytes32[6]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3256,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "24976:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3258,
                    "length": {
                      "hexValue": "36",
                      "id": 3257,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "24984:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_6_by_1",
                        "typeString": "int_const 6"
                      },
                      "value": "6"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "24976:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$6_storage_ptr",
                      "typeString": "bytes32[6]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3262,
                  "mutability": "mutable",
                  "name": "signers",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "25017:26:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3260,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "25017:7:10",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3261,
                    "nodeType": "ArrayTypeName",
                    "src": "25017:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3265,
                  "mutability": "mutable",
                  "name": "numOfSigFields",
                  "nodeType": "VariableDeclaration",
                  "scope": 3368,
                  "src": "25053:33:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3263,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "25053:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3264,
                    "nodeType": "ArrayTypeName",
                    "src": "25053:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24818:274:10"
            },
            "returnParameters": {
              "id": 3273,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25159:0:10"
            },
            "scope": 3561,
            "src": "24771:1360:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4138
            ],
            "body": {
              "id": 3418,
              "nodeType": "Block",
              "src": "26502:260:10",
              "statements": [
                {
                  "body": {
                    "id": 3416,
                    "nodeType": "Block",
                    "src": "26560:196:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3406,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3370,
                              "src": "26637:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3407,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3372,
                              "src": "26666:6:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3408,
                                "name": "indices",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3375,
                                "src": "26690:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3410,
                              "indexExpression": {
                                "id": 3409,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3395,
                                "src": "26698:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26690:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3411,
                                "name": "signatures",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3378,
                                "src": "26718:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "bytes calldata[] calldata"
                                }
                              },
                              "id": 3413,
                              "indexExpression": {
                                "id": 3412,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3395,
                                "src": "26729:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "26718:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3405,
                            "name": "_setSignatureFieldAtIndexForSignerForDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3018,
                            "src": "26574:45:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$",
                              "typeString": "function (bytes32,address,uint256,bytes calldata)"
                            }
                          },
                          "id": 3414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26574:171:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3415,
                        "nodeType": "ExpressionStatement",
                        "src": "26574:171:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3398,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3395,
                      "src": "26532:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3399,
                        "name": "signatures",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3378,
                        "src": "26536:10:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes calldata[] calldata"
                        }
                      },
                      "id": 3400,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "26536:17:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "26532:21:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3417,
                  "initializationExpression": {
                    "assignments": [
                      3395
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3395,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3417,
                        "src": "26517:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3394,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26517:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3397,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3396,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26529:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "26517:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "26555:3:10",
                      "subExpression": {
                        "id": 3402,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3395,
                        "src": "26557:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3404,
                    "nodeType": "ExpressionStatement",
                    "src": "26555:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "26512:244:10"
                }
              ]
            },
            "functionSelector": "b9c38e6b",
            "id": 3419,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3382,
                "modifierName": {
                  "id": 3381,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "26352:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "26352:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3384,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3370,
                    "src": "26392:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3385,
                "modifierName": {
                  "id": 3383,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "26374:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "26374:30:10"
              },
              {
                "arguments": [
                  {
                    "id": 3387,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3370,
                    "src": "26435:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3388,
                "modifierName": {
                  "id": 3386,
                  "name": "documentHasNotExpired",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1639,
                  "src": "26413:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "26413:34:10"
              },
              {
                "arguments": [
                  {
                    "id": 3390,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3370,
                    "src": "26477:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "id": 3391,
                    "name": "signer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3372,
                    "src": "26490:6:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3392,
                "modifierName": {
                  "id": 3389,
                  "name": "onlyAuthorizedSigner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1685,
                  "src": "26456:20:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "26456:41:10"
              }
            ],
            "name": "aggregateSetSigFieldForDocument",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3380,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "26335:8:10"
            },
            "parameters": {
              "id": 3379,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3370,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3419,
                  "src": "26187:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3369,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "26187:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3372,
                  "mutability": "mutable",
                  "name": "signer",
                  "nodeType": "VariableDeclaration",
                  "scope": 3419,
                  "src": "26216:14:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3371,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "26216:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3375,
                  "mutability": "mutable",
                  "name": "indices",
                  "nodeType": "VariableDeclaration",
                  "scope": 3419,
                  "src": "26240:26:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3373,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "26240:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3374,
                    "nodeType": "ArrayTypeName",
                    "src": "26240:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3378,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "scope": 3419,
                  "src": "26276:27:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3376,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "26276:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 3377,
                    "nodeType": "ArrayTypeName",
                    "src": "26276:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26177:132:10"
            },
            "returnParameters": {
              "id": 3393,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26502:0:10"
            },
            "scope": 3561,
            "src": "26137:625:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4154
            ],
            "body": {
              "id": 3496,
              "nodeType": "Block",
              "src": "27165:508:10",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3453,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 3449,
                            "name": "indices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3424,
                            "src": "27183:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 3450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "27183:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 3451,
                            "name": "signatures",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3427,
                            "src": "27201:10:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "bytes calldata[] calldata"
                            }
                          },
                          "id": 3452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "27201:17:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "27183:35:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "53495a455f4d49534d41544348",
                        "id": 3454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "27220:15:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c97495c692b355e48c58442067cc6751cfbb74c936e2925634aac300cf5246f7",
                          "typeString": "literal_string \"SIZE_MISMATCH\""
                        },
                        "value": "SIZE_MISMATCH"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c97495c692b355e48c58442067cc6751cfbb74c936e2925634aac300cf5246f7",
                          "typeString": "literal_string \"SIZE_MISMATCH\""
                        }
                      ],
                      "id": 3448,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "27175:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27175:61:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3456,
                  "nodeType": "ExpressionStatement",
                  "src": "27175:61:10"
                },
                {
                  "body": {
                    "id": 3480,
                    "nodeType": "Block",
                    "src": "27291:202:10",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3469,
                              "name": "documentKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3421,
                              "src": "27368:11:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 3470,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3587
                                ],
                                "referencedDeclaration": 3587,
                                "src": "27397:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 3471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27397:12:10",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3472,
                                "name": "indices",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3424,
                                "src": "27427:7:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 3474,
                              "indexExpression": {
                                "id": 3473,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3458,
                                "src": "27435:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "27427:10:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3475,
                                "name": "signatures",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3427,
                                "src": "27455:10:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "bytes calldata[] calldata"
                                }
                              },
                              "id": 3477,
                              "indexExpression": {
                                "id": 3476,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3458,
                                "src": "27466:1:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "27455:13:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 3468,
                            "name": "_setSignatureFieldAtIndexForSignerForDocument",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3018,
                            "src": "27305:45:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$",
                              "typeString": "function (bytes32,address,uint256,bytes calldata)"
                            }
                          },
                          "id": 3478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27305:177:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3479,
                        "nodeType": "ExpressionStatement",
                        "src": "27305:177:10"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3461,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3458,
                      "src": "27266:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3462,
                        "name": "indices",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3424,
                        "src": "27270:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 3463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "27270:14:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "27266:18:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3481,
                  "initializationExpression": {
                    "assignments": [
                      3458
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3458,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3481,
                        "src": "27251:9:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3457,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27251:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3460,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "27263:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "27251:13:10"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3466,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "27286:3:10",
                      "subExpression": {
                        "id": 3465,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3458,
                        "src": "27288:1:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3467,
                    "nodeType": "ExpressionStatement",
                    "src": "27286:3:10"
                  },
                  "nodeType": "ForStatement",
                  "src": "27246:247:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3483,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3421,
                        "src": "27544:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "hexValue": "307830",
                        "id": 3484,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "27569:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0x0"
                      },
                      {
                        "baseExpression": {
                          "id": 3485,
                          "name": "storageInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3431,
                          "src": "27586:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3487,
                        "indexExpression": {
                          "hexValue": "30",
                          "id": 3486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "27598:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "27586:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3488,
                          "name": "storageInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3431,
                          "src": "27614:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3490,
                        "indexExpression": {
                          "hexValue": "31",
                          "id": 3489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "27626:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "27614:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "baseExpression": {
                          "id": 3491,
                          "name": "storageInfo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3431,
                          "src": "27642:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                            "typeString": "bytes32[3] calldata"
                          }
                        },
                        "id": 3493,
                        "indexExpression": {
                          "hexValue": "32",
                          "id": 3492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "27654:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "27642:14:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3482,
                      "name": "_setDocumentCommentsAsSigner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3199,
                      "src": "27502:28:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 3494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27502:164:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3495,
                  "nodeType": "ExpressionStatement",
                  "src": "27502:164:10"
                }
              ]
            },
            "functionSelector": "7ea95f21",
            "id": 3497,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3435,
                "modifierName": {
                  "id": 3434,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "27009:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27009:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3437,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3421,
                    "src": "27049:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3438,
                "modifierName": {
                  "id": 3436,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "27031:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27031:30:10"
              },
              {
                "arguments": [
                  {
                    "id": 3440,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3421,
                    "src": "27092:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3441,
                "modifierName": {
                  "id": 3439,
                  "name": "documentHasNotExpired",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1639,
                  "src": "27070:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27070:34:10"
              },
              {
                "arguments": [
                  {
                    "id": 3443,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3421,
                    "src": "27134:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3444,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3587
                      ],
                      "referencedDeclaration": 3587,
                      "src": "27147:10:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 3445,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27147:12:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 3446,
                "modifierName": {
                  "id": 3442,
                  "name": "onlyAuthorizedSigner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1685,
                  "src": "27113:20:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27113:47:10"
              }
            ],
            "name": "aggregateSetSigFieldsAndCommentsAsSigner",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3433,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "26992:8:10"
            },
            "parameters": {
              "id": 3432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3421,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3497,
                  "src": "26827:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3420,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "26827:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3424,
                  "mutability": "mutable",
                  "name": "indices",
                  "nodeType": "VariableDeclaration",
                  "scope": 3497,
                  "src": "26856:26:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3422,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "26856:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3423,
                    "nodeType": "ArrayTypeName",
                    "src": "26856:9:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3427,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nodeType": "VariableDeclaration",
                  "scope": 3497,
                  "src": "26892:27:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3425,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "26892:5:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 3426,
                    "nodeType": "ArrayTypeName",
                    "src": "26892:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3431,
                  "mutability": "mutable",
                  "name": "storageInfo",
                  "nodeType": "VariableDeclaration",
                  "scope": 3497,
                  "src": "26929:31:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$3_calldata_ptr",
                    "typeString": "bytes32[3]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3428,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "26929:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 3430,
                    "length": {
                      "hexValue": "33",
                      "id": 3429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "26937:1:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "nodeType": "ArrayTypeName",
                    "src": "26929:10:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$3_storage_ptr",
                      "typeString": "bytes32[3]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26817:149:10"
            },
            "returnParameters": {
              "id": 3447,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27165:0:10"
            },
            "scope": 3561,
            "src": "26768:905:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4189
            ],
            "body": {
              "id": 3559,
              "nodeType": "Block",
              "src": "27973:448:10",
              "statements": [
                {
                  "assignments": [
                    3517
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3517,
                      "mutability": "mutable",
                      "name": "doc",
                      "nodeType": "VariableDeclaration",
                      "scope": 3559,
                      "src": "27983:20:10",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                        "typeString": "struct EthSign.Document"
                      },
                      "typeName": {
                        "id": 3516,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 3515,
                          "name": "Document",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 1481,
                          "src": "27983:8:10"
                        },
                        "referencedDeclaration": 1481,
                        "src": "27983:8:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3521,
                  "initialValue": {
                    "baseExpression": {
                      "id": 3518,
                      "name": "documents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1486,
                      "src": "28006:9:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Document_$1481_storage_$",
                        "typeString": "mapping(bytes32 => struct EthSign.Document storage ref)"
                      }
                    },
                    "id": 3520,
                    "indexExpression": {
                      "id": 3519,
                      "name": "documentKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3499,
                      "src": "28016:11:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "28006:22:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Document_$1481_storage",
                      "typeString": "struct EthSign.Document storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "27983:45:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 3523,
                                "name": "doc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3517,
                                "src": "28046:3:10",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                  "typeString": "struct EthSign.Document storage pointer"
                                }
                              },
                              "id": 3524,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "signersSet",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1448,
                              "src": "28046:14:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AddressSet_$1181_storage",
                                "typeString": "struct EnumerableSetUpgradeable.AddressSet storage ref"
                              }
                            },
                            "id": 3525,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1277,
                            "src": "28046:21:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$1181_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$1181_storage_ptr_$",
                              "typeString": "function (struct EnumerableSetUpgradeable.AddressSet storage pointer) view returns (uint256)"
                            }
                          },
                          "id": 3526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28046:23:10",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 3527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "28073:1:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "28046:28:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e4f545f4e45575f444f43",
                        "id": 3529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "28076:13:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0833b8da435b4774deaf9c0b8af2f02e44f922a8b0a66b9db19d730bab49c85d",
                          "typeString": "literal_string \"NOT_NEW_DOC\""
                        },
                        "value": "NOT_NEW_DOC"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0833b8da435b4774deaf9c0b8af2f02e44f922a8b0a66b9db19d730bab49c85d",
                          "typeString": "literal_string \"NOT_NEW_DOC\""
                        }
                      ],
                      "id": 3522,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "28038:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28038:52:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3531,
                  "nodeType": "ExpressionStatement",
                  "src": "28038:52:10"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 3534,
                              "name": "doc",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3517,
                              "src": "28162:3:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                                "typeString": "struct EthSign.Document storage pointer"
                              }
                            },
                            "id": 3535,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initiator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1478,
                            "src": "28162:13:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 3539,
                                    "name": "documentKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3499,
                                    "src": "28214:11:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3540,
                                    "name": "newInitiator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3501,
                                    "src": "28227:12:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3537,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967295,
                                    "src": "28203:3:10",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 3538,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "28203:10:10",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 3541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28203:37:10",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3536,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967288,
                              "src": "28193:9:10",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3542,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28193:48:10",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 3543,
                            "name": "signature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3503,
                            "src": "28259:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "id": 3533,
                          "name": "verifyECSignatureSigner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3685,
                          "src": "28121:23:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32,bytes calldata) view returns (bool)"
                          }
                        },
                        "id": 3544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28121:161:10",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4241445f534947",
                        "id": 3545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "28296:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2f79dddb865e0424b8eb3c1efff01af8995554e47bceb5a06723511381ab40f9",
                          "typeString": "literal_string \"BAD_SIG\""
                        },
                        "value": "BAD_SIG"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2f79dddb865e0424b8eb3c1efff01af8995554e47bceb5a06723511381ab40f9",
                          "typeString": "literal_string \"BAD_SIG\""
                        }
                      ],
                      "id": 3532,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "28100:7:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28100:215:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3547,
                  "nodeType": "ExpressionStatement",
                  "src": "28100:215:10"
                },
                {
                  "expression": {
                    "id": 3552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 3548,
                        "name": "doc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3517,
                        "src": "28325:3:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Document_$1481_storage_ptr",
                          "typeString": "struct EthSign.Document storage pointer"
                        }
                      },
                      "id": 3550,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "initiator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1478,
                      "src": "28325:13:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3551,
                      "name": "newInitiator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3501,
                      "src": "28341:12:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "28325:28:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3553,
                  "nodeType": "ExpressionStatement",
                  "src": "28325:28:10"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 3555,
                        "name": "newInitiator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3501,
                        "src": "28388:12:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3556,
                        "name": "documentKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3499,
                        "src": "28402:11:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 3554,
                      "name": "LogChangedInitiator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4285,
                      "src": "28368:19:10",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32)"
                      }
                    },
                    "id": 3557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28368:46:10",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3558,
                  "nodeType": "EmitStatement",
                  "src": "28363:51:10"
                }
              ]
            },
            "functionSelector": "44a2953c",
            "id": 3560,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 3507,
                "modifierName": {
                  "id": 3506,
                  "name": "whenNotPaused",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 355,
                  "src": "27873:13:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27873:13:10"
              },
              {
                "arguments": [
                  {
                    "id": 3509,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3499,
                    "src": "27913:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3510,
                "modifierName": {
                  "id": 3508,
                  "name": "documentDoesExist",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1581,
                  "src": "27895:17:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27895:30:10"
              },
              {
                "arguments": [
                  {
                    "id": 3512,
                    "name": "documentKey",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3499,
                    "src": "27956:11:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 3513,
                "modifierName": {
                  "id": 3511,
                  "name": "documentHasNotExpired",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 1639,
                  "src": "27934:21:10"
                },
                "nodeType": "ModifierInvocation",
                "src": "27934:34:10"
              }
            ],
            "name": "changeInitiator",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3505,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "27856:8:10"
            },
            "parameters": {
              "id": 3504,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3499,
                  "mutability": "mutable",
                  "name": "documentKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 3560,
                  "src": "27741:19:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3498,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "27741:7:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3501,
                  "mutability": "mutable",
                  "name": "newInitiator",
                  "nodeType": "VariableDeclaration",
                  "scope": 3560,
                  "src": "27770:20:10",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3500,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27770:7:10",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3503,
                  "mutability": "mutable",
                  "name": "signature",
                  "nodeType": "VariableDeclaration",
                  "scope": 3560,
                  "src": "27800:24:10",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3502,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "27800:5:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27731:99:10"
            },
            "returnParameters": {
              "id": 3514,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27973:0:10"
            },
            "scope": 3561,
            "src": "27707:714:10",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 3562,
        "src": "487:27936:10"
      }
    ],
    "src": "38:28386:10"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.0+commit.c7dfd78e.Emscripten.clang"
  },
  "networks": {
    "1": {
      "events": {},
      "links": {},
      "address": "0x4de376b5e14995a0Ce365AB9dB72132E433159AB",
      "transactionHash": "0x5102ae00477ea0e5b4acc283d266b7f95eccdbba761dae07fc2b664dbc39da46"
    },
    "3": {
      "events": {},
      "links": {},
      "address": "0x067E4811d05A42c7ccc57F0c7FB73E03d7624D82",
      "transactionHash": "0x451c3ac0273382d5a65b093770ba347f65555f027952a5a1fee7e322ca45ed9e"
    },
    "42": {
      "events": {},
      "links": {},
      "address": "0x1D15d21468Cb707b9323aFc3B6c9916Ea1E63746",
      "transactionHash": "0x3575a7bf6c332bfabb91223a5d8f8b7a3fde8c1fbdf334369bf4988bbdd2ec50"
    },
    "56": {
      "events": {},
      "links": {},
      "address": "0x1FD7840d7EaC50FbAC36c25c121e305ea5baEE67",
      "transactionHash": "0x3b6b27b31d6ab98bc43348c251dd17613cfc3acb1b748283294f826072308ea3"
    },
    "65": {
      "events": {},
      "links": {},
      "address": "0x2c3393B42383FaAC92a68a868D6474e9700132fe",
      "transactionHash": "0x57676ef7eee5532996b392d0639ff248226d98fba5975a355fd679c701fa5630"
    },
    "97": {
      "events": {},
      "links": {},
      "address": "0xc84b7F7860500ca0811D828ACAaF0fc0eAFCf9D7",
      "transactionHash": "0xbd1436826a59646da77d11c6beb77c915748793cba0d646b0259348ea28fc5bd"
    },
    "137": {
      "events": {
        "0x8f6b843022496dfaa45bea46560133c63403c8f31b150d0a62c4b6f6a1c7a587": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "signer",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            }
          ],
          "name": "LogAddedNewSignerForDocument",
          "type": "event"
        },
        "0x54107b567da50cdebaf69ee19d6f9ef3fa8804610199a0df31336824dcffdd53": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "party",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            }
          ],
          "name": "LogArchivedDocument",
          "type": "event"
        },
        "0xfbaee527feeadce62b5d1ba1bee6b23038f06a9f2ff96fdd3a23fc41d3453995": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "provider",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "storage_id0",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "storage_id1",
              "type": "bytes32"
            }
          ],
          "name": "LogChangedDocumentStorage",
          "type": "event"
        },
        "0x8223269179a9832eb423b8f67bb2936c256eb6c42f0732ee7634b5c43f0922a1": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "provider",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "storage_id0",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "storage_id1",
              "type": "bytes32"
            }
          ],
          "name": "LogChangedMetadataStorage",
          "type": "event"
        },
        "0x80013616e929337540c361e27289c2e0e38a3fe922d30f8b3183b6ffb214a944": {
          "anonymous": false,
          "inputs": [],
          "name": "LogContractPaused",
          "type": "event"
        },
        "0x34da36e30bfd2777bf2eb90d361c13c4962049c8c7e1a6e95a766a4add787bf9": {
          "anonymous": false,
          "inputs": [],
          "name": "LogContractUnpaused",
          "type": "event"
        },
        "0xc96185abe48ab77f7bd6adc6cd1af8a0a7215d59bea91658503233227dbc9661": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "author",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            }
          ],
          "name": "LogEditedCommentOnDocument",
          "type": "event"
        },
        "0x5d898c7991e6f48e2d9f7a262647ae3b9d1cbf3f8cf6d03ba3b75b2f07a8cdf4": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "author",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            }
          ],
          "name": "LogLeftNewCommentOnDocument",
          "type": "event"
        },
        "0x72edcd2156e970aa43901df5e48391d1d9fe1ffe6693052084440fe437dfdcf8": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "initiator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentName",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "numOfSigners",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "expiration",
              "type": "uint256"
            }
          ],
          "name": "LogNewDocument",
          "type": "event"
        },
        "0xd0cfd4caf220754d14c3071b35e09bd382b93a8e5ac43fb710fe68b128df7d16": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "signer",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "name": "LogSetNumberOfSignatureFields",
          "type": "event"
        },
        "0x63d9e78f3de81345ee9874b2b4e1d0f7c4323be3f5ff7787c03fc1ffcf677fba": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "signer",
              "type": "address"
            }
          ],
          "name": "LogSignedDocument",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "Paused",
          "type": "event"
        },
        "0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "account",
              "type": "address"
            }
          ],
          "name": "Unpaused",
          "type": "event"
        },
        "0x22049745e0f7b5221f94172e9b75593c2f630d6ad0e4506895bd1b0ab80511f8": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "author",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "provider",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "storage_id0",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "storage_id1",
              "type": "bytes32"
            }
          ],
          "name": "LogEditedCommentOnDocument",
          "type": "event"
        },
        "0xeb985c01bab973c54934764ec4c2fc453186ce180e85e01c1b1c093b206f37c8": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "author",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "provider",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "storage_id0",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "storage_id1",
              "type": "bytes32"
            }
          ],
          "name": "LogLeftNewCommentOnDocument",
          "type": "event"
        },
        "0xb74fad578e7e488d93ea7238e9fee4930a5259c62ab371c6ee30c0f72bf1747d": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "signer",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "index",
              "type": "uint256"
            }
          ],
          "name": "LogSignedDocumentSignatureField",
          "type": "event"
        },
        "0x34aa85a67010db599dd0fedb66b7814b3796b9591f10e5f2c3423c41da0d5bd2": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "newInitiator",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "documentKey",
              "type": "bytes32"
            }
          ],
          "name": "LogChangedInitiator",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x7059720A086d056fc1fD88Ed92377e45C6CA1769",
      "transactionHash": "0x0faeeb8177a5730f8201b3ddec391cb7a79b4098be78f83ef21c2f08ad6799ea"
    },
    "250": {
      "events": {},
      "links": {},
      "address": "0x62D31199B14392F912557762718F96262B64B11e",
      "transactionHash": "0x3b7f71ef0956c14604d28f3b7915e76497cdeb07a00a820a1097c48816de14fe"
    },
    "1287": {
      "events": {},
      "links": {},
      "address": "0xA8420d78815223A08824950882A6D5CFCb5203Ec",
      "transactionHash": "0x21e85ab294c9990082198ed151a1aca106fd4ec9d186fee4c63aed498e4782ff"
    },
    "1337": {
      "events": {},
      "links": {},
      "address": "0x517E38369AC58BA1Ac75eD6e37A441B6Ef6daE15",
      "transactionHash": "0x08daccebd414bb8255d13d75321f8f35b057bf1bbdcabd31cdabfdca1eb41273"
    },
    "43114": {
      "events": {},
      "links": {},
      "address": "0x4de376b5e14995a0Ce365AB9dB72132E433159AB",
      "transactionHash": "0xa5d19705b036acbae4aad064fd826175c57b8d388a14cc152629dca0ca89f7ca"
    },
    "44787": {
      "events": {},
      "links": {},
      "address": "0x28Ea0DC8f2e6cEBAFbbdE824B456066f4C47ac0b",
      "transactionHash": "0x460aeb36592a364129701a58e9595fc807528dae71f7492146394d2ec898ef20"
    },
    "421611": {
      "events": {},
      "links": {},
      "address": "0xa0e9494a772edC7Cf2060f8fC391A66F2E8087fF",
      "transactionHash": "0x94d9292744c15eec07581621a4ab432478770018d2d52f4ce760844ce0ef7452"
    }
  },
  "schemaVersion": "3.4.3",
  "updatedAt": "2021-11-15T00:40:06.145Z",
  "devdoc": {
    "details": "EthSign 3.0 Smart Contract with ERC2771 compliance. Please read this before modifying storage: https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable",
    "kind": "dev",
    "methods": {
      "aggregateGetAllCommentsOfAllSigners(bytes32)": {
        "details": "Gets the comment file of each signer in a document.",
        "params": {
          "documentKey": "The documentKey of the document of interest."
        },
        "returns": {
          "hci": "."
        }
      },
      "aggregateGetIsSignedForAllSignatureFields(bytes32)": {
        "details": "Gets the status of each signature field of each signer in a document.",
        "params": {
          "documentKey": "The documentKey of the document of interest."
        },
        "returns": {
          "fieldSignedInfo": "."
        }
      },
      "aggregateNewBasicDocumentAndSetStorage(bytes32,bytes32,uint256,uint256,bytes32[3],bytes32[6],address[],uint256[])": {
        "details": "Creates a new document.",
        "params": {
          "documentKey": "The documentKey of the new document. Will revert if documentKey exists.",
          "expiration": "The intended expiration block of the new document.",
          "name": "The name of the new document.",
          "numOfSigners": "The intended total number of signers. Please note signers are added in a separate step.",
          "providers": "The document, metadata, and comment storage providers in an ordered array.",
          "storage_ids": "The document storage and metadata storage CIDs in an ordered array: `[doc_storage_id0, doc_storage_id1, meta_storage_id0, meta_storage_id1, comment_storage_id0, comment_storage_id1]`. Emits LogNewDocument, LogChangedDocumentStorage, LogChangedMetadataStorage Optionally emits LogLeftNewCommentOnDocument"
        }
      },
      "aggregateSetSigFieldForDocument(bytes32,address,uint256[],bytes[])": {
        "details": "Populates all assigned signature fields in a document with their ECDSA signatures.",
        "params": {
          "documentKey": "The documentKey of the specified document. Will revert if documentKey does not exist.",
          "indices": "An ordered array, includes the index of the signature fields of each signer in the document.",
          "signatures": "The ordered raw ECDSA signatures. Emits LogSignedDocumentSignatureField Optionally emit LogSignedDocument"
        }
      },
      "aggregateSetSigFieldsAndCommentsAsSigner(bytes32,uint256[],bytes[],bytes32[3])": {
        "details": "Sets signature fields and comments in one transaction.",
        "params": {
          "documentKey": "The documentKey of the specified document. Will revert if documentKey does not exist.",
          "indices": "An ordered array, includes the index of the signature fields of each signer in the document.",
          "signatures": "The ordered raw ECDSA signatures.",
          "storageInfo": "An ordered array consisting of: provider, storage_id0, storage_id1."
        }
      },
      "archiveDocuments(bytes32[])": {
        "details": "Archives the specified documents as a signer (does not affect other signers).",
        "params": {
          "documentKeys": "The documentKeys of the specified documents. Will revert if any documentKey does not exist."
        }
      },
      "changeInitiator(bytes32,address,bytes)": {
        "details": "Changes the initiator of a new document with permission from the previous initiator.",
        "params": {
          "documentKey": "The documentKey of the specified document. Will revert if documentKey does not exist.",
          "newInitiator": "The new initiator.",
          "signature": "The raw ECDSA signature from the previous initiator, which will be validated on-chain. Will revert if validation fails."
        }
      },
      "clearDocumentCommentsAsInitiator(bytes32)": {
        "details": "Clears the comment XFDF metadata file for a signers of a document as the initiator.",
        "params": {
          "documentKey": "The documentKey of the specified document. Will revert if documentKey does not exist."
        }
      },
      "getDocumentBasicInfo(bytes32)": {
        "details": "Retrieves basic information of a document.",
        "params": {
          "documentKey": "The documentKey of the document of interest."
        },
        "returns": {
          "birth": "The block number when the document is created.",
          "expiration": "The expiration block of the document.",
          "initiator": "The initiator of this document.",
          "name": "The name of the document.",
          "numOfSigners": "The total number of signers for this document."
        }
      },
      "getDocumentCommentsForSigner(address,bytes32)": {
        "details": "Gets the comment XFDF metadata file of a signer at an index in a document.",
        "params": {
          "documentKey": "The documentKey of the document of interest.",
          "signer": "The address of the signer."
        },
        "returns": {
          "provider": "The storage provider. For example, IP = IPFS, AR = Arweave.",
          "storage_id0": "The first part of the CID.",
          "storage_id1": "The second part of the CID (if applicable)."
        }
      },
      "getDocumentDocStorageInfo(bytes32)": {
        "details": "Retrieves storage information of a document.",
        "params": {
          "documentKey": "The documentKey of the document of interest."
        },
        "returns": {
          "docStorageProvider": "The storage provider. For example, IP = IPFS, AR = Arweave.",
          "docStorage_id0": "The first part of the CID.",
          "docStorage_id1": "The second part of the CID (if applicable)."
        }
      },
      "getDocumentECDSAForSigner(address,bytes32)": {
        "details": "Gets the raw ECDSA signature of a signer in a document.",
        "params": {
          "documentKey": "The documentKey of the document of interest.",
          "signer": "The address of the signer."
        },
        "returns": {
          "signatures": "All raw ECDSA signatures of a signer in the document."
        }
      },
      "getDocumentMetaStorageInfo(bytes32)": {
        "details": "Retrieves metadata annontation storage information of a document.",
        "params": {
          "documentKey": "The documentKey of the document of interest."
        },
        "returns": {
          "metaStorageProvider": "The storage provider. For example, IP = IPFS, AR = Arweave.",
          "metaStorage_id0": "The first part of the CID.",
          "metaStorage_id1": "The second part of the CID (if applicable)."
        }
      },
      "getDocumentRSVForLegacySigner(address,bytes32)": {
        "details": "(Legacy) Gets all split ECDSA signatures of a signer in a document.",
        "params": {
          "documentKey": "The documentKey of the document of interest.",
          "signer": "The address of the signer."
        },
        "returns": {
          "_0": "The r values of the ECDSA signature.",
          "_1": "The s values of the ECDSA signature.",
          "_2": "The v values of the ECDSA signature."
        }
      },
      "getDocumentSignerAtIndex(bytes32,uint256)": {
        "details": "Gets the address of the signer at the provided index in a document. Unordered, used to iterate.",
        "params": {
          "documentKey": "The documentKey of the document of interest.",
          "index": "The index of the signer in the specified document."
        },
        "returns": {
          "signer": "The address of the signer at the provided index."
        }
      },
      "getDocumentStatus(bytes32)": {
        "details": "Gets the status of a document.",
        "params": {
          "documentKey": "The documentKey of the document of interest."
        },
        "returns": {
          "signedSigners": "The number of signers who have signed all signature fields.",
          "totalSigners": "The total number of signers."
        }
      },
      "getNumberOfSignersForDocument(bytes32)": {
        "details": "Gets the total number of signers added to a document.",
        "params": {
          "documentKey": "The documentKey of the document of interest."
        },
        "returns": {
          "count": "The number of signers in total for the specified document."
        }
      },
      "hashDocumentKey(string)": {
        "details": "Hashes the input string using `keccak256(abi.encodePacked())`.",
        "params": {
          "uuid": "The input string, usually UUID v4. But really, this is no restriction."
        }
      },
      "hashSaltedAddressMappingKey(bytes32,address)": {
        "details": "Generates a mapping key by packing document key, document storage information, document metadata storage information, and the signer's address.",
        "params": {
          "documentKey": "A valid documentKey, although there is no check.",
          "signer": "The signer's address."
        }
      },
      "hashSaltedAddressWithIndexMappingKeyAsSigner(bytes32,uint256)": {
        "details": "Generates a mapping key by packing document key, document storage information, document metadata storage information, msg.sender, and the signature field index.",
        "params": {
          "documentKey": "A valid documentKey, although there is no check.",
          "index": "The signature field index."
        }
      },
      "hashSaltedDocumentMappingKey(bytes32)": {
        "details": "Generates a mapping key by packing document key and document storage information.",
        "params": {
          "documentKey": "A valid documentKey, although there is no check."
        }
      },
      "hashSaltedMetaDocumentMappingKey(bytes32)": {
        "details": "Generates a mapping key by packing document key, document storage information, and document metadata storage information.",
        "params": {
          "documentKey": "A valid documentKey, although there is no check."
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "paused()": {
        "details": "Returns true if the contract is paused, and false otherwise."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "setDocumentCommentsAsSigner(bytes32,bytes32,bytes32,bytes32)": {
        "details": "Sets the comment XFDF metadata file for a specified and current document as a signer.",
        "params": {
          "documentKey": "The documentKey of the specified document. Will revert if documentKey does not exist.",
          "provider": "The storage provider. For example, IP = IPFS, AR = Arweave.",
          "storage_id0": "The first part of the CID.",
          "storage_id1": "The second part of the CID (if applicable)."
        }
      },
      "splitECSignature(bytes)": {
        "details": "Splits a given ECDSA signature into r, s, v.",
        "params": {
          "signature": "The raw ECDSA signature."
        },
        "returns": {
          "r": "The r value of the ECDSA signature.",
          "s": "The s value of the ECDSA signature.",
          "v": "The v value of the ECDSA signature."
        }
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      },
      "verifyECSignatureSigner(address,bytes32,bytes)": {
        "details": "Verifies if a given ECDSA signature is authentic.",
        "params": {
          "hash": "The signed data, usually a hash.",
          "signature": "The raw ECDSA signature.",
          "signer": "The signer's address."
        }
      }
    },
    "title": "EthSign 3.0",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}